?? 我的仿真工作流程.txt
字號:
這是獻給大家的第二篇,文章詳細說明了本人近一年來,自己摸索出來的一套仿真工作流程。接觸過Modelsim這類軟件的朋友可能都會感覺上手比較困難,原因有二:一、對仿真機制不了解,對基于source+testbench的工作流程不熟悉(大多數朋友接觸FPGA仿真可能以waveform的方式);二、對軟件的安裝和使用不熟悉,Modelsim軟件破解和平時常用軟件相比要麻煩一些,也不像常用軟件那樣易于上手。即使入門了,也不一定能夠熟練使用,相信很多朋友后仿過程中都碰到過back-annotation error的問題:)與大家一樣,我也是這樣一步步摸索出來的……
設計語言完全采用verilog, 設計工具采用ModelSim + Debussy。目前我的工作平臺是Windows, 使用的版本是ModelSim6.2a + Debussy5.3v9。
為了便于管理,在文件夾的管理上采用分級管理。舉一個例子:如果頂層模塊是A1;A1劃分為B1,B2,B3;B1又劃分為C1,C2,B2劃分為C3, C4,B3劃分為C5,C6。那么一共建立10個文件夾,分別命名為A1, B1, B2, B3, C1, C2, C3, C4, C5, C6。在各文件夾中存放相應的設計源文件.v和testbench文件.v,這樣可以避免單個文件夾中文件過多,給管理上帶來不便。
ModelSim有三種操作模式:GUI、Command-line和Batch。GUI模式比較麻煩,又要敲鍵盤,又要點鼠標,對我這樣的懶人不合適:)而且初學者在做后仿的時候,.sdf文件的back-annotation比較難掌握。我推薦的是采用編寫.do文件或.bat文件的工作方式。. do文件的編寫可以參照ISE自動生成的.fdo(功能仿真)和.tdo(后仿)文件。通過ISE調用ModelSim進行仿真,在工程的文件夾下會生成 *.fdo和*.tdo的文件,用編輯器打開文件查看,是諸如此類的一些命令:
## NOTE: Do not edit this file.
## Auto generated by Project Navigator for Post-PAR Simulation
##
vlib work
## Compile Post-PAR Model
vlog "C:/test/netgen/par/shift_reg_timesim.v"
vlog "testbench.v"
vlog "C:/Xilinx/verilog/src/glbl.v"
vsim -novopt +maxdelays -L simprims_ver -lib work testbench glbl
do {testbench.udo}
view wave
add wave *
add wave .glbl.GSR
view structure
view signals
run 10us
## End
這些命令并不一定都要寫上,可以根據自己的需要加以精簡,比如一個功能仿真的fsim.do文件如下所示:
vlib work
vlog "PCMSyn.v"
vlog "Timing.v"
vlog "Search.v"
vlog "FSM.v"
vlog "test.v"
vsim -t 1ns -lib work test
view wave
add wave *
view structure
view signals
run 4ms
用ModelSim也可以查看波形圖和進行調試,但是Debussy查錯比較方便,下面說明如何利用ModelSim和Debussy進行仿真和調試。
在testbench文件中initial begin后需添加兩條語句:
$fsdbDumpfile("test.fsdb"); //文件名隨便起
$fsdbDumpvars;
點擊圖標或在cmd下敲vsim啟動ModelSim GUI,在Transcript窗口cd到該模塊的文件夾下,運行do *.do(*.do為仿真的do文件,比如fsim.do)。ModelSim有個不好的地方,如果仿真波形不對,可能需要查看中間信號以便定位錯誤,這時用add wave命令添加中間信號后,需要重新run一次,才能看到這些中間信號的值。而采用Debussy查看ModelSim生成的.fsdb文件的話,添加信號后立即就可看到值,給調試帶來很大的方便。另外,Debussy還有個很有用的功能叫做active annotation,在nWave窗口點擊波形圖上的不同時間點,nTrace和nScheme的源代碼和示意圖上的表示出的信號值會隨之變化,也大大方便了查錯。關于Debussy的使用方法,請大家參考幫助文檔,我只結合自己使用的經驗強調2點:
1.在打開.fsdb文件之前,先在nTrace窗口Import Design一下,選擇From File,Add所有相關的設計源文件和testbench文件,否則在nWave窗口打開.fsdb文件,用Get Signal添加信號后會顯示NF。另外,在Get Signal之前請將ModelSim關掉,否則好像還是會顯示NF。
2.再強調一遍,Import Design的時候要將testbench文件也添加進去,否則啟動active annotation后,所有信號都會顯示NF!這個問題曾郁悶了我很久,所以特別提出來。
可能大家都發現ModelSim的主要作用是產生.fsdb文件,我們并沒有用它來進行查錯,完全沒必要啟動GUI。這個問題我思考了很久,最后在網友 hamamdu的幫助下解決了這個問題。用文本編輯器生成一個.bat文件,文件內容和.do文件差不多,不過語句到vsim命令為止,此外vsim命令也要做一些修改,添加-c參數。下面給出一個.bat的例子:
vlib work
vlog "PCMSyn.v"
vlog "Timing.v"
vlog "Search.v"
vlog "FSM.v"
vlog "test.v"
vsim -c work.test
運行這個.bat文件后,將會出現VSIM 1>提示,這時輸入run 4ms,回車,將提示fsdb文件產生好了。
經我試驗,開啟Optimization后,對Command-line操作模式沒有影響,但是最后一條語句不可寫成vsim -c test,雖然這樣也可產生fsdb文件,但是啟動active annotation后Debussy軟件會報錯:(
寫的比較倉促,大家試驗中發現什么問題,請及時提出來:)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -