RENESAS ForgeFPGA Software Simulation
Mahalagang Impormasyon
Ang simulation ay isang pamamaraan ng paglalapat ng iba't ibang input stimulus sa disenyo sa iba't ibang oras upang suriin kung ang RTL code ay kumikilos sa nilalayon na paraan. Ginagamit ito upang i-verify ang tibay ng disenyo. Ang simulation ay nagpapahintulot sa gumagamit na view ang timing diagram ng mga kaugnay na signal upang maunawaan kung paano ang paglalarawan ng disenyo sa disenyo file kumikilos.
Ang mga testbench ay mga piraso ng code na ginagamit para sa simulation. Ang isang simpleng testbench ay magpapasimula ng Unit Under Test (UUT) at magdadala ng input. Gumagamit ang Go Configure software ng Icarus Verilog (iVerilog) at GTKWave upang obserbahan ang mga simulation waveform na may stimulus na ibinigay sa testbench.
Inilalarawan ng dokumentong ito ang mga hakbang na kailangang gawin habang ini-install ang Icarus sa iyong system at kung paano magpatakbo ng matagumpay na simulation.
Pag-install ng Icarus Verilog
a. I-install ang pinakabagong bersyon ng Icarus Verilog (IVerilog) mula sa https://bleyer.org/icarus/
b. Siguraduhing magdagdag ng IVerilog sa PATH at hayaan itong mag-install ng GTKWave (Tingnan ang Figure 1)
c. Buksan ang Go Configure Software at piliin ang bahagi: SLG47910(Rev BB) para buksan ang Forge Workshop (tingnan ang Figure 2).
d. Mag-click sa FPGA Editor sa gitna ng toolbar sa itaas o maaari ding i-double click ng user ang FPGA Core structure sa gitna ng window.
e. Magbubukas ang isang bagong window na tinatawag na Forge Workshop. Sa toolbar ng menu sa itaas, mag-click sa Opsyon → Mga Setting. Sa dialog box ng Mga Setting, pumunta sa Mga Tool sa ilalim ng tab na Mga Setting ng User. Alisin sa pagkakapili ang Gamitin ang “system environment box” para sa parehong Icarus Verilog at GTKWave. Idagdag ang path sa Iverilog at GTKWave na naka-save sa iyong system sa ibinigay na espasyo (tingnan ang Figure 4).
Handa na kayong gayahin ang isang testbench at tinitiyak ng mga hakbang sa itaas na awtomatikong maglulunsad ang GTKWave kapag nag-simulate ng testbench sa Go Configure software.
Testbench
Ang pinakamahalagang hakbang sa matagumpay na pagpapatupad ng anumang sistema ay upang i-verify ang disenyo at ang functionality nito. Ang pag-verify ng isang kumplikadong sistema pagkatapos ipatupad ang hardware ay hindi isang matalinong pagpili. Ito ay hindi epektibo sa mga tuntunin ng pera, oras, at mapagkukunan. Samakatuwid, sa kaso ng FPGA, ang isang testbench ay ginagamit upang subukan ang Verilog source code.
Ipagpalagay na mayroon kaming isang input na 11 bits, at gusto naming subukan ang aparato para sa lahat ng posibleng mga halaga ng kumbinasyon ng input ie (211). Dahil ito ay napakalaking bilang ng mga kumbinasyon, imposibleng manu-manong subukan ito. Sa ganitong mga kaso, ang mga testbench ay lubhang kapaki-pakinabang dahil maaari mong awtomatikong subukan ang disenyo para sa lahat ng posibleng mga halaga at samakatuwid, kumpirmahin ang pagiging maaasahan ng disenyo ng pagsubok. Ang Verilog Testbenches ay ginagamit upang gayahin at pag-aralan ang mga disenyo nang hindi nangangailangan ng anumang pisikal na hardware device.
Ang disenyong nasa ilalim ng pagsubok, dinaglat bilang DUT, ay isang synthesizable na module ng functionality na gusto naming subukan. Sa madaling salita, ito ang disenyo ng circuit na gusto naming subukan. Maaari naming ilarawan ang aming DUT gamit ang isa sa tatlong istilo ng pagmomodelo sa Verilog – Gate-level, Dataflow, o Behavioral.
Ang isang testbench ay hindi synthesizable, kaya ito ay ginagamit para sa mga layunin ng simulation lamang. Binibigyang-daan nito ang user na gumamit ng buong hanay ng mga construct ng Verilog hal, mga keyword tulad ng "para sa", "$display" at "$monitor" atbp. para sa pagsulat ng mga testbenches. Ang isang simpleng testbench ay magpapakita ng Unit Under Test (UUT) o Device Under Test (DUT) at magmaneho ng mga input.
Pag-unawa sa isang Testbench
Kahulugan ng Timescale sa Testbench
Kapag ginagaya, kailangang malaman ng software kung paano tinukoy ang oras. Tinukoy ang delay unit gamit ang `timescale directive, na tumutukoy sa unit ng oras at ang katumpakan para sa mga module na sumusunod dito. Nakakatulong ang `timescale sa pagtukoy kung ano ang ibig sabihin ng #1 sa mga tuntunin ng oras. # ay ginagamit upang tukuyin ang pagkaantala na ipapasok sa system alinsunod sa yunit ng oras na tinukoy sa timescale. Kaya, ang #1 ay nangangahulugang 1 ns ng pagkaantala kung ang time_unit ay nasa ns.
Syntax:
`timescale / /
ang time_unit ay ang tagal ng oras na kinakatawan ng pagkaantala ng #1. Kinakatawan ng time_precision base kung gaano karaming mga decimal point ng katumpakan ang gagamitin kaugnay ng mga unit ng oras. (Tingnan ang linya 23 sa Figure 5)
Magagamit natin ang mga timescale construct para gumamit ng iba't ibang unit ng oras sa parehong disenyo. Kailangang tandaan ng user na ang mga detalye ng pagkaantala ay hindi synthesize at hindi mako-convert sa hardware logic. Ang mga function ng pagkaantala ay ganap na para sa mga layunin ng simulation. $oras at $realtime ibinabalik ng mga function ng system ang kasalukuyang oras at ang default na format ng pag-uulat ay maaaring baguhin sa isa pang gawain ng system $timeformat .
Example:
`timescale 10us/100ns
`timescale 1ns/1ps
#10 reset = 1; // inaantala ang signal ng 10 ns
#0.49 $display( “T = %0t sa Oras #0.49”, $realtime) ;
Ang tinukoy na pagkaantala ay #0.49 na mas mababa sa kalahating yunit ng oras. Gayunpaman, ang katumpakan ng oras ay tinukoy na 1ps at samakatuwid ang simulator ay hindi maaaring maging mas maliit sa 1ns na ginagawa nitong pag-ikot sa ibinigay na pahayag ng pagkaantala at magbunga ng 0ns. Kaya, nabigo ang pahayag na ito na magbigay ng anumang pagkaantala.
Simulation Log:
T = 1 sa Oras #0.49
Deklarasyon ng Module
Ang deklarasyon ng module sa anumang testbench ay hindi katulad ng pangunahing Verilog code. Sa isang testbench, ang module ay ipinahayag nang walang anumang mga terminal port kasama nito. (Tingnan ang linya 25 sa Figure 5)
Syntax:
modyul ;
Ang deklarasyon ng module ay sinusundan ng pagtukoy sa input at output signal na tinukoy nang mas maaga sa pangunahing disenyo file.
Gumagamit kami ng dalawang uri ng signal para sa pagmamaneho at pagsubaybay sa mga signal sa panahon ng simulation. Hahawakan ng reg datatype ang value hanggang sa magtalaga ng bagong value dito. Ang uri ng data na ito ay maaaring magtalaga ng isang halaga lamang sa palagi o paunang bloke.
Ang wire datatype ay katulad ng isang pisikal na koneksyon. Hahawakan nito ang halaga na hinihimok ng isang port, magtalaga ng pahayag, o reg. Ang uri ng data na ito ay hindi maaaring gamitin sa inisyal o palaging harangan. Ang anumang parameter at deklarasyon ng integer ay ginagawa din sa seksyong ito.
Example:
Reg a,b; // ang input sa HDL code ay tinukoy bilang reg sa testbench
Wire y; // ang output signal sa HDL ay tinukoy bilang wire sa testbench
DUT Instantiation
Ang layunin ng isang testbench ay i-verify kung gumagana ang aming DUT module. Samakatuwid, kailangan nating i-instantiate ang module ng disenyo para masubukan ang module.
Syntax:
(. (signal1), . signal1>(signal2));
Example:
ALU d0 (.a(a), // signal "a" sa ALU ay dapat na konektado sa "a" sa ALU_tb module
.b(b), // signal "b" sa ALU ay dapat na konektado sa "b" sa ALU_tb module
.c(c));// signal "c" sa ALU ay dapat na konektado sa "c" sa ALU_tb module
Na-instantiate namin ang DUT module ALU sa test module. Ang pangalan ng instance (d0) ay pinili ng user. Ang mga signal na may tuldok na "." sa harap nila ay ang mga pangalan para sa mga signal sa loob ng ALU module, habang ang wire o reg na ikinonekta nila sa test bench ay nasa tabi ng signal sa panaklong (). Inirerekomenda na i-code ang bawat koneksyon sa port sa isang hiwalay na linya upang ang anumang mensahe ng error sa compilation ay tumuturo nang tama sa numero ng linya kung saan naganap ang error. Dahil ang mga koneksyon na ito ay ginawa sa pamamagitan ng pangalan, ang pagkakasunud-sunod ng paglitaw ng mga ito ay hindi nauugnay.
Ang DUT instantiation ay maaari ding gawin para sa mga module kung saan ang testbench module ay may iba't ibang pangalan ng signal. Ang tamang pagmamapa ng mga signal ay kung ano ang mahalaga kapag instantiating.
Example:
ALU d0 (.a(A), // signal "a" sa ALU ay dapat na konektado sa "A" sa ALU_tb module
.clk(clock), // signal "clk" sa ALU ay dapat na konektado sa "clock" ALU_tb module
.out(OUT)); // ang signal na "out" sa ALU ay dapat na konektado sa "OUT" sa ALU_tb module
Lagi at Paunang Pag-block sa isang Testbench
Mayroong dalawang magkakasunod na bloke sa Verilog, una at palagi. Sa mga bloke na ito natin inilalapat ang pampasigla.
Paunang block
Ang paunang bloke na isasagawa lamang nang isang beses at tinapos kapag ang huling linya ng bloke ay naisakatuparan. Ang stimulus ay nakasulat sa paunang bloke. (Tingnan ang linya 54-72 sa Figure 5)
Syntax:
..
panimulang simula
$dumpfile();
$dumpvars();
..(ipasok ang stimulus)
wakas
ang paunang bloke ay nagsisimula sa pagpapatupad nito sa simula ng simulation sa oras na t = 0. Simula sa unang linya sa pagitan ng simula at pagtatapos, ang bawat linya ay nagsasagawa mula sa itaas hanggang sa ibaba hanggang sa maabot ang pagkaantala. Kapag naabot na ang pagkaantala, ang execution ng block na ito ay maghihintay hanggang sa lumipas ang oras ng pagkaantala (10-time units) at pagkatapos ay kukuha muli ng execution.
Maaaring tukuyin ng user ang mga stimuli gamit ang mga loop (para, samantalang, kung-iba) pati na rin sa loob ng paunang bloke na ito sa halip na ipasok ang lahat ng mga kumbinasyon nang manu-mano.
Example:
Paunang Simula
A = 0; b = 0; // simulan ang pagpapatupad
#10 a = 0; b = 1; // ang execution ay nasa t = 10-unit time
#10 a = 1; b = 0; // ang execution ay nasa t = 20-unit time
wakas
Dump Files
Ang isa pang bagay na dapat tandaan ay ang deklarasyon ng $itaponfiles at $mga dumpvar sa loob ng unang bloke (tingnan ang linya 55-56 sa Figure 5). Ang $itaponfile ay ginagamit upang itapon ang mga pagbabago sa mga halaga ng mga lambat at mga rehistro sa a file na pinangalanan bilang argumento nito.
Para kay example:
$itaponfile(“alu_tb.vcd”);
itatapon ang mga pagbabago sa a file pinangalanang alu_tb.vcd. Ang mga pagbabago ay naitala sa a file tinatawag na VCD file na kumakatawan sa value change dump. Ang isang VCD (value change dump) ay nag-iimbak ng lahat ng impormasyon tungkol sa mga pagbabago sa halaga. Hindi tayo maaaring magkaroon ng higit sa isang $dumpfile mga pahayag sa Verilog simulation.
Ang $mga dumpvar ay ginagamit upang tukuyin kung aling mga variable ang itatapon (sa file binanggit ni $dumpfile). Ang pinakasimpleng paraan upang gamitin ito ay walang anumang argumento. Ang pangkalahatang syntax ng $dumpvars ay
$mga dumpvar ( <, >);
Karaniwang maaari naming tukuyin kung aling mga module, at kung aling mga variable sa mga module ang itatapon. Ang pinakasimpleng paraan upang gamitin ito ay ang itakda ang antas sa 0 at ang pangalan ng module bilang ang nangungunang module (karaniwang ang nangungunang testbench module).
$mga dumpvar(0, alu_tb);
Kapag ang level ay nakatakda sa 0, at tanging ang pangalan ng module ang tinukoy, ibinabagsak nito ang LAHAT ng mga variable ng module na iyon at ang lahat ng mga variable sa LAHAT ng lower-level na mga module na ginawa ng nangungunang module na ito. Kung ang anumang module ay hindi na-instantiated ng nangungunang module na ito, ang variable nito ay hindi sasaklawin. Isa pa, ang deklarasyon ng $itaponfile dapat mauna bago ang $dumpvars o anumang iba pang gawain ng system na tumutukoy sa dump. Itong mga tambakan files ay dapat na ideklara bago ang stimulus input kung hindi man, walang halaga ang ise-save sa mga dump na ito files.
Laging Block
Taliwas sa mga unang pahayag, ang palaging block ay paulit-ulit na nagsasagawa, bagaman ang pagpapatupad ay nagsisimula sa oras na t = 0. Para sa exampKaya, ang signal ng orasan ay mahalaga para sa pagpapatakbo ng mga sequential circuit tulad ng Flip-flops. Kailangan itong ibigay nang tuluy-tuloy. Kaya, maaari naming isulat ang code para sa pagpapatakbo ng orasan sa isang testbench bilang (tingnan ang linya 52 sa Figure 5):
palagi
#10 clk = ~clk;
endmodule
Ang pahayag sa itaas ay isasagawa pagkatapos ng 10 ns simula sa t = 0. Ang halaga ng clk ay mababaligtad pagkatapos ng 10 ns mula sa dating halaga. Kaya, bumubuo ng signal ng orasan na 20 ns pulse width. Samakatuwid, ang pahayag na ito ay bumubuo ng signal ng dalas na 50 MHz. Mahalagang tandaan na, ang pagsisimula ng signal ay ginagawa bago ang laging harangan. Kung hindi namin gagawin ang bahagi ng pagsisimula, ang clk signal ay magiging x mula sa t - 0, at pagkatapos ng 10 ns, ito ay ibabalik sa isa pang x.
Self-Checking Testbench
Kasama sa isang self-checking testbench ang isang pahayag upang suriin ang kasalukuyang estado.
- $display Ang gawain ng system ay pangunahing ginagamit upang ipakita ang mga debug na mensahe upang subaybayan ang daloy ng simulation
panimulang simula
A = 0 ; b = 0 ; c = 0; #10; // ilapat ang input, maghintay
kung (y ! == 1) magsimula
$display( “000 ang nabigo”); //suriin
c = 1; #10 ; //ilapat ang input, maghintay
wakas
else if ( y ! == 0) magsisimula
$display("001 failed") // check
b = 1; c = 0; #10 ; wakas
else if(y!==0)
$display (“ Nabigo ang 010”); //suriin
wakas
endmodule
$display ay ginagamit para sa pagpapakita ng mga halaga ng mga variable, string, o expression. Mula sa itaas na example, kapag nasiyahan ang alinman sa if-else loop, ipapakita ng log ng simulator ang kani-kanilang $display pahayag. Mayroong isang bagong linya bilang default sa dulo ng mga string.
$display (“oras = %t , A = %b, B = %b, C = % b”, $oras, A, B, C);
Ang mga character na binanggit sa mga quote ay ipi-print bilang sila ay. Ang titik kasama ng % ay tumutukoy sa format ng string. Ginagamit namin ang %b upang kumatawan sa binary data. Maaari naming gamitin ang %d, %h, %o para sa kumakatawan sa decimal, hexadecimal, at octal, ayon sa pagkakabanggit. Ang %g ay ginagamit para sa pagpapahayag ng mga tunay na numero. Ang mga ito ay papalitan ng mga halaga sa labas ng quote sa pagkakasunud-sunod na nabanggit. Para kay example, ang pahayag sa itaas ay ipapakita sa simulation log bilang: oras = 20, A = 0, B =1, C = 0
mesa 1. Mga Format ng Verilog Table
Pangangatwiran | Paglalarawan |
%h, %H | Ipakita sa Hexadecimal na format |
%d, %D | Ipakita sa decimal form |
%b, %B | Ipakita sa binary na format |
%m, %M | Ipakita ang hierarchical na pangalan |
%s, %S | Ipakita bilang string |
%t, %T | Ipakita sa format ng oras |
%f, %F | Ipakita ang 'real' sa decimal na format |
%e, %E | Ipakita ang 'totoo' sa isang exponential na format |
$display higit sa lahat ay nagpi-print ng data o variable tulad ng sa sandaling iyon tulad ng printf sa C. Dapat nating banggitin ang $display para sa kahit anong text na kailangan natin view sa simulation log.
- $oras
$oras ay isang gawain ng system na magbabalik sa kasalukuyang oras ng simulation.
- $subaybayan
$subaybayan susubaybayan ang data o variable kung saan ito nakasulat at sa tuwing nagbabago ang variable, ito ay magpi-print
ang binagong halaga. Nakakamit nito ang katulad na epekto ng pagtawag sa $display pagkatapos ng bawat oras na makukuha ang alinman sa mga argumento nito
na-update. $subaybayan ay tulad ng isang gawain na spawned upang tumakbo sa background ng pangunahing thread na sinusubaybayan at
nagpapakita ng mga pagbabago sa halaga ng mga variable ng argumento nito. $subaybayan ay may parehong syntax bilang $display.
$subaybayan(“ oras = %t, A = %b, B = %b, C = % b”, $oras, A, B, C);
Mula sa Figure 7 maaari mong obserbahan na ang mga bagong linya ng code ay idinagdag upang suriin ang sarili sa testbench. Ang paglalagay ng $display at $subaybayan ang mga pahayag sa iba't ibang seksyon ng testbench ay magbubunga ng iba't ibang resulta (tingnan ang Larawan 8). $oras na binanggit sa mga pahayag na ito ay nagpi-print ng oras kung saan ang halaga ay ini-print para sa. Sa parehong oras na sinasabi ng unit na 170000, makikita natin kung paano mayroong pagkakaiba sa halaga para sa A at B dahil sa $display at $subaybayan mga pahayag.
GTKWave Software
Ang GTKWave ay isang ganap na itinampok na GTK+ wave viewer para sa Unix, Win32, at Mac OSX na nagbabasa ng LXT, LXT2, VZT, FST, at GHW filepati na rin ang karaniwang VCD/EVCD files at pinapayagan ang kanilang viewing. Opisyal nito webang site ay nasa http://gtkwave.sourceforge.net/ . GTKWave ang inirerekomenda viewer ng Icarus Verilog simulation tool.
Sa sandaling matagumpay na nalikha ng user ang isang testbench upang subukan ang functionality ng disenyo, maaari na ngayong gamitin ng user ang GTKWave software upang view ang mga waveform.
Upang ilunsad ang software ng GTKWave sa view ang mga waveform, kailangan ng user na mag-click sa Simulate Testbench button sa tuktok ng toolbar o mula sa main menu Tools→ Simulation→ Simulate Testbench. Kung walang mga error sa syntax, depende sa disenyo, dapat na awtomatikong ilunsad ang GTKWave o ang mga resulta ng stimuli sa testbench ay ipapakita sa seksyong Logger ng window.
Binubuksan ng software ng GTKWave ang .vcd format na dumpfile awtomatiko. Hindi ipinapakita ng GTKWave window ang waveform kapag bumukas ito. Nagbibigay ito ng pagkakataon sa user na piliin kung aling mga signal ang gusto nitong gawin view at obserbahan. Upang piliin ang signal, kailangang ipakita ng user, kailangan ng user na mag-click sa pangalan ng kanilang module/instance sa kaliwang bahagi ng window sa ilalim ng tab na SST. Sa pamamagitan ng pag-click sa + ng bawat instance, makikita mo ang mga signal na nauugnay sa instance na iyon sa ibabang seksyon. Pagkatapos ay maaari mong i-drag at i-drop ang gustong signal o i-double click ang mga ito upang maipakita sa window ng Signals. Maaari mo ring piliin ang lahat (CTRL + A) at ipasok ang mga ito sa window ng mga signal (tingnan ang Larawan 9).
Ang mga signal ay idinagdag na ngayon sa signal window ngunit ito ay hindi pa kunwa. Pagkatapos idagdag ang mga nais na signal sa window ng signal, mag-click sa upang magkasya ang mga signal sa kasalukuyang lapad ng window at pagkatapos ay i-reload ang mga signal mula sa reload
simbolo na nasa toolbar. Maaari mo na ngayong makita ang mga signal na may kani-kanilang mga halaga.
Mga Halaga ng Signal
Bilang default, ang mga halaga ng mga signal ay nasa hexadecimal na format at ang lahat ng mga alon ay may kulay na berde (kung tama ang pagtakbo).
Maaaring baguhin ng user ang mga katangian ng signal na ito sa pamamagitan ng pag-right click sa signal at pagpili sa Format ng Data o Format ng Kulay. Maaari ding magpasok ang user ng blangkong signal upang gumawa ng mga seksyon sa pagitan ng pangkat ng mga signal. Kapag mayroon ka ng gustong optical na resulta, maaari mong i-save ang iyong mga configuration sa pamamagitan ng pagpunta File → Isulat ang I-save File.
GTKWave Toolbar
Ang toolbar (tingnan ang Figure 10) ay nagpapahintulot sa gumagamit na magsagawa ng mga pangunahing pag-andar para sa signal. Talakayin natin ang bawat opsyon sa toolbar mula kaliwa hanggang kanan.
- Mga Opsyon sa Menu: Sa ilalim ng opsyong ito, magagawa natin view lahat ng iba't ibang feature ng software na maaaring gamitin para makipaglaro sa software. Ang mga detalye sa ilalim ng opsyong menu na ito ay sakop sa ilalim ng Seksyon 8 ng gabay sa gumagamit na ito.
- Gupitin ang mga Bakas: Ito ay ginagamit upang tanggalin/i-cut ang piling signal mula sa signal window
- Kopyahin ang mga Bakas: Ito ay ginagamit upang kopyahin ang napiling signal mula sa signal window
- Idikit ang mga Bakas: Ang kinopya/pinutol na bakas ay maaaring idikit sa ibang lokasyon sa signal window
- Mag-zoom Fit: Ito ay ginagamit upang magkasya ang mga signal ayon sa laki ng window na pinili ng user na ipakita
- Mag-zoom In: Ito ay ginagamit upang mag-zoom sa window ng signal
- Mag-zoom Out: Ito ay ginagamit upang i-zoom out ang signal window
- Mag-zoom I-undo: ito ay ginagamit upang i-undo ang zoom in/out sa signal window
- Mag-zoom para Magsimula: i-zoom nito ang window ng signal, na ipinapakita ang oras ng pagsisimula ng mga signal.
- Mag-zoom para Tapusin: i-zoom nito ang window ng signal na nagpapakita ng oras ng pagtatapos ng mga signal
- Hanapin ang nakaraang gilid: Inililipat nito ang marker sa kaliwang bahagi na nagpapahiwatig ng nakaraang gilid
- Hanapin ang susunod na gilid: Inilipat nito ang marker sa kanan na nagpapahiwatig ng susunod na gilid
- Mag-scroll sa ibaba/itaas na bono: gamit ito maaari nating itakda ang time frame kung saan gustong ipakita ng user. Para kay exampSa gayon, maaari nating itakda ang time frame sa 0 sec hanggang 500 ns, ipapakita nito ang mga signal sa ilalim ng tagal na iyon lamang.
- Reload: Ang reload ay pinindot kapag may pagbabago sa ipinapakitang signal. Ire-reload at ipapakita nito ang signal ayon sa mga bagong parameter. Para kay exampAt, pagkatapos baguhin ang time frame ng signal, kailangan nating i-reload ang signal para ipakita ang signal sa bagong set time frame.
Mga Opsyon sa Menu
Mula sa kaliwang tuktok na sulok ng software ng GTKWave, maa-access ng user ang mga opsyon sa menu sa pamamagitan ng pag-click sa tatlong patayong linya (tingnan ang Figure 11). Mahahanap ng user ang mga sumusunod na opsyon sa ilalim ng mga opsyon sa Menu:
File
Ang File Ang submenu ay naglalaman ng iba't ibang mga item na may kaugnayan sa pag-access files, pag-import-pag-export ng VCD files, paglilimbag, at pagbabasa/pagsusulat files at paglabas.
I-edit
Ang Edit submenu ay ginagamit para magsagawa ng iba't ibang utility function gaya ng pagbabago ng data representation ng mga value sa wave subwindow. Gamit ang mga opsyon sa ilalim ng Edit submenu, maaaring baguhin ng user ang format ng data ng mga signal, muling ayusin ang mga ito, ilipat ang mga ito, i-trim ito, i-highlight ito, mga signal ng grupo, magkomento sa mga signal, baguhin ang kulay ng mga signal, atbp.
Maghanap
Ang Search submenu ay ginagamit upang magsagawa ng mga paghahanap sa mga net name at value. Nakakatulong ito na magsagawa ng mga function sa iba't ibang antas ng hierarchy ng mga signal at mga pagkakataon sa VCD file.
Oras
Ang submenu ng oras ay naglalaman ng isang superset ng mga function na ginagawa ng Mga Navigation at mga pindutan ng Status Panel.
Ito ay nagbibigay-daan sa simple, may kaugnayan sa oras, mga function tulad ng pag-zoom, paglipat sa isang partikular na punto ng oras, paglilipat ng signal sa isang tiyak na direksyon, atbp.
Marker
Ang submenu ng marker ay ginagamit upang magsagawa ng iba't ibang manipulasyon sa marker pati na rin kontrolin ang pag-scroll sa labas ng screen.
Nagbibigay-daan ito sa pag-andar ng pagdaragdag ng maraming marker sa signal window. Ang maximum na 26 na mga marker ng pangalan ay pinapayagan at ang mga oras para sa lahat ay dapat na iba.
a. Upang magdagdag ng mga Marker sa window ng signal
Mag-left click sa kinakailangang punto kung saan mo gustong ilagay ang Marker at pindutin ang ALT + N. Maglalagay ito ng pinangalanang marker (A,B,C, atbp.) sa kinakailangang punto. Maaaring magpatuloy ang user na gawin ito para sa 26 na magkakaibang lokasyon ng oras.
Upang ihambing ang halaga ng oras sa lahat ng mga marker ng mga lugar, Menu → Mga Marker → Ipakita ang Data ng Marker ng Pagbabago.
Ito ay magbubukas ng isang window na may halaga ng oras sa bawat Marker. Maaaring manu-manong tandaan ng user ang halaga ng oras sa bawat marker na inilagay at ibawas ang mga ito upang kalkulahin ang pagkakaiba ng oras sa pagitan ng 2 marker.
b. Upang alisin ang Marker sa window ng signal
Maaaring pumunta ang user sa Menu → Mga Marker → Collect Named Marker. Aalisin nito ang huling pinangalanang Marker na nakalagay sa window ng signal. Maaaring alisin ng user ang lahat ng pinangalanang Marker sa pamamagitan ng pagpunta sa Menu → Markers → Collect All Name Marker (Figure 12).
Sa Figure 13, makikita natin kung paano binago ang mga kulay ng signal. Maaari mong obserbahan ang Blank Signal na idinagdag sa signal window pati na rin sa isang komento - Blank Signal.
Pansinin din ang pagkakaroon ng 6 Named Marker (A – E) at ang compurgation ng time value sa pagitan ng mga Marker na ito sa ps.
View
Ang View Ang submenu ay ginagamit upang kontrolin ang iba't ibang mga katangian na nakikitungo sa graphical na pag-render ng mga item sa status pati na rin ang mga halaga sa sub window ng signal. Mula sa menu na ito, maaari mong i-convert ang signal window sa Black & White o may kulay din. Ang View Binibigyang-daan ka rin ng submenu na baguhin ang Dimensyon ng oras mula sa mga segundo (seg) hanggang sa mga ficosecond (fs). Mahahanap ng user ang opsyong ito View → I-scale sa Dimensyon ng Oras → fs.
Tulong
Ang submenu ng tulong ay naglalaman ng mga opsyon para sa pagpapagana ng on-line na tulong pati na rin ang pagpapakita ng impormasyon ng bersyon ng programa.
Konklusyon
Ang dokumentong ito ay nilikha upang tulungan ang user sa matagumpay na pagtulad sa kanilang disenyo at pag-verify ng functionality sa pamamagitan ng pagwawasto sa pagbalangkas ng kinakailangang testbench at paggamit ng Icarus Verilog kasama ng GTKWave upang ipakita ang mga waveform at obserbahan ang mga resulta.
Kasaysayan ng Pagbabago
Rebisyon | Petsa | Paglalarawan |
1.00 | Mayo 20, 2024 | Paunang paglabas. |
R19US0011EU0100 Rev.1.0
Mayo 20, 2024
© 2024 Renesas Electronics
Mga Dokumento / Mga Mapagkukunan
![]() |
RENESAS ForgeFPGA Software Simulation [pdf] Gabay sa Gumagamit REN_r19us0011eu0100, ForgeFPGA Software Simulation, ForgeFPGA Software, ForgeFPGA, ForgeFPGA Simulation, Software Simulation, Simulation, Software |