RENESAS ForgeFPGA Software Simulation

RENESAS ForgeFPGA Software Simulation

Կարևոր տեղեկություն

Սիմուլյացիան տարբեր ժամանակներում դիզայնի վրա տարբեր մուտքային խթաններ կիրառելու տեխնիկա է՝ ստուգելու համար, թե արդյոք RTL կոդը գործում է նախատեսված ձևով: Այն օգտագործվում է դիզայնի ամրությունը ստուգելու համար: Սիմուլյացիան թույլ է տալիս օգտվողին view հարակից ազդանշանների ժամանակային դիագրամը հասկանալու համար, թե ինչպես է դիզայնի նկարագրությունը նախագծում file վարվում է.

Testbenches-ը կոդի կտորներ են, որոնք օգտագործվում են սիմուլյացիայի համար: Պարզ testbench-ը կներկայացնի Unit Under Test-ը (UUT) և կմիացնի մուտքագրումը: Go Configure ծրագրաշարն օգտագործում է Icarus Verilog (iVerilog) և GTKWave՝ դիտարկելու սիմուլյացիոն ալիքի ձևերը փորձարկման նստարանում տրամադրված խթանման միջոցով:

Այս փաստաթուղթը նկարագրում է այն քայլերը, որոնք պետք է ձեռնարկվեն Icarus-ը ձեր համակարգում տեղադրելիս և ինչպես հաջող սիմուլյացիա գործարկել:

Icarus Verilog-ի տեղադրում

a. Տեղադրեք Icarus Verilog-ի (IVerilog) վերջին տարբերակը https://bleyer.org/icarus/
b. Համոզվեք, որ ավելացրե՛ք IVerilog-ը PATH-ին և թույլ տվեք, որ այն տեղադրի GTKWave (տես Նկար 1):
Icarus Verilog-ի տեղադրում

c. Բացեք Go Configure Software-ը և ընտրեք հատվածը՝ SLG47910 (Rev BB)՝ Forge Workshop-ը բացելու համար (տես Նկար 2):
Icarus Verilog-ի տեղադրում

d. Կտտացրեք FPGA Խմբագրիչը վերևում գտնվող գործիքագոտու մեջտեղում կամ օգտագործողը կարող է նաև կրկնակի սեղմել պատուհանի մեջտեղում գտնվող FPGA Core կառուցվածքի վրա:
Icarus Verilog-ի տեղադրում

e. Բացվում է նոր պատուհան, որը կոչվում է Forge Workshop: Վերևի մենյուի գործիքագոտում կտտացրեք Ընտրանքներ → Կարգավորումներ: «Կարգավորումներ» երկխոսության վանդակում անցեք «Գործիքներ»՝ «Օգտվողի կարգավորումներ» ներդիրում: Ապաընտրեք Օգտագործեք «համակարգային միջավայրի տուփը» և՛ Icarus Verilog-ի, և՛ GTKWave-ի համար: Ձեր համակարգում պահված Iverilog-ի և GTKWave-ի ուղին ավելացրեք տրված տարածության մեջ (տես Նկար 4):
Icarus Verilog-ի տեղադրում

Բոլորդ պատրաստ եք փորձարկման նստարան մոդելավորելու համար, և վերը նշված քայլերը երաշխավորում են, որ GTKWave-ն ավտոմատ կերպով գործարկվի Go Configure ծրագրաշարի վրա փորձնական նստարան մոդելավորելիս:

Փորձարկման նստարան

Ցանկացած համակարգի հաջող ներդրման ամենակարևոր քայլը դիզայնի և դրա ֆունկցիոնալության ստուգումն է: Սարքավորումների ներդրումից հետո բարդ համակարգի ստուգումը խելամիտ ընտրություն չէ: Այն անարդյունավետ է փողի, ժամանակի և ռեսուրսների առումով: Հետևաբար, FPGA-ի դեպքում, Verilog-ի սկզբնական կոդը փորձարկելու համար օգտագործվում է թեստային նստարան:

Ենթադրենք, մենք ունենք մուտքագրում, որը 11 բիթից է, և մենք ցանկանում ենք ստուգել սարքը բոլոր հնարավոր մուտքային համակցության արժեքների համար, այսինքն (211): Քանի որ սա շատ մեծ թվով համակցություններ է, անհնար է այն ձեռքով փորձարկել: Նման դեպքերում փորձարկման նստարանները շատ օգտակար են, քանի որ դուք կարող եք ավտոմատ կերպով փորձարկել դիզայնը բոլոր հնարավոր արժեքների համար և, հետևաբար, հաստատել թեստային դիզայնի հուսալիությունը: Verilog Testbenches-ն օգտագործվում է դիզայնի մոդելավորման և վերլուծության համար՝ առանց որևէ ֆիզիկական ապարատային սարքի անհրաժեշտության:

Փորձարկվող դիզայնը, որը հապավում է որպես DUT, ֆունկցիոնալության սինթեզվող մոդուլ է, որը մենք ցանկանում ենք փորձարկել: Այլ կերպ ասած, դա շղթայի դիզայնն է, որը մենք կցանկանայինք փորձարկել: Մենք կարող ենք նկարագրել մեր DUT-ը՝ օգտագործելով Verilog-ի երեք մոդելավորման ոճերից մեկը՝ Gate-level, Dataflow կամ Behavioral:

Փորձարկման նստարանը սինթեզվող չէ, հետևաբար այն օգտագործվում է միայն սիմուլյացիոն նպատակներով: Սա թույլ է տալիս օգտագործողին օգտագործել Verilog-ի կոնստրուկցիաների մի ամբողջ շարք, օրինակ՝ հիմնաբառեր, ինչպիսիք են «for», «$display» և «$monitor» և այլն՝ թեստային սեղաններ գրելու համար: Պարզ փորձնական նստարանը կներկայացնի Unit Under Test (UUT) կամ Device Under Test (DUT) և drive մուտքերը:

Հասկանալով թեստային նստարան

Հասկանալով թեստային նստարան

Ժամանակաչափի սահմանում Testbench-ում

Մոդելավորելիս ծրագրաշարը պետք է իմանա, թե ինչպես է սահմանված ժամանակը: Հետաձգման միավորը սահմանվում է օգտագործելով «ժամանակային սանդղակի հրահանգը», որը սահմանում է ժամանակի միավորը և դրան հաջորդող մոդուլների ճշգրտությունը: «Ժամանակային սանդղակը օգնում է որոշել, թե ինչ է նշանակում #1 ժամանակի առումով: #-ն օգտագործվում է համակարգում ներդրվելիք ուշացումը սահմանելու համար՝ համաձայն ժամանակային սանդղակի սահմանված ժամանակի միավորի: Այսպիսով, #1 նշանակում է 1 ns ուշացում, եթե ժամանակի_միավորը ns-ով է:

Շարահյուսություն:
«ժամկետը / /

ժամանակի_միավորը թիվ 1-ի հետաձգման ժամանակի քանակն է: Time_precision բազան ներկայացնում է, թե քանի տասնորդական կետ պետք է օգտագործել ժամանակի միավորների համեմատ: (Տես 23-րդ տողը Նկար 5-ում)

Մենք կարող ենք օգտագործել ժամանակի սանդղակի կառուցվածքները՝ նույն ձևավորման մեջ տարբեր ժամանակային միավորներ օգտագործելու համար: Օգտագործողը պետք է հիշի, որ հետաձգման բնութագրերը չեն կարող սինթեզվել և չեն կարող փոխակերպվել ապարատային տրամաբանության: Հետաձգման գործառույթներն ամբողջությամբ սիմուլյացիոն նպատակներով են: $ժամանակ և $իրական ժամանակում համակարգի գործառույթները վերադարձնում են ընթացիկ ժամանակը, և հաշվետվության կանխադրված ձևաչափը կարող է փոխվել մեկ այլ համակարգային առաջադրանքով $timeformat:

Exampլե: 

«ժամկետը 10 us/100 վրկ
«ժամկետը 1 վրկ/1 վրկ
#10 վերականգնում = 1; // հետաձգում է ազդանշանը 10 վս-ով
#0.49 $ցուցադրում («T = %0t ժամը #0.49», $իրական ժամանակում) ;

Նշված ուշացումը #0.49 է, որը կես միավոր ժամանակից պակաս է: Այնուամենայնիվ, ժամանակի ճշգրտությունը սահմանված է 1 վրկ, և, հետևաբար, սիմուլյատորը չի կարող փոքր լինել 1 վրկ-ից, ինչը ստիպում է նրան կլորացնել տվյալ հետաձգման հայտարարությունը և տալ 0 վրկ: Այնպես որ, այս հայտարարությունը որևէ ուշացում չի տալիս։

Մոդելավորման մատյան. 

T = 1 ժամը #0.49

Մոդուլի հռչակագիր

Ցանկացած թեստային նստարանում մոդուլի հայտարարությունը տարբերվում է հիմնական Verilog կոդի նման: Փորձարկման նստարանում մոդուլը հայտարարված է առանց դրա հետ մեկտեղ տերմինալային նավահանգիստների: (Տես 25-րդ տողը Նկար 5-ում)

Շարահյուսություն: 

մոդուլ ;

Մոդուլի հռչակագրին հաջորդում է հիմնական նախագծում ավելի վաղ սահմանված մուտքային և ելքային ազդանշանների սահմանումը file.
Մենք օգտագործում ենք ազդանշանների երկու տեսակ՝ մեքենա վարելու և սիմուլյացիայի ընթացքում ազդանշանների մոնիտորինգի համար: reg տվյալների տեսակը կպահի արժեքը այնքան ժամանակ, մինչև դրան նոր արժեք վերագրվի: Այս տվյալների տեսակը կարող է արժեք վերագրվել միայն միշտ կամ սկզբնական բլոկում:
Լարերի տվյալների տեսակը նման է ֆիզիկական կապի: Այն կպահի այն արժեքը, որը պայմանավորված է պորտով, հանձնարարականով կամ reg. Այս տվյալների տեսակը չի կարող օգտագործվել սկզբնական կամ միշտ արգելափակման մեջ: Այս բաժնում կատարվում են նաև ցանկացած պարամետր և ամբողջ թվի հայտարարություն:

Exampլե:
Reg a,b; // HDL կոդի մուտքագրումը սահմանվում է որպես reg testbench-ում
Մետաղական y; // HDL-ում ելքային ազդանշանը սահմանվում է որպես մետաղալար փորձարկման նստարանում

DUT Instantiation

Փորձարկման սեղանի նպատակն է ստուգել, ​​թե արդյոք մեր DUT մոդուլը գործում է: Հետևաբար, մենք պետք է փորձարկենք մեր դիզայնի մոդուլը:

Շարահյուսություն: 

(. (ազդանշան 1), . ազդանշան1>(ազդանշան 2));

Exampլե:

ALU d0 (.a(a), // ազդանշանը ALU-ում պետք է միացված լինի ALU_tb մոդուլի «a»-ին
.b(b), // «b» ազդանշանը ALU-ում պետք է միացված լինի «b»-ին ALU_tb մոդուլում
.c(c)) ;// «c» ազդանշանը ALU-ում պետք է միացված լինի «c»-ին ALU_tb մոդուլում

Մենք դրել ենք DUT մոդուլը ALU թեստային մոդուլին: Օրինակի անունը (d0) օգտագործողի ընտրությունն է: «» կետով ազդանշանները: դրանց դիմաց ALU մոդուլի ներսում ազդանշանների անուններն են, մինչդեռ լարը կամ ռեգը, որին նրանք միանում են փորձարկման նստարանին, փակագծերում նշված ազդանշանի կողքին է (): Խորհուրդ է տրվում կոդավորել յուրաքանչյուր նավահանգիստ կապը առանձին տողում, որպեսզի կազմման սխալի ցանկացած հաղորդագրություն ճիշտ մատնանշի այն գծի համարը, որտեղ տեղի է ունեցել սխալը: Քանի որ այս կապերը կատարվում են անունով, դրանց հայտնվելու հերթականությունը կապ չունի:

DUT-ի օրինակումը կարող է կատարվել նաև այն մոդուլների համար, որտեղ testbench մոդուլն ունի տարբեր ազդանշանային անվանումներ: Ազդանշանների ճիշտ քարտեզագրումն այն է, ինչ կարևոր է ակնթարթավորման ժամանակ:

Example: 

ALU d0 (.a(A), // ազդանշանը ALU-ում պետք է միացված լինի ALU_tb մոդուլի «A»-ին
.clk(clock), // «clk» ազդանշանը ALU-ում պետք է միացված լինի «clock» ALU_tb մոդուլին
.դուրս(ԴՈՒՐՍ)) ; // ALU-ում «դուրս» ազդանշանը պետք է միացված լինի ALU_tb մոդուլի «OUT»-ին

Միշտ և սկզբնական արգելափակում փորձարկման նստարանում

Verilog-ում կա երկու հաջորդական բլոկ՝ սկզբնական և միշտ: Հենց այս բլոկներում մենք կիրառում ենք խթանը:

Սկզբնական բլոկ

Սկզբնական բլոկը, որը կատարվում է միայն մեկ անգամ և ավարտվում է բլոկի վերջին տողի կատարման ժամանակ: Խթանիչը գրված է սկզբնական բլոկի մեջ: (Տես տող 54-72 Նկար 5-ում)

Շարահյուսություն:
..
սկզբնական սկիզբ
$թափելfile();
$dumpvars();
.. (մուտքագրել խթան)
վերջ

սկզբնական բլոկը սկսում է իր կատարումը սիմուլյացիայի սկզբում t = 0 ժամանակում: Սկսած սկզբի և վերջի միջև ընկած առաջին տողից, յուրաքանչյուր տող աշխատում է վերևից ներքև մինչև ուշացման հասնելը: Երբ ուշացումը հասնում է, այս բլոկի կատարումը սպասում է մինչև հետաձգման ժամանակը (10-անգամյա միավոր) ավարտվի, և այնուհետև նորից սկսվում է կատարումը:
Օգտագործողը կարող է սահմանել խթաններ՝ օգտագործելով օղակներ (for, while, if-else), ինչպես նաև այս սկզբնական բլոկի ներսում՝ բոլոր համակցությունները ձեռքով մուտքագրելու փոխարեն:
Սկզբնական բլոկ

 

Example:
Նախնական սկիզբ
A = 0; b = 0; // սկսել կատարումը
#10 ա = 0; b = 1; // կատարումը t = 10 միավոր ժամանակում է
#10 ա = 1; b = 0; // կատարումը t = 20 միավոր ժամանակում է
վերջ

Թափել Files

Մեկ այլ բան, որը պետք է նկատի ունենալ, դոլարի հայտարարագիրն էթափելfiles և $dumpvars սկզբնական բլոկի ներսում (տե՛ս 55-56 տողը Նկար 5-ում): $թափելfile օգտագործվում է ցանցերի և ռեգիստրների արժեքների փոփոխությունները a file որը կոչվում է որպես դրա փաստարկ:

Նախampլե:

$թափելfile(«alu_tb.vcd»);

կթափի փոփոխությունները ա file alu_tb.vcd անունով: Փոփոխությունները գրանցվում են ա file կոչվում է VCD file դա նշանակում է արժեքի փոփոխության աղբ: VCD (արժեքի փոփոխության աղբարկղ) պահպանում է արժեքի փոփոխությունների մասին ողջ տեղեկատվությունը: Մենք չենք կարող ունենալ մեկից ավելի $աղբավայրfile հայտարարություններ Verilog մոդելավորման մեջ:

$dumpvars օգտագործվում է նշելու համար, թե որ փոփոխականները պետք է թափվեն (in file նշված է $dump-ի կողմիցfile) Այն օգտագործելու ամենապարզ ձևն առանց որևէ փաստարկի է: $dumpvars-ի ընդհանուր շարահյուսությունն է

$dumpvars ( <, >);

Մենք հիմնականում կարող ենք նշել, թե որ մոդուլները և որ փոփոխականները մոդուլներում կթափվեն: Սա օգտագործելու ամենապարզ ձևը մակարդակը 0-ի սահմանելն է, իսկ մոդուլի անունը՝ որպես վերին մոդուլ (սովորաբար վերին testbench մոդուլ):

$dumpvars(0, alu_tb);

Երբ մակարդակը դրված է 0-ի վրա, և նշվում է միայն մոդուլի անունը, այն կցում է այդ մոդուլի ԲՈԼՈՐ փոփոխականները և բոլոր փոփոխականները ԲՈԼՈՐ ցածր մակարդակի մոդուլներում, որոնք ստեղծվել են այս վերին մոդուլի կողմից: Եթե ​​որևէ մոդուլ չի ստեղծվել այս վերին մոդուլի կողմից, ապա դրա փոփոխականը չի ծածկվի: Մի բան էլ՝ դոլարի հայտարարագիրըթափելfile պետք է առաջանա $dumpvars-ից կամ ցանկացած այլ համակարգի առաջադրանքից, որը սահմանում է dump-ը: Այս աղբավայրը files-ը պետք է հայտարարվի խթանիչ մուտքագրումից առաջ, այս աղբավայրում ոչ մի արժեք չի պահպանվի files.

Միշտ արգելափակել

Հակառակ սկզբնական հայտարարությունների, միշտ բլոկը բազմիցս գործարկվում է, թեև կատարումը սկսվում է t = 0 ժամանակում: Նախ.ampԲացի այդ, ժամացույցի ազդանշանը էական նշանակություն ունի հաջորդական սխեմաների աշխատանքի համար, ինչպիսիք են Flip-flops-ը: Այն պետք է անընդհատ մատակարարվի։ Հետևաբար, մենք կարող ենք ժամացույցի գործարկման կոդը գրել փորձարկման նստարանին այսպես (տե՛ս 52-րդ տողը Նկար 5-ում).

միշտ
#10 clk = ~clk;
էնդմոդուլ

Վերոնշյալ հայտարարությունը կատարվում է 10 ns-ից հետո՝ t = 0-ից սկսած: clk-ի արժեքը կշրջվի նախորդ արժեքից 10 ns-ից հետո: Այսպիսով, առաջացնելով ժամացույցի ազդանշան 20 ns իմպուլսի լայնությամբ: Հետևաբար, այս հայտարարությունը առաջացնում է 50 ՄՀց հաճախականության ազդանշան: Կարևոր է նշել, որ ազդանշանի սկզբնավորումը կատարվում է միշտ արգելափակումից առաջ: Եթե ​​մենք չկատարենք սկզբնավորման մասը, ապա clk ազդանշանը կլինի x t – 0-ից, իսկ 10 ns-ից հետո այն կշրջվի մեկ այլ x-ի:

Ինքնահաստատման թեստային նստարան

Ինքնստուգվող թեստային նստարանը ներառում է հայտարարություն՝ ընթացիկ վիճակը ստուգելու համար:

  • $ցուցադրել համակարգի առաջադրանքները հիմնականում օգտագործվում են վրիպազերծման հաղորդագրությունները ցուցադրելու համար՝ սիմուլյացիայի հոսքը հետևելու համար

սկզբնական սկիզբ
A = 0; b = 0; c = 0; # 10; // կիրառել մուտքագրում, սպասել
եթե ( y ! == 1) սկսվի
$display («000 ձախողվեց»); //ստուգել
c = 1; #10; //կիրառել մուտքագրումը, սպասել
վերջ
այլապես, եթե (y! == 0) սկսվի
$display («001 ձախողվեց») // ստուգեք
b = 1; c = 0; #10; վերջ
այլապես, եթե (y!==0)
$display (« 010 ձախողվեց»); //ստուգել
վերջ
էնդմոդուլ

$ցուցադրել օգտագործվում է փոփոխականների, տողերի կամ արտահայտությունների արժեքները ցուցադրելու համար։ Վերոնշյալից նախկինampԵթե, երբ if-else հանգույցներից որևէ մեկը բավարարված է, ապա սիմուլյատորի մատյանը կցուցադրի իր համապատասխան $-ը:ցուցադրել հայտարարություն. Տողերի վերջում լռելյայն նոր տող կա:

$ցուցադրել («ժամանակ = %t, A = %b, B = %b, C = % b», $ժամանակ, A, B, C);

Չակերտներում նշված նիշերը կտպագրվեն այնպես, ինչպես կան: Տառը %-ի հետ միասին նշանակում է տողի ձևաչափը: Մենք օգտագործում ենք %b՝ երկուական տվյալները ներկայացնելու համար: Մենք կարող ենք օգտագործել %d, %h, %o՝ համապատասխանաբար տասնորդական, տասնորդական և ութնյակը ներկայացնելու համար: %g-ն օգտագործվում է իրական թվեր արտահայտելու համար։ Նշված հերթականությամբ դրանք կփոխարինվեն չակերտից դուրս գտնվող արժեքներով: Նախample, վերը նշված հայտարարությունը կցուցադրվի սիմուլյացիայի մատյանում որպես ժամանակ = 20, A = 0, B =1, C = 0

Աղյուսակ 1. Verilog աղյուսակի ձևաչափեր

Փաստարկ Նկարագրություն
%h, %H Ցուցադրել տասնվեցական ձևաչափով
%d, %D Ցուցադրել տասնորդական ձևով
%b, %B Ցուցադրել երկուական ձևաչափով
%m, %M Ցուցադրել հիերարխիկ անունը
%s, %S Ցուցադրել որպես տող
%t, %T Ցուցադրել ժամանակի ձևաչափով
%f, %F Ցուցադրել «իրական» տասնորդական ձևաչափով
%e, %E Ցուցադրել «իրական» էքսպոնենցիալ ձևաչափով

$ցուցադրել հիմնականում տպում է տվյալներ կամ փոփոխականներ, ինչպես դա եղել է այդ պահին, ինչպես printf-ը C-ում: Պետք է նշենք $ցուցադրել ցանկացած տեքստի համար մենք պետք է view մոդելավորման մատյանում:

  • $ժամանակ

$ժամանակ համակարգային առաջադրանք է, որը կվերադարձնի սիմուլյացիայի ընթացիկ ժամանակը:

  • $մոնիտոր

$մոնիտոր կվերահսկի այն տվյալները կամ փոփոխականը, որոնց համար այն գրված է, և երբ փոփոխականը փոխվի, այն կտպվի
փոխված արժեքը. Այն հասնում է նույնպիսի էֆեկտի՝ $display կանչելու ամեն անգամ, երբ իր արգումենտներից որևէ մեկը ստանում է
թարմացվել է։ $մոնիտոր նման է առաջադրանքի, որը ստեղծվում է առաջադրվելու հիմնական թելի ֆոնին, որը վերահսկում է և
ցուցադրում է իր արգումենտի փոփոխականների արժեքային փոփոխությունները: $մոնիտոր ունի նույն շարահյուսությունը, ինչ $ցուցադրել.

$մոնիտոր(« ժամանակ = %t, A = %b, B = %b, C = % b», $ժամանակ, A, B, C);
Ինքնահաստատման թեստային նստարան

Նկար 7-ից դուք կարող եք դիտել, որ կոդերի նոր տողեր են ավելացվել փորձարկման նստարանը ինքնագնահատելու համար: $-ի տեղաբաշխումըցուցադրել և $մոնիտոր Փորձարկման սեղանի տարբեր բաժինների հայտարարությունները տարբեր արդյունքներ կտան (տես Նկար 8): $ժամանակ Այս հայտարարություններում նշվածը տպում է այն ժամանակը, որի համար արժեքը տպագրվում է: Միևնույն ժամանակ միավորը ասենք 170000, մենք կարող ենք տեսնել, թե ինչպես է A-ի և B-ի արժեքի տարբերությունը $-ի պատճառով:ցուցադրել և $մոնիտոր հայտարարություններ.
Ինքնահաստատման թեստային նստարան

GTKWave Software

GTKWave-ը լիովին ներկայացված GTK+ ալիք է viewer Unix, Win32 և Mac OSX-ի համար, որոնք կարդում են LXT, LXT2, VZT, FST և GHW files, ինչպես նաև ստանդարտ VCD/EVCD files եւ թույլ է տալիս իրենց viewing. Դրա պաշտոնական webկայքը գտնվում է http://gtkwave.sourceforge.net/ . Առաջարկվում է GTKWave-ը viewer Icarus Verilog մոդելավորման գործիքի կողմից:

Երբ օգտատերը հաջողությամբ ստեղծի թեստային սեղան՝ դիզայնի ֆունկցիոնալությունը ստուգելու համար, օգտվողն այժմ կարող է օգտագործել GTKWave ծրագրաշարը view ալիքի ձևերը.

GTKWave ծրագրաշարը գործարկելու համար view ալիքի ձևերը, օգտագործողը պետք է սեղմի Գործիքագոտու վերևի մասում գտնվող Simulate Testbench կոճակը կամ Գործիքներ → Simulation→ Simulate Testbench: Եթե ​​շարահյուսական սխալներ չկան, ապա կախված դիզայնից, GTKWave-ը պետք է գործարկվի ավտոմատ կերպով, կամ թեստային սեղանի գրգռիչների արդյունքները կցուցադրվեն պատուհանի Logger բաժնում:

GTKWave ծրագրաշարը բացում է .vcd ձևաչափի աղբանոցըfile ավտոմատ կերպով։ GTKWave պատուհանը չի ցուցադրում ալիքի ձևը, երբ այն բացվում է: Սա օգտվողին հնարավորություն է տալիս ընտրել, թե որ ազդանշանն է ուզում view և դիտարկել. Ազդանշանն ընտրելու համար օգտատերը պետք է ցուցադրի, օգտագործողը պետք է սեղմի իր մոդուլի/օրինակի անվան վրա SST ներդիրի տակ գտնվող պատուհանի ձախ կողմում: Սեղմելով յուրաքանչյուր օրինակի + կոճակը, դուք կարող եք տեսնել այն ազդանշանները, որոնք կապված են այդ օրինակի հետ ներքևի բաժնում: Այնուհետև կարող եք քաշել և թողնել ցանկալի ազդանշանը կամ կրկնակի սեղմել դրանք՝ ազդանշանների պատուհանում ցուցադրվելու համար: Կարող եք նաև ընտրել բոլորը (CTRL + A) և տեղադրել դրանք ազդանշանների պատուհանում (տես Նկար 9):
GTKWave Software

Ազդանշաններն այժմ ավելացվել են ազդանշանային պատուհանին, բայց այն դեռ պետք է մոդելավորվի: Ցանկալի ազդանշանները ազդանշանային պատուհանին ավելացնելուց հետո սեղմեքԽորհրդանիշ ազդանշանները հարմարեցնել պատուհանի ընթացիկ լայնությանը և այնուհետև վերաբեռնել ազդանշանները վերաբեռնումիցԽորհրդանիշ Գործիքադարակի վրա առկա խորհրդանիշը: Այժմ դուք կարող եք տեսնել ազդանշանները իրենց համապատասխան արժեքներով:

Ազդանշանի արժեքներ

Լռելյայնորեն, ազդանշանների արժեքները տասնվեցական ձևաչափով են, և բոլոր ալիքները գունավոր են կանաչ (եթե ճիշտ են աշխատում):

Օգտատերը կարող է փոխել այս ազդանշանի հատկությունները՝ աջ սեղմելով ազդանշանի վրա և ընտրելով Տվյալների ձևաչափը կամ Գույնի ձևաչափը: Օգտագործողը կարող է նաև դատարկ ազդանշան տեղադրել՝ ազդանշանների խմբի միջև հատվածներ կազմելու համար: Երբ դուք ունեք ցանկալի օպտիկական արդյունք, կարող եք պահպանել ձեր կոնֆիգուրացիան՝ գնալով File → Գրել Պահպանել File.

GTKWave Գործիքադարակ

Գործիքադարակը (տես Նկար 10) թույլ է տալիս օգտվողին կատարել ազդանշանի հիմնական գործառույթները: Եկեք քննարկենք գործիքագոտու յուրաքանչյուր տարբերակ ձախից աջ:
GTKWave Գործիքադարակ

  1. Մենյու ԸնտրանքներԱյս տարբերակի ներքո մենք կարող ենք view Ծրագրաշարի բոլոր տարբեր հատկանիշները, որոնք կարող են օգտագործվել ծրագրաշարի հետ խաղալու համար: Այս ընտրացանկի մանրամասները ընդգրկված են այս օգտագործողի ուղեցույցի 8-րդ բաժնում:
  2. Կտրել հետքերըՕգտագործվում է ազդանշանի պատուհանից ընտրված ազդանշանը ջնջելու/կտրելու համար
  3. Պատճենել հետքերըՕգտագործվում է ընտրված ազդանշանը ազդանշանի պատուհանից պատճենելու համար
  4. Կպցնել հետքերՊատճենված/կտրված հետքը կարող է տեղադրվել ազդանշանի պատուհանի մեկ այլ վայրում
  5. Zoom FitՕգտագործվում է ազդանշանները հարմարեցնելու համար՝ ըստ օգտագործողի ընտրած պատուհանի չափի
  6. ՄեծացնելՕգտագործվում է ազդանշանի պատուհանը խոշորացնելու համար
  7. ՄեծացնելՕգտագործվում է ազդանշանի պատուհանը մեծացնելու համար
  8. Մեծացնել հետարկելԱյն օգտագործվում է ազդանշանային պատուհանի խոշորացումը/փոքրացումը չեղարկելու համար
  9. Մեծացնել՝ սկսելու համարՍա կմեծացնի ազդանշանի պատուհանը՝ ցուցադրելով ազդանշանների մեկնարկի ժամանակը:
  10. Մեծացնել մինչև վերջՍա մեծացնելու է ազդանշանի պատուհանը, որը ցույց է տալիս ազդանշանների ավարտի ժամանակը
  11. Գտեք նախորդ եզրըՍա ցուցիչը տեղափոխում է ձախ կողմը՝ ցույց տալով նախորդ եզրը
  12. Գտեք հաջորդ եզրըՍա ցուցիչը տեղափոխում է աջ՝ ցույց տալով հաջորդ եզրը
  13. Ոլորեք ստորին/վերին կապը: օգտագործելով սա, մենք կարող ենք սահմանել ժամանակի շրջանակը, որում օգտվողը ցանկանում է ցուցադրել: Նախample, մենք կարող ենք սահմանել ժամանակի շրջանակը 0 վրկ-ից մինչև 500 ns, այն կցուցադրի ազդանշանները միայն այդ տևողությամբ:
  14. Վերբեռնել՝ Վերաբեռնումը սեղմվում է, երբ ցուցադրվող ազդանշանի փոփոխություն է տեղի ունենում: Այն կվերաբեռնվի և կցուցադրի ազդանշանը ըստ նոր պարամետրերի: Նախample, ազդանշանի ժամանակային շրջանակը փոխելուց հետո մենք պետք է վերաբեռնենք ազդանշանը, որպեսզի ազդանշանը ցուցադրվի նոր սահմանված ժամկետում:

Մենյու Ընտրանքներ

GTKWave ծրագրաշարի վերին ձախ անկյունից օգտվողը կարող է մուտք գործել ցանկի ընտրանքներ՝ սեղմելով երեք ուղղահայաց գծերի վրա (տես Նկար 11): Օգտագործողը կարող է գտնել հետևյալ ընտրանքները Մենյու ընտրանքների տակ.
Մենյու Ընտրանքներ

File

Այն File ենթամենյուն պարունակում է մուտքի հետ կապված տարբեր տարրեր files, ներմուծող-արտահանող VCD files, տպագրություն և կարդալ/գրել files և դուրս գալը:

Խմբագրել

Խմբագրել ենթամենյուն օգտագործվում է տարբեր օգտակար գործառույթներ կատարելու համար, ինչպիսիք են ալիքի ենթապատուհանում արժեքների տվյալների ներկայացումը փոխելու համար: Օգտագործելով «Խմբագրել» ենթամենյուի ընտրանքները, օգտվողը կարող է փոխել ազդանշանների տվյալների ձևաչափը, վերադասավորել դրանք, տեղափոխել դրանք, կտրել, ընդգծել այն, խմբավորել ազդանշանները, մեկնաբանել ազդանշանները, փոխել ազդանշանների գույնը և այլն:

Որոնել

Որոնման ենթամենյուն օգտագործվում է ցանցերի անունների և արժեքների որոնումներ կատարելու համար: Այն օգնում է գործառույթներ կատարել VCD-ի ազդանշանների և օրինակների տարբեր հիերարխիայի մակարդակներում file.

Ժամանակը

Ժամանակի ենթացանկը պարունակում է նավարկությունների և Կարգավիճակի վահանակի կոճակների կողմից կատարվող գործառույթների գերկոմպլեկտ:
Այն թույլ է տալիս պարզ, ժամանակի հետ կապված գործառույթներ, ինչպիսիք են խոշորացումը, որոշակի ժամանակային կետ տեղափոխելը, ազդանշանը որոշակի ուղղությամբ տեղափոխելը և այլն:

Մարկեր

Մարկերի ենթամենյուն օգտագործվում է մարկերի վրա տարբեր մանիպուլյացիաներ կատարելու, ինչպես նաև էկրանից դուրս ոլորումը կառավարելու համար:
Այն հնարավորություն է տալիս ազդանշանային պատուհանի վրա բազմաթիվ մարկերներ ավելացնելու գործառույթը: Թույլատրվում է առավելագույնը 26 անուն նշիչներ, և բոլորի համար ժամանակները պետք է տարբեր լինեն:

a. Ազդանշանի պատուհանում Մարկերներ ավելացնելու համար
Ձախ սեղմեք պահանջվող կետի վրա, որտեղ ցանկանում եք տեղադրել Մարկերը և սեղմեք ALT + N: Սա կտեղադրի անվանված նշիչը (A,B,C և այլն) պահանջվող կետում: Օգտագործողը կարող է շարունակել դա անել 26 տարբեր ժամանակային վայրերում:
Բոլոր վայրերի նշիչների ժամանակի արժեքը համեմատելու համար Ընտրացանկ → Մարկեր → Ցուցադրել Փոխել նշիչի տվյալները:
Սա կբացի պատուհան յուրաքանչյուր Մարկերի ժամանակի արժեքով: Օգտագործողը կարող է ձեռքով նշել ժամանակի արժեքը տեղադրված յուրաքանչյուր նշիչի վրա և հանել դրանք՝ հաշվարկելու 2 մարկերների միջև ժամանակի տարբերությունը:
b. Նշիչը ազդանշանի պատուհանից հեռացնելու համար

Օգտագործողը կարող է գնալ Ընտրացանկ → Մարկեր → Հավաքել Անվանված Մարկեր: Սա կհեռացնի ազդանշանի պատուհանում տեղադրված ազգանունով նշիչը: Օգտագործողը կարող է հեռացնել բոլոր անվանված Մարկերները՝ անցնելով Ընտրացանկ → Մարկերներ → Հավաքել բոլոր անվանված նշիչները (Նկար 12):
Մենյու Ընտրանքներ

Նկար 13-ում մենք կարող ենք տեսնել, թե ինչպես են փոխվել ազդանշանների գույները: Դուք կարող եք դիտել ազդանշանի պատուհանին ավելացված դատարկ ազդանշան, ինչպես նաև մեկնաբանությամբ՝ Blank Signal:
Նկատի ունեցեք նաև 6 Անվանված Մարկերների առկայությունը (A – E) և այս Մարկերների միջև ժամանակի արժեքի հաշվարկը ps-ով:
Մենյու Ընտրանքներ

View

Այն View ենթամենյուն օգտագործվում է տարբեր ատրիբուտներ կառավարելու համար, որոնք վերաբերում են կարգավիճակի տարրերի գրաֆիկական մատուցմանը, ինչպես նաև ազդանշանի ենթապատուհանում գտնվող արժեքներին: Այս ընտրացանկից կարող եք ազդանշանի պատուհանը վերածել սև և սպիտակի կամ նաև գունավոր: Այն View ենթամենյուը նաև հնարավորություն է տալիս փոխել ժամանակի չափը՝ վայրկյաններից (վրկ) մինչև ֆիկոսվայրկյաններ (fs): Օգտագործողը կարող է գտնել այս տարբերակը View → Scale to Time Dimension → fs.

Օգնություն

Օգնության ենթամենյուն պարունակում է օն-լայն օգնությունը միացնելու, ինչպես նաև ծրագրի տարբերակի մասին տեղեկատվությունը ցուցադրելու տարբերակներ:

Եզրակացություն

Այս փաստաթուղթը ստեղծվել է, որպեսզի օգտագործողին օգնի հաջողությամբ մոդելավորել իր դիզայնը և ստուգել ֆունկցիոնալությունը՝ շտկելով անհրաժեշտ թեստային սեղանը և օգտագործելով Icarus Verilog-ը GTKWave-ի հետ միասին՝ ալիքի ձևերը ցուցադրելու և արդյունքները դիտելու համար:

Վերանայման պատմություն

Վերանայման Ամսաթիվ Նկարագրություն
1.00 20 մայիսի, 2024 թ Նախնական թողարկում.

R19US0011EU0100 Rev.1.0
20 մայիսի, 2024 թ
© 2024 Renesas Electronics
Լոգոն

Փաստաթղթեր / ռեսուրսներ

RENESAS ForgeFPGA Software Simulation [pdf] Օգտագործողի ուղեցույց
REN_r19us0011eu0100, ForgeFPGA Software Simulation, ForgeFPGA Software, ForgeFPGA, ForgeFPGA Simulation, Software Simulation, Simulation, Software

Հղումներ

Թողնել մեկնաբանություն

Ձեր էլփոստի հասցեն չի հրապարակվի: Պարտադիր դաշտերը նշված են *