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):
c. Բացեք Go Configure Software-ը և ընտրեք հատվածը՝ SLG47910 (Rev BB)՝ Forge Workshop-ը բացելու համար (տես Նկար 2):
d. Կտտացրեք FPGA Խմբագրիչը վերևում գտնվող գործիքագոտու մեջտեղում կամ օգտագործողը կարող է նաև կրկնակի սեղմել պատուհանի մեջտեղում գտնվող FPGA Core կառուցվածքի վրա:
e. Բացվում է նոր պատուհան, որը կոչվում է Forge Workshop: Վերևի մենյուի գործիքագոտում կտտացրեք Ընտրանքներ → Կարգավորումներ: «Կարգավորումներ» երկխոսության վանդակում անցեք «Գործիքներ»՝ «Օգտվողի կարգավորումներ» ներդիրում: Ապաընտրեք Օգտագործեք «համակարգային միջավայրի տուփը» և՛ Icarus Verilog-ի, և՛ GTKWave-ի համար: Ձեր համակարգում պահված Iverilog-ի և GTKWave-ի ուղին ավելացրեք տրված տարածության մեջ (տես Նկար 4):
Բոլորդ պատրաստ եք փորձարկման նստարան մոդելավորելու համար, և վերը նշված քայլերը երաշխավորում են, որ 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):
Ազդանշաններն այժմ ավելացվել են ազդանշանային պատուհանին, բայց այն դեռ պետք է մոդելավորվի: Ցանկալի ազդանշանները ազդանշանային պատուհանին ավելացնելուց հետո սեղմեք ազդանշանները հարմարեցնել պատուհանի ընթացիկ լայնությանը և այնուհետև վերաբեռնել ազդանշանները վերաբեռնումից
Գործիքադարակի վրա առկա խորհրդանիշը: Այժմ դուք կարող եք տեսնել ազդանշանները իրենց համապատասխան արժեքներով:
Ազդանշանի արժեքներ
Լռելյայնորեն, ազդանշանների արժեքները տասնվեցական ձևաչափով են, և բոլոր ալիքները գունավոր են կանաչ (եթե ճիշտ են աշխատում):
Օգտատերը կարող է փոխել այս ազդանշանի հատկությունները՝ աջ սեղմելով ազդանշանի վրա և ընտրելով Տվյալների ձևաչափը կամ Գույնի ձևաչափը: Օգտագործողը կարող է նաև դատարկ ազդանշան տեղադրել՝ ազդանշանների խմբի միջև հատվածներ կազմելու համար: Երբ դուք ունեք ցանկալի օպտիկական արդյունք, կարող եք պահպանել ձեր կոնֆիգուրացիան՝ գնալով File → Գրել Պահպանել File.
GTKWave Գործիքադարակ
Գործիքադարակը (տես Նկար 10) թույլ է տալիս օգտվողին կատարել ազդանշանի հիմնական գործառույթները: Եկեք քննարկենք գործիքագոտու յուրաքանչյուր տարբերակ ձախից աջ:
- Մենյու ԸնտրանքներԱյս տարբերակի ներքո մենք կարող ենք view Ծրագրաշարի բոլոր տարբեր հատկանիշները, որոնք կարող են օգտագործվել ծրագրաշարի հետ խաղալու համար: Այս ընտրացանկի մանրամասները ընդգրկված են այս օգտագործողի ուղեցույցի 8-րդ բաժնում:
- Կտրել հետքերըՕգտագործվում է ազդանշանի պատուհանից ընտրված ազդանշանը ջնջելու/կտրելու համար
- Պատճենել հետքերըՕգտագործվում է ընտրված ազդանշանը ազդանշանի պատուհանից պատճենելու համար
- Կպցնել հետքերՊատճենված/կտրված հետքը կարող է տեղադրվել ազդանշանի պատուհանի մեկ այլ վայրում
- Zoom FitՕգտագործվում է ազդանշանները հարմարեցնելու համար՝ ըստ օգտագործողի ընտրած պատուհանի չափի
- ՄեծացնելՕգտագործվում է ազդանշանի պատուհանը խոշորացնելու համար
- ՄեծացնելՕգտագործվում է ազդանշանի պատուհանը մեծացնելու համար
- Մեծացնել հետարկելԱյն օգտագործվում է ազդանշանային պատուհանի խոշորացումը/փոքրացումը չեղարկելու համար
- Մեծացնել՝ սկսելու համարՍա կմեծացնի ազդանշանի պատուհանը՝ ցուցադրելով ազդանշանների մեկնարկի ժամանակը:
- Մեծացնել մինչև վերջՍա մեծացնելու է ազդանշանի պատուհանը, որը ցույց է տալիս ազդանշանների ավարտի ժամանակը
- Գտեք նախորդ եզրըՍա ցուցիչը տեղափոխում է ձախ կողմը՝ ցույց տալով նախորդ եզրը
- Գտեք հաջորդ եզրըՍա ցուցիչը տեղափոխում է աջ՝ ցույց տալով հաջորդ եզրը
- Ոլորեք ստորին/վերին կապը: օգտագործելով սա, մենք կարող ենք սահմանել ժամանակի շրջանակը, որում օգտվողը ցանկանում է ցուցադրել: Նախample, մենք կարող ենք սահմանել ժամանակի շրջանակը 0 վրկ-ից մինչև 500 ns, այն կցուցադրի ազդանշանները միայն այդ տևողությամբ:
- Վերբեռնել՝ Վերաբեռնումը սեղմվում է, երբ ցուցադրվող ազդանշանի փոփոխություն է տեղի ունենում: Այն կվերաբեռնվի և կցուցադրի ազդանշանը ըստ նոր պարամետրերի: Նախ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 |