RENESAS ForgeFPGA ဆော့ဖ်ဝဲလ် သရုပ်သကန်
အရေးကြီးသောအချက်အလက်များ
Simulation သည် RTL ကုဒ်သည် ရည်ရွယ်ထားသည့်နည်းလမ်းအတိုင်း လုပ်ဆောင်ခြင်းရှိမရှိ စစ်ဆေးရန် မတူညီသောအချိန်များတွင် ဒီဇိုင်းတွင် မတူညီသောထည့်သွင်းမှုနှိုးဆွမှုကို အသုံးပြုသည့်နည်းပညာတစ်ခုဖြစ်သည်။ ဒီဇိုင်း၏ ကြံ့ခိုင်မှုကို စစ်ဆေးရန် ၎င်းကို အသုံးပြုသည်။ Simulation သည်အသုံးပြုသူကိုခွင့်ပြုသည်။ view ဆက်စပ်အချက်ပြမှုများ၏ အချိန်ကိုက်ဇယားကို ဒီဇိုင်းပုံစံဖော်ပြချက်ကို မည်သို့နားလည်နိုင်မည်နည်း။ file ပြုမူသည်။
Testbenches များသည် simulation အတွက်အသုံးပြုသော ကုဒ်အပိုင်းအစများဖြစ်သည်။ ရိုးရှင်းသော testbench သည် Unit Under Test (UUT) ကို ချက်ချင်းလုပ်ဆောင်ပြီး input ကို မောင်းနှင်ပေးမည်ဖြစ်သည်။ Go Configure ဆော့ဖ်ဝဲလ်သည် testbench တွင် ပေးထားသည့် လှုံ့ဆော်မှုဖြင့် သရုပ်ဖော်သည့် လှိုင်းပုံစံများကို စောင့်ကြည့်ရန် Icarus Verilog (iVerilog) နှင့် GTKWave ကို အသုံးပြုသည်။
ဤစာတမ်းသည် သင့်စနစ်တွင် Icarus ကို ထည့်သွင်းစဉ် လုပ်ဆောင်ရမည့် အဆင့်များနှင့် အောင်မြင်သော သရုပ်သကန်ကို မည်သို့လုပ်ဆောင်ရမည်ကို ဖော်ပြသည်။
Icarus Verilog ကို ထည့်သွင်းခြင်း။
a. Icarus Verilog (IVerilog) ၏ နောက်ဆုံးဗားရှင်းကို ထည့်သွင်းပါ။ https://bleyer.org/icarus/
b. PATH တွင် IVerilog ကိုသေချာစွာထည့်ပြီး GTKWave ကိုထည့်သွင်းခွင့်ပေးပါ (ပုံ 1 ကိုကြည့်ပါ)
c. Go Configure Software ကိုဖွင့်ပြီး Forge Workshop ကိုဖွင့်ရန် အပိုင်း- SLG47910(Rev BB) ကိုရွေးချယ်ပါ (ပုံ 2 ကိုကြည့်ပါ)။
d. ထိပ်ရှိ ကိရိယာဘားအလယ်ရှိ FPGA Editor ကို နှိပ်ပါ သို့မဟုတ် အသုံးပြုသူသည် ဝင်းဒိုးအလယ်ရှိ FPGA Core တည်ဆောက်ပုံကို နှစ်ချက်နှိပ်နိုင်သည်။
e. Forge Workshop ဟုခေါ်သော ဝင်းဒိုးအသစ်တစ်ခု ပွင့်လာသည်။ အပေါ်ဘက်ရှိ မီနူးတူးလ်ဘားတွင် ရွေးချယ်မှုများ → ဆက်တင်များကို နှိပ်ပါ။ ဆက်တင်များ ဒိုင်ယာလော့ဘောက်စ်တွင်၊ အသုံးပြုသူ ဆက်တင်များ တက်ဘ်အောက်ရှိ ကိရိယာများသို့ သွားပါ။ Icarus Verilog နှင့် GTKWave နှစ်ခုစလုံးအတွက် “စနစ်ပတ်ဝန်းကျင်အကွက်ကို အသုံးပြုပါ” ကို ရွေးဖြုတ်ပါ။ သင့်စနစ်တွင်သိမ်းဆည်းထားသော Iverilog နှင့် GTKWave လမ်းကြောင်းကို ပေးထားသည့်နေရာထဲသို့ ထည့်ပါ (ပုံ 4 ကိုကြည့်ပါ)။
Testbench ကို အတုယူရန် သင့်အား လုံး၀သတ်မှတ်ထားပြီး Go Configure ဆော့ဖ်ဝဲလ်တွင် testbench ကို တုပသည့်အခါ GTKWave သည် အလိုအလျောက်စတင်ကြောင်း သေချာစေပါသည်။
ခုံတန်းရှည်
မည်သည့်စနစ်ကိုမဆို အောင်မြင်စွာအကောင်အထည်ဖော်ရာတွင် အရေးကြီးဆုံးအဆင့်မှာ ဒီဇိုင်းနှင့် ၎င်း၏လုပ်ဆောင်နိုင်စွမ်းကို အတည်ပြုရန်ဖြစ်သည်။ ဟာ့ဒ်ဝဲကို အကောင်အထည်ဖော်ပြီးနောက် ရှုပ်ထွေးသောစနစ်တစ်ခုကို အတည်ပြုခြင်းသည် ပညာရှိရွေးချယ်မှုမဟုတ်ပါ။ ငွေကြေး၊ အချိန်နှင့် အရင်းအမြစ်များ အရ ထိရောက်မှု မရှိပေ။ ထို့ကြောင့် FPGA ကိစ္စတွင် Verilog အရင်းအမြစ်ကုဒ်ကို စမ်းသပ်ရန် testbench ကို အသုံးပြုသည်။
ကျွန်ုပ်တို့တွင် 11 bits ရှိသည့် input တစ်ခုရှိသည်ဆိုပါစို့၊ ဖြစ်နိုင်ချေရှိသော input ပေါင်းစပ်တန်ဖိုးများ ဥပမာ (211) အတွက် စက်ကို စမ်းသပ်လိုပါသည်။ ၎င်းသည် ပေါင်းစပ်အရေအတွက် အလွန်များပြားသောကြောင့်၊ ၎င်းကို ကိုယ်တိုင်စမ်းသပ်ရန် မဖြစ်နိုင်ပါ။ ထိုသို့သောအခြေအနေများတွင်၊ ဖြစ်နိုင်သည့်တန်ဖိုးများအားလုံးအတွက် ဒီဇိုင်းကို အလိုအလျောက်စမ်းသပ်နိုင်သောကြောင့် testbenches များသည် အလွန်အသုံးဝင်ပြီး ထို့ကြောင့် စမ်းသပ်ဒီဇိုင်း၏ယုံကြည်စိတ်ချရမှုကို အတည်ပြုပါ။ Verilog Testbenches ကို ရုပ်ပိုင်းဆိုင်ရာ ဟာ့ဒ်ဝဲ စက်ပစ္စည်း မလိုအပ်ဘဲ ဒီဇိုင်းများကို ပုံဖော်ကာ ပိုင်းခြားစိတ်ဖြာရန် အသုံးပြုပါသည်။
DUT ဟု အတိုကောက်ခေါ်သော စမ်းသပ်မှုအောက်တွင် ဒီဇိုင်းသည် ကျွန်ုပ်တို့ စမ်းသပ်လိုသော လုပ်ဆောင်နိုင်စွမ်း၏ ပေါင်းစပ်နိုင်သော မော်ဂျူးတစ်ခုဖြစ်သည်။ တစ်နည်းဆိုရသော် ၎င်းသည် ကျွန်ုပ်တို့ စမ်းသပ်လိုသော circuit design ဖြစ်သည်။ Verilog – Gate-level၊ Dataflow သို့မဟုတ် Behavioral တွင် မော်ဒယ်သုံးပုံစံသုံးမျိုးထဲမှ တစ်ခုကို အသုံးပြု၍ ကျွန်ုပ်တို့၏ DUT ကို ဖော်ပြနိုင်ပါသည်။
Testbench သည် ပေါင်းစပ်၍မရနိုင်သောကြောင့်၊ သရုပ်ဖော်ခြင်းအတွက်သာ အသုံးပြုပါသည်။ ၎င်းသည် အသုံးပြုသူအား testbenches ရေးသားရန်အတွက် ဥပမာ- "for"၊ "$display" နှင့် "$monitor" ကဲ့သို့သော အဓိကစကားလုံးများဖြစ်သော Verilog constructs အပြည့်အစုံကို အသုံးပြုရန် ခွင့်ပြုပါသည်။ ရိုးရှင်းသော testbench သည် စမ်းသပ်မှုအောက်ရှိ ယူနစ် (UUT) သို့မဟုတ် စမ်းသပ်မှုအောက်တွင် စက်ပစ္စည်း (DUT) နှင့် သွင်းအားစုများကို မောင်းနှင်စေသည်။
Testbench ကိုနားလည်ခြင်း။
Testbench တွင် Timescale အဓိပ္ပာယ်ဖွင့်ဆိုချက်
အတုယူသည့်အခါ၊ ဆော့ဖ်ဝဲသည် အချိန်ကို မည်သို့သတ်မှတ်ထားသည်ကို သိရန် လိုအပ်သည်။ နှောင့်နှေးမှုယူနစ်အား အချိန်ယူနစ်နှင့် ၎င်းနောက်လိုက်သည့် မော်ဂျူးများအတွက် တိကျမှုကို သတ်မှတ်ပေးသည့် `အချိန်အတိုင်းအတာ ညွှန်ကြားချက်ကို အသုံးပြု၍ သတ်မှတ်သည်။ `အချိန်အတိုင်းအတာသည် နံပါတ် ၁ ၏အဓိပ္ပါယ်ကို အချိန်ကာလသတ်မှတ်ချက်အတွက် ကူညီပေးသည်။ # သည် အချိန်အတိုင်းအတာအရ သတ်မှတ်ထားသည့် အချိန်ယူနစ်နှင့်အညီ စနစ်တွင် စတင်မိတ်ဆက်မည့် နှောင့်နှေးမှုကို သတ်မှတ်ရန် အသုံးပြုသည်။ ထို့ကြောင့်၊ #1 သည် time_unit တွင် ns ရှိပါက 1 ns နှောင့်နှေးခြင်းကို ဆိုလိုသည်။
အထားအသို-
`အချိန်အတိုင်းအတာ / /
time_unit သည် #1 ၏ နှောင့်နှေးမှုကို ကိုယ်စားပြုသည့် အချိန်ပမာဏဖြစ်သည်။ time_precision အခြေခံသည် အချိန်ယူနစ်များနှင့် ဆက်စပ်၍ အသုံးပြုရန် တိကျသော ဒဿမအမှတ် မည်မျှရှိသည်ကို ကိုယ်စားပြုသည်။ (ပုံ ၅ တွင် စာကြောင်း ၂၃ ကိုကြည့်ပါ)
တူညီသောဒီဇိုင်းတွင် မတူညီသောအချိန်ယူနစ်များကို အသုံးပြုရန်အတွက် အချိန်အတိုင်းအတာတည်ဆောက်မှုများကို ကျွန်ုပ်တို့အသုံးပြုနိုင်ပါသည်။ အသုံးပြုသူသည် နှောင့်နှေးမှုဆိုင်ရာ သတ်မှတ်ချက်များကို ပေါင်းစပ်၍မရနိုင်သည့်အပြင် ဟာ့ဒ်ဝဲလော့ဂျစ်အဖြစ်သို့ ပြောင်းလဲ၍မရကြောင်း မှတ်သားထားရန် လိုအပ်ပါသည်။ နှောင့်နှေးသည့်လုပ်ဆောင်ချက်များသည် သရုပ်ဖော်ခြင်းရည်ရွယ်ချက်အတွက် လုံးဝဖြစ်သည်။ $အချိန် နှင့် $အချိန်နှင့်တပြေးညီ စနစ်လုပ်ဆောင်ချက်များသည် လက်ရှိအချိန်ကို ပြန်လည်ရောက်ရှိပြီး ပုံသေအစီရင်ခံမှုဖော်မတ်ကို အခြားသောစနစ်လုပ်ငန်းတာဝန် $timeformat ဖြင့် ပြောင်းလဲနိုင်သည်။
Example-
`အချိန်အတိုင်းအတာ 10us/100ns
`အချိန်အတိုင်းအတာ 1ns/1ps
#10 ပြန်လည်သတ်မှတ်ခြင်း = 1; // အချက်ပြမှုကို 10 ns နှောင့်နှေးစေသည်။
#0.49 $display(“အချိန်က T = %0t #0.49”၊ $realtime);
သတ်မှတ်ထားသော နှောင့်နှေးမှုသည် #0.49 ဖြစ်ပြီး ၎င်းသည် ယူနစ်တစ်ယူနစ်ထက်ဝက်ထက်နည်းသည်။ သို့သော်၊ အချိန်တိကျမှုကို 1ps ဟုသတ်မှတ်ထားသောကြောင့် Simulator သည် ပေးထားသောနှောင့်နှေးမှုထုတ်ပြန်ချက်နှင့် အထွက်နှုန်း 1ns ကိုလှည့်ပတ်ရန် 0ns ထက်သေးငယ်သွားမည်မဟုတ်ပေ။ ထို့ကြောင့် ဤထုတ်ပြန်ချက်သည် နှောင့်နှေးမှုကို မပေးနိုင်ပါ။
သရုပ်သကန်မှတ်တမ်း-
T = 1 အချိန် #0.49
Module ကြေငြာချက်
မည်သည့် testbench တွင်မဆို Module ကြေငြာချက်သည် ပင်မ Verilog ကုဒ်နှင့် မတူပါ။ testbench တွင်၊ module ကို ၎င်းနှင့်အတူ မည်သည့် terminal ports များမပါဘဲကြေငြာသည်။ (ပုံ 25 တွင် စာကြောင်း 5 ကိုကြည့်ပါ)
အထားအသို-
မော်ဂျူး ;
module declaration ကို main design တွင် အစောပိုင်းတွင် သတ်မှတ်ထားသော input နှင့် output signals များကို သတ်မှတ်ခြင်းဖြင့် နောက်တွင် လုပ်ဆောင်ပါသည်။ file.
ကျွန်ုပ်တို့သည် မောင်းနှင်နေစဉ်အတွင်း အချက်ပြမှုများကို စောင့်ကြည့်ခြင်းအတွက် အချက်ပြအမျိုးအစား နှစ်မျိုးကို ကျွန်ုပ်တို့ အသုံးပြုပါသည်။ တန်ဖိုးအသစ်တစ်ခုသတ်မှတ်ပြီးသည်အထိ reg ဒေတာအမျိုးအစားသည် တန်ဖိုးကို ထိန်းထားမည်ဖြစ်သည်။ ဤဒေတာအမျိုးအစားကို အမြဲတမ်း သို့မဟုတ် ကနဦး ဘလောက်တွင်သာ တန်ဖိုးသတ်မှတ်နိုင်သည်။
ဝိုင်ယာဒေတာအမျိုးအစားသည် ရုပ်ပိုင်းဆိုင်ရာချိတ်ဆက်မှုတစ်ခုနှင့်တူသည်။ ၎င်းသည် port တစ်ခုမှမောင်းနှင်သောတန်ဖိုး၊ assign statement သို့မဟုတ် reg ကိုထိန်းထားလိမ့်မည်။ ဤဒေတာအမျိုးအစားကို ကနဦး သို့မဟုတ် အမြဲတမ်းပိတ်ဆို့ခြင်းတွင် အသုံးမပြုနိုင်ပါ။ မည်သည့် parameter နှင့် integer declaration ကိုမဆို ဤကဏ္ဍတွင် လုပ်ဆောင်ပါသည်။
Example-
Reg a၊b; // HDL ကုဒ်တွင်ထည့်သွင်းမှုကို testbench တွင် reg အဖြစ်သတ်မှတ်သည်။
ဝါယာကြိုး y; // HDL တွင် output signal ကို testbench တွင် wire အဖြစ်သတ်မှတ်သည်။
DUT Instantation
testbench ၏ရည်ရွယ်ချက်မှာ ကျွန်ုပ်တို့၏ DUT module အလုပ်လုပ်ခြင်းရှိမရှိစစ်ဆေးရန်ဖြစ်သည်။ ထို့ကြောင့်၊ ကျွန်ုပ်တို့သည် ကျွန်ုပ်တို့၏ ဒီဇိုင်း module ကို စမ်းသပ်ရန် လိုအပ်ပါသည်။
အထားအသို-
(။ (အချက် ၁)။ signal1>(signal1));
Example-
ALU တွင် ALU d0 (.a(a), // signal “a” ကို ALU_tb module ရှိ “a” သို့ ချိတ်ဆက်သင့်သည်
.b(b)၊ ALU ရှိ // signal “b” ကို ALU_tb module ရှိ “b” သို့ ချိတ်ဆက်သင့်သည်
.c(c)) ;// ALU ရှိ အချက်ပြ “c” ကို ALU_tb module ရှိ “c” သို့ ချိတ်ဆက်သင့်သည်
ကျွန်ုပ်တို့သည် DUT module မှ ALU ကို စမ်းသပ်မှု module သို့ ချက်ချင်းတင်လိုက်ပါပြီ။ ဥပမာအမည် (d0) သည် အသုံးပြုသူ၏ ရွေးချယ်မှုဖြစ်သည်။ ကာလတစ်ခုနှင့်အတူ အချက်ပြမှုများ။ ၎င်းတို့ရှေ့တွင် ALU module အတွင်းရှိ အချက်ပြများအတွက် အမည်များဖြစ်ပြီး စမ်းသပ်ခုံတန်းလျားတွင် ၎င်းတို့ချိတ်ဆက်ထားသော ဝါယာ သို့မဟုတ် reg သည် ကွင်းပိတ် () အတွင်းရှိ အချက်ပြ၏ဘေးတွင် ရှိနေစဉ်။ ချိတ်ဆက်မှုတစ်ခုစီကို သီးခြားလိုင်းတစ်ခုစီတွင် ကုဒ်လုပ်ရန် အကြံပြုလိုသည်မှာ စုစည်းမှု အမှားအယွင်း မက်ဆေ့ချ်သည် အမှားဖြစ်ပွားခဲ့သည့် လိုင်းနံပါတ်ကို မှန်ကန်စွာ ညွှန်ပြနိုင်စေရန် အကြံပြုအပ်ပါသည်။ ဤချိတ်ဆက်မှုများကို နာမည်ဖြင့်ပြုလုပ်ထားသောကြောင့် ၎င်းတို့ပေါ်လာသည့်အစီအစဥ်သည် မသက်ဆိုင်ပါ။
testbench module တွင် မတူညီသော အချက်ပြအမည်များ ပါရှိသည့် မော်ဂျူးများအတွက် DUT instantiation ကိုလည်း ပြုလုပ်နိုင်သည်။ အချက်ပြမှုများ၏ မှန်ကန်သောမြေပုံဆွဲခြင်းသည် ချက်ခြင်းထုတ်သည့်အခါ အရေးကြီးသည်။
Example:
ALU တွင် ALU d0 (.a(A), // signal “a” ကို ALU_tb module ရှိ “A” သို့ ချိတ်ဆက်သင့်သည်
.clk(နာရီ)၊ // အချက်ပြ "clk" ALU ရှိ "နာရီ" ALU_tb မော်ဂျူးသို့ ချိတ်ဆက်သင့်သည်
.out(ထွက်)); // ALU တွင် “ထွက်” အချက်ပြခြင်းကို ALU_tb module ရှိ “OUT” သို့ ချိတ်ဆက်သင့်သည်။
Testbench တွင် အမြဲတမ်းနှင့် ကနဦးပိတ်ဆို့ခြင်း။
Verilog တွင် ဆက်တိုက်လုပ်ကွက် နှစ်ခုရှိသည်၊ ကနဦးနှင့် အမြဲတမ်း။ ကျွန်ုပ်တို့သည် နှိုးဆွမှုကို ကျင့်သုံးသည့် ဤလုပ်ကွက်များတွင် ဖြစ်ပါသည်။
ကနဦးပိတ်ဆို့
တစ်ကြိမ်သာ လုပ်ဆောင်ပြီး ဘလောက်၏နောက်ဆုံးစာကြောင်းကို လုပ်ဆောင်သောအခါတွင် ရပ်စဲသွားသည့် ကနဦးပိတ်ဆို့သည်။ လှုံ့ဆော်မှုကို ကနဦးဘလောက်တွင် ရေးထားသည်။ (ပုံ ၅ တွင် စာကြောင်း ၅၄-၇၂ ကိုကြည့်ပါ)
အထားအသို:
..
ကနဦးအစ
$dumpfile( );
$dumpvars();
..(နှိုးဆွမှုထည့်ပါ)
အဆုံး
ကနဦးဘလောက်သည် t = 0 တွင် အစီအစဥ်၏အစတွင် စတင်လုပ်ဆောင်သည်။ အစနှင့်အဆုံးကြားရှိ ပထမစာကြောင်းမှစတင်ကာ နှောင့်နှေးမှုတစ်ခုမရောက်ရှိမချင်း အပေါ်မှအောက်ခြေအထိ လုပ်ဆောင်သည်။ နှောင့်နှေးမှုသို့ရောက်ရှိသောအခါ၊ ဤပိတ်ဆို့ခြင်း၏လုပ်ဆောင်မှုသည် နှောင့်နှေးချိန် (10-အကြိမ်ယူနစ်များ) ကျော်လွန်သည်အထိ စောင့်ပြီး အကောင်အထည်ဖော်မှုကို ထပ်မံလုပ်ဆောင်သည်။
အသုံးပြုသူသည် ပေါင်းစပ်မှုများအားလုံးကို ကိုယ်တိုင်ထည့်သွင်းမည့်အစား ဤကနဦးဘလောက်အတွင်းတွင်လည်း ကွင်းပတ်များ (အချိန်၊ အချိန်၊ if-else) ကို အသုံးပြု၍ လှုံ့ဆော်မှုကို သတ်မှတ်နိုင်သည်။
Example:
ကနဦးအစ
A = 0; b = 0; // စတင်လုပ်ဆောင်ပါ။
#10 a = 0; b = 1; // ကွပ်မျက်မှုသည် t = 10 ယူနစ်အချိန်ဖြစ်သည်။
#10 a = 1; b = 0; // ကွပ်မျက်မှုသည် t = 20 ယူနစ်အချိန်ဖြစ်သည်။
အဆုံး
အမှိုက်ပုံကြီး Files
နောက်တစ်ခု သတိထားရမှာက $ ကြေငြာချက်ပါ။အမှိုက်ပုံကြီးfiles နှင့် $dumpvars ကနဦးဘလောက်အတွင်း (ပုံ 55 တွင် စာကြောင်း 56- 5 ကိုကြည့်ပါ)။ အဆိုပါ $အမှိုက်ပုံကြီးfile ပိုက်ကွန်များနှင့် စာရင်းသွင်းမှုများ၏ တန်ဖိုးပြောင်းလဲမှုများကို စွန့်ပစ်ရန်အတွက် အသုံးပြုသည်။ file ၎င်းကို ၎င်း၏ ငြင်းခုံမှုဟု အမည်ပေးထားသည်။
ဟောင်းအတွက်ample-
$အမှိုက်ပုံကြီးfile(“alu_tb.vcd”);
a တွင် အပြောင်းအလဲများကို စွန့်ပစ်ပါမည်။ file alu_tb.vcd ဟုခေါ်သည်။ အပြောင်းအလဲများကို မှတ်တမ်းတင်ထားသည်။ file VCD လို့ခေါ်တယ်။ file value change dump ကို ကိုယ်စားပြုပါတယ်။ VCD (value change dump) သည် တန်ဖိုးပြောင်းလဲမှုဆိုင်ရာ အချက်အလက်အားလုံးကို သိမ်းဆည်းထားသည်။ ကျွန်ုပ်တို့တွင် $dump တစ်ခုထက်ပို၍ မရပါ။file Verilog simulation တွင်ဖော်ပြချက်များ။
အဆိုပါ $dumpvars မည်သည့် variable များကို စွန့်ပစ်ရမည်ကို သတ်မှတ်ရန် အသုံးပြုသည် ( တွင် file $dump မှဖော်ပြခဲ့သည်။file) ၎င်းကိုအသုံးပြုရန် အရိုးရှင်းဆုံးနည်းလမ်းမှာ မည်သည့်အငြင်းပွားမှုမှ မရှိဘဲဖြစ်သည်။ $dumpvars ၏ ယေဘူယျ syntax သည်
$dumpvars ( <၊ >);
အခြေခံအားဖြင့် ကျွန်ုပ်တို့သည် မည်သည့် modules များကို သတ်မှတ်နိုင်သည်၊ မည်သည့် modules များရှိ variable များကို စွန့်ပစ်မည်နည်း။ ၎င်းကိုအသုံးပြုရန် အရိုးရှင်းဆုံးနည်းလမ်းမှာ အဆင့် 0 နှင့် module အမည်ကို ထိပ်တန်း module အဖြစ် သတ်မှတ်ရန်ဖြစ်သည် (ပုံမှန်အားဖြင့် ထိပ်တန်း testbench module)။
$dumpvars(0, alu_tb);
အဆင့်ကို 0 ဟုသတ်မှတ်ထားကာ မော်ဂျူးအမည်ကိုသာ သတ်မှတ်ထားသောအခါ၊ ၎င်းသည် ထို module ၏ variable များအားလုံးနှင့် ဤထိပ်တန်း module မှ ချက်ချင်းလုပ်ဆောင်နိုင်သော အောက်ခြေအဆင့် module များအားလုံးရှိ variable အားလုံးကို စွန့်ပစ်သည်။ ဤထိပ်တန်း module မှ ချက်ချင်းမလုပ်ဆောင်နိုင်သော မည်သည့် module မဆို ၎င်း၏ variable ကို အကျုံးဝင်မည်မဟုတ်ပါ။ နောက်တစ်ခုက $ ကြေငြာချက်အမှိုက်ပုံကြီးfile $dumpvars သို့မဟုတ် dump သတ်မှတ်သည့် အခြားသော စနစ်လုပ်ဆောင်စရာများ ရှေ့တွင် လာရပါမည်။ ဒီအမှိုက်ပုံကြီး files ကို အခြားလှုံ့ဆော်မှုသွင်းအားစုများရှေ့တွင်ကြေငြာရမည်ဖြစ်ပြီး၊ ဤအမှိုက်ပုံကြီးတွင်တန်ဖိုးကိုသိမ်းဆည်းမည်မဟုတ်ပါ။ files.
အမြဲတမ်း Block
ကနဦးထုတ်ပြန်ချက်များနှင့် ဆန့်ကျင်ဘက်တွင်၊ ကွပ်မျက်မှုသည် t = 0 တွင် စတင်သော်လည်း၊ အမြဲတမ်းပိတ်ဆို့ခြင်းသည် ထပ်ခါတလဲလဲ လုပ်ဆောင်သည်။ampFlip-flops ကဲ့သို့ sequential circuit များလုပ်ဆောင်ရန်အတွက် နာရီအချက်ပြမှုသည် မရှိမဖြစ်လိုအပ်ပါသည်။ စဉ်ဆက်မပြတ် ပံ့ပိုးပေးဖို့ လိုပါတယ်။ ထို့ကြောင့်၊ ကျွန်ုပ်တို့သည် testbench တွင် နာရီ၏လည်ပတ်မှုအတွက် ကုဒ်ကိုရေးနိုင်သည် (ပုံ 52 တွင် စာကြောင်း 5 ကိုကြည့်ပါ)။
အမြဲတမ်း
#10 clk = ~clk;
endmodule
အထက်ပါဖော်ပြချက်သည် t = 10 မှစတင်၍ 0 ns ပြီးနောက် လုပ်ဆောင်သည်။ clk ၏တန်ဖိုးသည် ယခင်တန်ဖိုးမှ 10 ns ပြီးနောက် ပြောင်းပြန်ဖြစ်သွားလိမ့်မည်။ ထို့ကြောင့် 20 ns pulse width ၏ clock signal ကိုထုတ်ပေးသည်။ ထို့ကြောင့် ဤထုတ်ပြန်ချက်သည် ကြိမ်နှုန်း 50 MHz ၏ အချက်ပြမှုကို ထုတ်ပေးသည်။ မှတ်သားထားရန် အရေးကြီးသည်မှာ၊ signal ၏ အစပြုခြင်းကို အမြဲတမ်း block မတိုင်မီ လုပ်ဆောင်ပါသည်။ အကယ်၍ ကျွန်ုပ်တို့သည် ကနဦးလုပ်ဆောင်မှုအပိုင်းကို မလုပ်ပါက၊ clk signal သည် x မှ t – 0 ဖြစ်မည်ဖြစ်ပြီး 10 ns ပြီးနောက်၊ ၎င်းသည် အခြား x သို့ပြောင်းပြန်မည်ဖြစ်သည်။
မိမိကိုယ်ကို စစ်ဆေးခြင်း Testbench
မိမိကိုယ်ကို စစ်ဆေးခြင်း ခုံတန်းလျားတစ်ခုတွင် လက်ရှိအခြေအနေကို စစ်ဆေးရန် ထုတ်ပြန်ချက်တစ်ခု ပါဝင်သည်။
- $ပြသခြင်း။ စနစ်လုပ်ဆောင်မှုကို အဓိကအားဖြင့် အမှားအယွင်း မက်ဆေ့ချ်များကို ပြသရန် စီစဥ်ခြင်းစီးဆင်းမှုကို ခြေရာခံရန် အဓိကအသုံးပြုပါသည်။
ကနဦးအစ
A = 0 ; b = 0 ; c = 0; #10; // ထည့်သွင်းအသုံးပြုရန်၊ ခဏစောင့်ပါ။
if(y!==1) စတင်ပါ။
$display("000 ကျရှုံးသည်") ; // စစ်ဆေးပါ။
c = 1; #10 ; // ထည့်သွင်းမှုကို အသုံးပြုပါ၊ ခဏစောင့်ပါ။
အဆုံး
else if (y ! == 0) စတင်ပါ။
$display(“001 ကျရှုံးသည်”) // စစ်ဆေးပါ။
b = 1; c = 0; #10 ; အဆုံး
တခြား if(y!==0)
$display (“010 မအောင်မြင်ပါ”); // စစ်ဆေးပါ။
အဆုံး
endmodule
$ပြသခြင်း။ variables၊ strings များ သို့မဟုတ် expression များ၏ တန်ဖိုးများကို ပြသရန်အတွက် အသုံးပြုသည်။ အထက်ပါ example၊ if-else loop တစ်ခုမှ ကျေနပ်သည့်အခါတိုင်း၊ simulator မှတ်တမ်းသည် ၎င်း၏ သက်ဆိုင်ရာ $ ကို ပြသမည်ဖြစ်သည်။ပြသခြင်း။ ကြေညာချက် ကြိုးများအဆုံးတွင် ပုံမှန်အားဖြင့် လိုင်းအသစ်တစ်ခုရှိသည်။
$ပြသခြင်း။ (“အချိန် = %t ၊ A = %b ၊ B = %b ၊ C = % b ” ၊ $အချိန်, A,B,C);
ကိုးကားချက်များတွင် ဖော်ပြထားသော စာလုံးများကို ပုံအတိုင်း ရိုက်နှိပ်ပါမည်။ % နှင့်အတူ စာလုံးသည် string ဖော်မတ်ကို ရည်ညွှန်းသည်။ ဒွိဒေတာကို ကိုယ်စားပြုရန် %b ကို အသုံးပြုသည်။ ဒဿမ၊ ဆဋ္ဌမကိန်းဂဏန်းနှင့် အဋ္ဌမမြောက်တို့ကို ကိုယ်စားပြုရန်အတွက် %d၊ %h၊ %o ကို သုံးနိုင်သည်။ %g ကို ဂဏန်းအစစ်အမှန်များဖော်ပြရန်အတွက် အသုံးပြုသည်။ ဖော်ပြထားသော အစီအစဥ်ရှိ ကိုးကားချက်အပြင်ရှိ တန်ဖိုးများကို ၎င်းတို့အား အစားထိုးပါမည်။ ဟောင်းအတွက်ample၊ အထက်ပါဖော်ပြချက်သည် အချိန် = 20၊ A = 0၊ B = 1၊ C = 0 အဖြစ်၊
စားပွဲ 1. Verilog ဇယားပုံစံများ
ဆင်ခြေ | ဖော်ပြချက် |
%h၊ %H | Hexadecimal ဖော်မတ်ဖြင့် ပြသပါ။ |
%d၊ %D | ဒဿမပုံစံဖြင့် ပြသသည်။ |
%b၊ %B | ဒွိဖော်မတ်ဖြင့် ပြသပါ။ |
%m၊ %M | အထက်အောက် အမည်ကို ပြပါ။ |
%s၊ %S | စာကြောင်းအဖြစ်ပြသပါ။ |
%t၊ %T | အချိန်ဖော်မတ်ဖြင့် ပြသပါ။ |
%f၊ %F | ဒဿမဖော်မတ်ဖြင့် 'အစစ်' ကိုပြသပါ။ |
%e၊ %E | ကိန်းဂဏန်းပုံစံဖြင့် 'အစစ်အမှန်' ကို ပြသပါ။ |
$ပြသခြင်း။ C တွင် printf ကဲ့သို့ ထိုအချိန်၌ ဒေတာ သို့မဟုတ် ကိန်းရှင်ကို အဓိကအားဖြင့် ပရင့်ထုတ်ပါသည်။ ကျွန်ုပ်တို့သည် $ ကိုဖော်ပြရပါမည်။ပြသခြင်း။ ဘာစာသားအတွက်ပဲ ဖြစ်ဖြစ်၊ view simulation မှတ်တမ်းတွင်။
- $အချိန်
$အချိန် သည် simulation ၏ လက်ရှိအချိန်ကို ပြန်ပေးမည့် စနစ်အလုပ်တစ်ခုဖြစ်သည်။
- $စောင့်ကြည့်
$စောင့်ကြည့် ၎င်းရေးသားထားသည့် အချက်အလက် သို့မဟုတ် ကိန်းရှင်ကို စောင့်ကြည့်မည်ဖြစ်ပြီး ကိန်းရှင်ပြောင်းလဲသည့်အခါတိုင်း ၎င်းသည် ပရင့်ထုတ်မည်ဖြစ်သည်။
ပြောင်းလဲထားသောတန်ဖိုး။ ၎င်းသည် ၎င်း၏ ငြင်းခုံမှုတစ်ခုရလာတိုင်း $display ကိုခေါ်ဆိုခြင်း၏ အလားတူအကျိုးသက်ရောက်မှုကို ရရှိသည်။
မွမ်းမံထားသည်။ $စောင့်ကြည့် မော်နီတာနှင့် စောင့်ကြည့်သည့် ပင်မကြိုး၏ နောက်ခံတွင် လည်ပတ်ရန် ပေါက်ဖွားလာသော အလုပ်နှင့် တူသည်။
၎င်း၏ အကြောင်းပြချက် ကိန်းရှင်များ၏ တန်ဖိုးပြောင်းလဲမှုများကို ပြသသည်။ $စောင့်ကြည့် $ နှင့်တူညီသော syntax ရှိသည်။ပြသခြင်း။.
$စောင့်ကြည့်(“အချိန်=%t၊ A=%b၊ B=%b၊ C=%b”၊ $အချိန်, A,B,C);
ပုံ 7 မှ testbench ကို ကိုယ်တိုင်အကဲဖြတ်ရန်အတွက် ကုဒ်လိုင်းအသစ်များ ပေါင်းထည့်ထားသည်ကို သတိပြုနိုင်ပါသည်။ $ ၏နေရာချထားမှုပြသခြင်း။ နှင့် $စောင့်ကြည့် testbench ၏ မတူညီသော ကဏ္ဍများတွင် ဖော်ပြချက်များသည် မတူညီသော ရလဒ်များ ထွက်ပေါ်လိမ့်မည် (ပုံ 8 ကိုကြည့်ပါ)။ $အချိန် ဤထုတ်ပြန်ချက်တွင်ဖော်ပြထားသောတန်ဖိုးသည် ရိုက်နှိပ်သည့်အချိန်ကို ပရင့်ထုတ်သည်။ တစ်ချိန်တည်းတွင် ယူနစ်သည် 170000 ဟုပြောသည်၊ $ ကြောင့် A နှင့် B ၏တန်ဖိုး မည်ကဲ့သို့ကွာခြားသည်ကို ကျွန်ုပ်တို့မြင်နိုင်သည် ။ပြသခြင်း။ နှင့် $စောင့်ကြည့် ထုတ်ပြန်ချက်များ။
GTKWave ဆော့ဖ်ဝဲ
GTKWave သည် အပြည့်အဝထူးခြားသော GTK+ လှိုင်းတစ်ခုဖြစ်သည်။ viewLXT၊ LXT32၊ VZT၊ FST နှင့် GHW ကိုဖတ်သော Unix၊ Win2 နှင့် Mac OSX အတွက် er files အပြင် စံ VCD/EVCD files နှင့်၎င်းတို့၏ခွင့်ပြု viewထောင်း။ ၎င်း၏တရားဝင် website မှာရှိပါတယ်။ http://gtkwave.sourceforge.net/ . GTKWave က အကြံပြုထားပါတယ်။ viewer Icarus Verilog simulation tool မှ။
အသုံးပြုသူသည် ဒီဇိုင်း၏လုပ်ဆောင်နိုင်စွမ်းကို စမ်းသပ်ရန်အတွက် testbench တစ်ခုကို အောင်မြင်စွာဖန်တီးပြီးသည်နှင့်၊ အသုံးပြုသူသည် ယခု GTKWave ဆော့ဖ်ဝဲကို အသုံးပြုနိုင်သည်။ view လှိုင်းပုံစံများ။
GTKWave ဆော့ဖ်ဝဲကို စတင်ရန် view လှိုင်းပုံစံများ၊ အသုံးပြုသူသည် ကိရိယာဘား၏ထိပ်ရှိ Simulate Testbench ခလုတ်ကို နှိပ်ရန် သို့မဟုတ် ပင်မမီနူး Tools → Simulation → Simulate Testbench ကို နှိပ်ရန်လိုအပ်သည်။ အထားအသိုအမှားအယွင်းများမရှိပါက၊ ဒီဇိုင်းပေါ်မူတည်၍ GTKWave ကို အလိုအလျောက်စတင်သင့်သည် သို့မဟုတ် testbench ရှိ လှုံ့ဆော်မှုရလဒ်များကို window ၏ Logger ကဏ္ဍတွင်ပြသမည်ဖြစ်ပါသည်။
GTKWave ဆော့ဖ်ဝဲသည် .vcd ဖော်မတ် အမှိုက်ပုံးကို ဖွင့်ပေးသည်။file အလိုအလျောက်။ GTKWave ဝင်းဒိုးသည် ၎င်းကိုဖွင့်သည့်အခါ လှိုင်းပုံစံကို ပြသမည်မဟုတ်ပါ။ ၎င်းသည် အသုံးပြုသူအား ၎င်းလိုချင်သည့် အချက်ပြမှုများကို ရွေးချယ်ရန် အခွင့်အရေးပေးသည်။ view စောင့်ကြည့်ပါ။ အချက်ပြမှုကို ရွေးချယ်ရန်၊ အသုံးပြုသူသည် ပြသရန် လိုအပ်သည်၊ အသုံးပြုသူသည် SST တက်ဘ်အောက်ရှိ ဝင်းဒိုး၏ ဘယ်ဘက်ခြမ်းရှိ ၎င်းတို့၏ module/instance အမည်ကို နှိပ်ရပါမည်။ စံနမူနာတိုင်း၏ + ကိုနှိပ်ခြင်းဖြင့်၊ အောက်ဆုံးအပိုင်းရှိ ထိုဥပမာနှင့်ဆက်စပ်နေသည့် အချက်ပြမှုများကို သင်တွေ့မြင်နိုင်ပါသည်။ ထို့နောက် သင်သည် လိုချင်သောအချက်ပြမှုကို ဆွဲယူ၍ ချနိုင်သည် သို့မဟုတ် ၎င်းတို့ကို Signals ဝင်းဒိုးတွင်ပြသရန် ၎င်းတို့ကို နှစ်ချက်နှိပ်နိုင်သည်။ အားလုံးကို (CTRL + A) ကိုရွေးချယ်ပြီး အချက်ပြပြတင်းပေါက်တွင် ထည့်သွင်းနိုင်သည် (ပုံ 9 ကိုကြည့်ပါ)။
အချက်ပြမှုများကို ယခု signal window တွင် ထည့်သွင်းထားသော်လည်း ၎င်းကို အတုယူမရသေးပါ။ လိုချင်သောအချက်ပြမှုများကို signal window တွင်ထည့်ပြီးနောက်၊ ကိုနှိပ်ပါ။ ပြတင်းပေါက်၏ လက်ရှိအကျယ်နှင့် ကိုက်ညီစေရန် အချက်ပြမှုများကို ပြန်လည်စတင်ခြင်းမှ အချက်ပြမှုများကို ပြန်လည်စတင်ပါ။
ကိရိယာဘားပေါ်တွင် သင်္ကေတပေါ်လာသည်။ ယခုသင်သည် ၎င်းတို့၏ သက်ဆိုင်ရာတန်ဖိုးများဖြင့် အချက်ပြမှုများကို မြင်နိုင်ပါပြီ။
အချက်ပြတန်ဖိုးများ
ပုံမှန်အားဖြင့်၊ signal များ၏တန်ဖိုးများသည် hexadecimal ဖော်မတ်ဖြစ်ပြီး လှိုင်းများအားလုံးသည် အစိမ်းရင့်ရောင်ဖြစ်သည် (မှန်မှန်ကန်ကန်လည်ပတ်နေပါက)။
အသုံးပြုသူသည် signal ပေါ်တွင် right-click နှိပ်ပြီး ဒေတာဖော်မတ် သို့မဟုတ် အရောင်ဖော်မတ်ကို ရွေးချယ်ခြင်းဖြင့် ဤ signal ၏ ဂုဏ်သတ္တိများကို ပြောင်းလဲနိုင်သည်။ အသုံးပြုသူသည် အချက်ပြအုပ်စုများကြားတွင် အပိုင်းများပြုလုပ်ရန် ဗလာအချက်ပြမှုကိုလည်း ထည့်သွင်းနိုင်သည်။ သင့်တွင် လိုချင်သော optical ရလဒ်ရရှိသောအခါ၊ သင်သည် သွားခြင်းဖြင့် သင်၏ဖွဲ့စည်းပုံများကို သိမ်းဆည်းနိုင်သည်။ File → Save ကိုရေးပါ။ File.
GTKWave Toolbar
ကိရိယာဘား (ပုံ 10 ကိုကြည့်ပါ) သည် သုံးစွဲသူအား အချက်ပြမှုအတွက် အခြေခံလုပ်ဆောင်ချက်များကို လုပ်ဆောင်ရန် ခွင့်ပြုသည်။ ကိရိယာဘားရှိ ဘယ်မှညာမှ ရွေးချယ်မှုတစ်ခုစီကို ဆွေးနွေးကြည့်ကြစို့။
- မီနူး ရွေးချယ်မှုများ: ဤရွေးချယ်မှုအောက်တွင် ကျွန်ုပ်တို့လုပ်နိုင်သည် view ဆော့ဖ်ဝဲလ်ဖြင့် ကစားရန် အသုံးပြုနိုင်သည့် ဆော့ဖ်ဝဲလ်၏ အမျိုးမျိုးသော အင်္ဂါရပ်အားလုံး။ ဤမီနူးရွေးချယ်မှုအောက်ရှိ အသေးစိတ်အချက်အလက်များကို ဤအသုံးပြုသူလမ်းညွှန်၏ အပိုင်း 8 တွင် အကျုံးဝင်ပါသည်။
- ခြေရာများဖြတ်ပါ။: signal window မှ ရွေးချယ်ထားသော signal ကို ဖျက်/ဖြတ်ရန် အသုံးပြုသည်။
- ခြေရာများကို ကူးယူပါ။: signal window မှ ရွေးချယ်ထားသော signal ကို ကူးယူရန် အသုံးပြုသည်။
- ခြေရာများကို ကူးထည့်ပါ။: ကူးယူထားသော/ဖြတ်ထားသော ခြေရာခံအား အချက်ပြဝင်းဒိုးရှိ မတူညီသောတည်နေရာတွင် ကူးထည့်နိုင်ပါသည်။
- Zoom Fit: အသုံးပြုသူရွေးချယ်သည့် ဝင်းဒိုးအရွယ်အစားအလိုက် အချက်ပြမှုများကို အံဝင်ခွင်ကျဖြစ်စေရန် အသုံးပြုသည်။
- ချဲ့ကြည့်ပါ။: အချက်ပြဝင်းဒိုးတွင် ဇူးမ်ချဲ့ရန် အသုံးပြုသည်။
- ချဲ့ကြည့်ပါ။: အချက်ပြဝင်းဒိုးကို ချဲ့ရန် အသုံးပြုသည်။
- Zoom လုပ်တော့: signal window တွင် zoom in/out ကို ပြန်ဖျက်ရန် အသုံးပြုသည်။
- စတင်ရန် ချဲ့ပါ။: ၎င်းသည် အချက်ပြမှုများ၏ စတင်ချိန်ကိုပြသသည့် အချက်ပြဝင်းဒိုးကို ဇမ်ချဲ့မည်ဖြစ်သည်။
- အဆုံးထိ ချဲ့ပါ။: ၎င်းသည် အချက်ပြမှုများ၏ အဆုံးအချိန်ကို ပြသသည့် အချက်ပြဝင်းဒိုးကို ဇူးမ်ချဲ့ပါမည်။
- ယခင်အစွန်းကိုရှာပါ။: ၎င်းသည် ယခင်အစွန်းကို ညွှန်ပြသည့် အမှတ်အသားကို ဘယ်ဘက်သို့ ရွှေ့သည်။
- နောက်အစွန်းကိုရှာပါ။: ၎င်းသည် နောက်အစွန်းကို ညွှန်ပြသည့် အမှတ်အသားကို ညာဘက်သို့ ရွှေ့သည်။
- အောက်/အပေါ် နှောင်ကြိုးကို ရွှေ့ပါ။: ၎င်းကို အသုံးပြု၍ အသုံးပြုသူ ပြသလိုသည့် အချိန်ဘောင်ကို ကျွန်ုပ်တို့ သတ်မှတ်နိုင်သည်။ ဟောင်းအတွက်ampအချိန်ဘောင်ကို 0 sec မှ 500 ns အထိ သတ်မှတ်နိုင်သည်၊ ၎င်းသည် ထိုကြာချိန်အောက်တွင် အချက်ပြမှုများကိုသာ ပြသမည်ဖြစ်သည်။
- ပြန်လည်စတင်ရန်- ပြသထားသည့်အချက်ပြမှုသို့ ပြောင်းလဲသွားသည့်အခါတိုင်း ပြန်လည်စတင်ခြင်းကို နှိပ်သည်။ ၎င်းသည် ကန့်သတ်ချက်အသစ်အရ အချက်ပြမှုကို ပြန်လည်စတင်ပြီး ပြသမည်ဖြစ်သည်။ ဟောင်းအတွက်ample၊ signal ၏အချိန်ဘောင်ကိုပြောင်းလဲပြီးနောက်၊ သတ်မှတ်အချိန်ဘောင်အသစ်တွင် signal ကိုပြသရန် signal ကိုပြန်လည်စတင်ရန်လိုအပ်သည်။
မီနူး ရွေးချယ်မှုများ
GTKWave ဆော့ဖ်ဝဲ၏ ဘယ်ဘက်အပေါ်ထောင့်မှ၊ သုံးစွဲသူသည် ဒေါင်လိုက်မျဉ်းကြောင်းသုံးခုကို နှိပ်ခြင်းဖြင့် မီနူးရွေးချယ်မှုများကို ဝင်ရောက်ကြည့်ရှုနိုင်သည် (ပုံ 11 ကိုကြည့်ပါ)။ အသုံးပြုသူသည် မီနူးရွေးချယ်မှုများအောက်တွင် အောက်ပါရွေးချယ်စရာများကို ရှာတွေ့နိုင်သည်-
File
ဟိ File မီနူးတွင် ဝင်ရောက်ကြည့်ရှုခြင်းနှင့် ပတ်သက်သည့် အကြောင်းအရာ အမျိုးမျိုး ပါရှိသည်။ files၊ တင်သွင်း-တင်ပို့ခြင်း VCD files၊ ပုံနှိပ်ခြင်းနှင့် စာဖတ်ခြင်း/ရေးခြင်း files နှင့် ထွက်ခြင်း
တည်းဖြတ်ပါ။
တည်းဖြတ်မှု အခွဲမီနူးကို လှိုင်းခွဲဝင်ဒိုးရှိ တန်ဖိုးများ၏ ဒေတာကိုယ်စားပြုမှုကို ပြောင်းလဲခြင်းကဲ့သို့သော အသုံးဝင်သည့်လုပ်ဆောင်ချက်များကို လုပ်ဆောင်ရန် အသုံးပြုသည်။ တည်းဖြတ်သည့် မီနူးအောက်ရှိ ရွေးချယ်စရာများကို အသုံးပြု၍ အသုံးပြုသူသည် အချက်ပြများ၏ ဒေတာဖော်မတ်ကို ပြောင်းလဲနိုင်သည်၊ ၎င်းတို့ကို ပြန်လည်စီတန်းစီရန်၊ ၎င်းတို့ကို ရွှေ့ရန်၊ ၎င်းကို ချုံ့ရန်၊ ၎င်းကို မီးမောင်းထိုးပြရန်၊ အုပ်စုအချက်ပြမှုများ၊ အချက်ပြများအပေါ် မှတ်ချက်ပေးခြင်း၊ အချက်ပြမှုများ၏ အရောင်ပြောင်းလဲခြင်း စသည်ဖြင့် ပြုလုပ်နိုင်သည်။
ရှာရန်
ရှာဖွေရေး မီနူးကို အသားတင်အမည်များနှင့် တန်ဖိုးများကို ရှာဖွေမှုများ လုပ်ဆောင်ရန် အသုံးပြုသည်။ ၎င်းသည် VCD ရှိ အချက်ပြမှုများနှင့် ဖြစ်ရပ်များ၏ မတူညီသော အထက်တန်းအဆင့်များပေါ်တွင် လုပ်ဆောင်ချက်များကို လုပ်ဆောင်ရန် ကူညီပေးသည်။ file.
အချိန်
အချိန်အခွဲမီနူးတွင် လမ်းညွှန်မှုများနှင့် အခြေအနေအကန့်ခလုတ်များမှ လုပ်ဆောင်သည့် လုပ်ဆောင်ချက်များ၏ စူပါဆက်ပါရှိသည်။
၎င်းသည် ရိုးရှင်းသော၊ အချိန်နှင့်သက်ဆိုင်သော၊ ဇူးမ်ချဲ့ခြင်း၊ သီးခြားအချိန်အမှတ်သို့ ရွှေ့ခြင်း၊ အချက်ပြလမ်းကြောင်းတစ်ခုသို့ ပြောင်းခြင်းစသည့် လုပ်ဆောင်ချက်များကို လုပ်ဆောင်နိုင်သည် ။
အမှတ်အသား
အမှတ်အသားခွဲမီနူးကို အမှတ်အသားပေါ်ရှိ အမျိုးမျိုးသော ခြယ်လှယ်မှုများကို လုပ်ဆောင်ရန်နှင့် မျက်နှာပြင်မှ လှိမ့်ခြင်းကို ထိန်းချုပ်ရန်အတွက် အသုံးပြုပါသည်။
၎င်းသည် signal window တွင် မြောက်မြားစွာသော အမှတ်အသားများကို ပေါင်းထည့်ခြင်း၏ လုပ်ဆောင်နိုင်စွမ်းကို ဖွင့်ပေးသည်။ အများဆုံးအမည် အမှတ်အသား ၂၆ ခုကို ခွင့်ပြုထားပြီး အားလုံးအတွက် အချိန်များ ကွဲပြားရပါမည်။
a. အချက်ပြဝင်းဒိုးတွင် အမှတ်အသားများကို ထည့်ရန်
Marker ထားရှိလိုသည့် လိုအပ်သည့်နေရာတွင် ဘယ်ကလစ်နှိပ်ပြီး ALT + N ကိုနှိပ်ပါ။ ၎င်းသည် လိုအပ်သည့်နေရာတွင် အမည်ပေးထားသည့် အမှတ်အသား (A,B,C, etc.) ကို နေရာချပေးမည်ဖြစ်သည်။ အသုံးပြုသူသည် မတူညီသော အချိန်တည်နေရာ 26 ခုအတွက် ဆက်လက်လုပ်ဆောင်နိုင်ပါသည်။
နေရာအမှတ်အသားများအားလုံးရှိ အချိန်တန်ဖိုးကို နှိုင်းယှဉ်ရန်၊ မီနူး → အမှတ်အသားများ → ပြောင်းလဲခြင်း အမှတ်အသားဒေတာကို ပြသပါ။
၎င်းသည် အမှတ်အသားတစ်ခုစီရှိ အချိန်တန်ဖိုးနှင့်အတူ ဝင်းဒိုးတစ်ခုကို ဖွင့်ပါမည်။ အသုံးပြုသူသည် သတ်မှတ်အမှတ်အသားတစ်ခုစီရှိ အချိန်တန်ဖိုးကို ကိုယ်တိုင်မှတ်သားနိုင်ပြီး အမှတ်အသား 2 ခုကြား အချိန်ကွာခြားချက်ကို တွက်ချက်ရန် ၎င်းတို့ကို နုတ်ယူနိုင်သည်။
b. အချက်ပြဝင်းဒိုးရှိ Marker ကိုဖယ်ရှားရန်
အသုံးပြုသူသည် Menu → Markers → Collect Named Marker သို့သွားနိုင်သည်။ ၎င်းသည် အချက်ပြဝင်းဒိုးတွင် ထည့်ထားသော နောက်ဆုံးအမည် အမှတ်အသားကို ဖယ်ရှားပါမည်။ အသုံးပြုသူသည် Menu → Markers → Collect All Named Marker (ပုံ 12) သို့သွားခြင်းဖြင့် အမည်ရှိ အမှတ်အသားများအားလုံးကို ဖယ်ရှားနိုင်သည်။
ပုံ 13 တွင်၊ အချက်ပြအရောင်များကို မည်သို့ပြောင်းလဲထားသည်ကို ကျွန်ုပ်တို့တွေ့မြင်နိုင်ပါသည်။ အချက်ပြပြတင်းပေါက်တွင် ထည့်သွင်းထားသော Blank Signal ကို မှတ်ချက်- Blank Signal ဖြင့် ကြည့်ရှုနိုင်သည်။
အမည်ပေးထားသော အမှတ်အသား (A – E) နှင့် ဤအမှတ်အသားများအကြား အချိန်တန်ဖိုးကို ps ဖြင့် ပေါင်းထည့်ခြင်းကိုလည်း သတိပြုပါ။
View
ဟိ View submenu ကို status item များ၏ graphical rendering နှင့် signal sub window အတွင်းရှိ values များနှင့် ပတ်သက်သော အမျိုးမျိုးသော attribute များကို ထိန်းချုပ်ရန်အတွက် အသုံးပြုပါသည်။ ဤမီနူးမှ၊ သင်သည် အချက်ပြဝင်းဒိုးကို အနက်ရောင်နှင့် အဖြူရောင် သို့မဟုတ် ရောင်စုံအဖြစ် ပြောင်းနိုင်သည်။ ဟိ View submenu သည် သင့်အား စက္ကန့် (စက္ကန့်) မှ ficoseconds (fs) မှ အချိန် Dimension ကို ပြောင်းလဲနိုင်သည်။ အသုံးပြုသူသည် ဤရွေးချယ်မှုကို ရှာဖွေနိုင်သည်။ View → အချိန်အတိုင်းအတာမှ အတိုင်းအတာ → fs။
ကူညီကြပါ
အကူအညီ မီနူးတွင် အွန်လိုင်းအကူအညီကို ဖွင့်ရန် ရွေးချယ်မှုများအပြင် ပရိုဂရမ်ဗားရှင်းအချက်အလက်ကို ပြသရန် ရွေးချယ်မှုများပါရှိသည်။
နိဂုံး
လိုအပ်သော testbench ကို မူကြမ်းပြင်ဆင်ခြင်းနှင့် လှိုင်းပုံစံများကိုပြသရန်နှင့် ရလဒ်များကိုကြည့်ရှုရန် GTKWave နှင့်အတူ Icarus Verilog ကို အသုံးပြုခြင်းဖြင့် ၎င်းတို့၏ ဒီဇိုင်းကို အောင်မြင်စွာ အတုယူကာ လုပ်ဆောင်နိုင်စွမ်းကို စိစစ်ရာတွင် အသုံးပြုသူများအား ကူညီရန် ဤစာရွက်စာတမ်းကို ဖန်တီးထားပါသည်။
ပြန်လည်ပြင်ဆင်မှုမှတ်တမ်း
ပြန်လည်ပြင်ဆင်ခြင်း။ | ရက်စွဲ | ဖော်ပြချက် |
1.00 | မေ ၃၁၊ ၂၀၂၄ | ကနဦး ထုတ်ဝေမှု။ |
R19US0011EU0100 Rev.1.0
မေ ၃၁၊ ၂၀၂၄
© 2024 Renesas အီလက်ထရွန်းနစ်
စာရွက်စာတမ်းများ / အရင်းအမြစ်များ
![]() |
RENESAS ForgeFPGA ဆော့ဖ်ဝဲလ် သရုပ်သကန် [pdf] အသုံးပြုသူလမ်းညွှန် REN_r19us0011eu0100၊ ForgeFPGA ဆော့ဖ်ဝဲ သရုပ်သကန်၊ ForgeFPGA ဆော့ဖ်ဝဲ၊ ForgeFPGA၊ ForgeFPGA သရုပ်သကန်၊ ဆော့ဖ်ဝဲလ် သရုပ်သကန်၊ သရုပ်သကန်၊ ဆော့ဖ်ဝဲ |