比較建議的方式,還是學ASIC那招:『寫testbench先對每個module作前仿真,再對每個module作後仿真,最後再燒入FPGA測試。』 這種方式的優點是: 1.testbench比waveform editor可更靈活的描述電路規格。 2.testbench可使用Verilog的系統函數,如$display()、$fwrite()...等。 要使用testbench作仿真,單獨Qaurtus II並無法做到,就得使用ModelSim了,這又牽涉到『前仿真』與『後仿真』。 使用Quartus II的waveform editor作前仿真與後仿真。這種方式雖然可行,但僅適用於小project,若project越寫越大,Quartus II光做fitter就很耗時間,一整天下來都在作Quartus II編譯。 10 `timescale 1ns/100ps ---------------------------------------------------------------------- 10 `timescale 1ns/100ps 之所以一開始要將rst_n為0,是因為ModelSim與Quartus II對reg初始值看法不一樣,Quartus II認為reg初始值為0,但ModelSim認為reg初始值為x,所以需要rst_n=1'b0將reg歸0,這樣用ModelSim前仿才會正確,但ModelSim後仿可以不這樣做,因為Quartus II會先做處理。不過為了前仿與後仿都使用同一個testbench,建議加上rst_n = 1'b0設定reg初始值為0。 ModelSim提供了全GUI的方式,只要使用操作的方式,就能做前仿。 Step 1: Step 2: 將Counter.v與Counter_tb.v加入 Step 3: 選擇Counter.v或者Counter_tb.v,按滑鼠右鍵,選擇Compile->Compile All,編譯所有Verilog code。 編譯成功。 Step 4: 在Library tab選擇Counter_tb,按滑鼠右鍵,選Simulate。 Simulate成功。 Step 5: 將欲觀察的信號從Objects加入Wave,加入clk,rst_n與cnt。 最後結果。 Step 6: 最後前仿結果。 2.使用DO macro在ModelSim-Altera作前仿真 Step 1與Step 2與之前一樣。 Step 3: Counter_wave.do / ModelSim Macro
1 #compile
2 vlog Counter.v 3 vlog Counter_tb.v 4 5 #simulate 6 vsim Counter_tb 7 8 #probe signals 9 add wave * 10 11 #300 ns 12 run 300 ns
3.使用Quartus II + ModelSim-Altera作後仿真 Step 1: Assignments -> Settings -> Category :EDA Tool Settings -> Simulation:Tool name:ModelSim-Altera Step 2: 在同一頁的NativeLink settings選擇Compile test bench,按下TestBenches..加入Counter_tb.v。比較詭異的是,Test bench name、Top level module in test bench與Design instance name in test bench無法自己抓到,必須自己填。 Step 3: Processing -> Start Compilation |
使用ModelSim作前仿真與後仿真
使用ModelSim作前仿真與後仿真
2010-05-30 10:56
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.