環(huán)境配置
首先搭建好vcs和Verdi都能工作的環(huán)境,主要有l(wèi)icense問題,環(huán)境變量的設(shè)置。在220實(shí)驗(yàn)室的服務(wù)器上所有軟件的運(yùn)行環(huán)境都是csh。所以,所寫的腳本也都是csh的語法。
生成波形文件
Testbench的編寫
若想用Verdi觀察波形,需要在仿真時(shí)生成fsdb文件,而fsdb在vcs或者modelsim中的生成是通過兩個(gè)系統(tǒng)調(diào)用$fsdbDumpfile $fsdbDumpvars來實(shí)現(xiàn)的。而這兩個(gè)系統(tǒng)調(diào)用并不是Verilog中規(guī)定的,是Verdi以pli(Programming Language Interface)的方式實(shí)現(xiàn)的。這就需要讓vcs編譯時(shí)能找到相應(yīng)的庫。
首先在testbench中需加入以下語句
`ifdef DUMP_FSDB
initialbegin
$fsdbDumpfile(“test.fsdb”);
$fsdbDumpvars;
end
`endif
這個(gè)編譯開關(guān)在用vcs編譯時(shí)加入+define+DUMP_FSDB選項(xiàng)就可以打開,也可以在define.v文件中定義DUMP_FSDB這個(gè)宏。
我們現(xiàn)在所接觸的仿真波形文件主要有
? Wlf文件: WLF波形日志文件,是modelsim的專用文件。這個(gè)wlf文件只能是由modelsim來生成,也只能通過modelsim來顯示。在用modelsim做仿真時(shí),仿真結(jié)束都會(huì)生成一個(gè)*.wlf的文件(默認(rèn)是vsim.wlf)。下次就可以通過通過modelsim直接打開這個(gè)保存下來的波形。vsim -view vsim.wlf -do run.do其中run.do中的內(nèi)容為要查看的波形信號(hào)。要強(qiáng)調(diào)的是不是一個(gè)通用的文件文件格式。
? VCD文件:VCD 是一個(gè)通用的格式。 VCD文件是IEEE1364標(biāo)準(zhǔn)(Verilog HDL語言標(biāo)準(zhǔn))中定義的一種ASCII文件??梢酝ㄟ^Verilog HDL的系統(tǒng)函數(shù)$dumpfile,$dumpvars等來生成。我們可以通過$dumpvars的參數(shù)來規(guī)定我們抽取仿真中某個(gè)特定模塊和信號(hào)的 VCD數(shù)據(jù)。它主要包含了頭信息,變量的預(yù)定義和變量值的變化信息。正是因?yàn)樗诵盘?hào)的變化信息,就相當(dāng)于記錄了整個(gè)仿真的信息??梢杂眠@個(gè)文件來再現(xiàn)仿真,也就能夠顯示波形。另外我們還可以通過這個(gè)文件來估計(jì)設(shè)計(jì)的功耗。因?yàn)閂CD是 Verilog HDL語言標(biāo)準(zhǔn)的一部分,因此所有的verilog的仿真器都要能實(shí)現(xiàn)這個(gè)功能。因此我們可以在verilog代碼中通過系統(tǒng)函數(shù)來dump VCD文件。另外,我們可以通過modelsim 命令來dump VCD文件,這樣可以擴(kuò)展到VHDL中。具體的命令: vcd file myfile.vcd vcd add /test/dut/* 這個(gè)就生成一個(gè)含dut下所有信號(hào)的VCD數(shù)據(jù)信息。我們?cè)谑褂脕磉M(jìn)行仿真 vsim -vcdstim myfile.com test;add wave /*;run -all;
? FSDB文件:fsdb文件是verdi使用一種專用的數(shù)據(jù)格式,類似于VCD,但是它是只提出了仿真過程中信號(hào)的有用信息,除去了VCD中信息冗余,就像對(duì) VCD數(shù)據(jù)進(jìn)行了一次huffman編碼。因此fsdb數(shù)據(jù)量小,而且會(huì)提高仿真速度。我們知道VCD文件使用verilog內(nèi)置的系統(tǒng)函數(shù)來實(shí)現(xiàn) 的,fsdb是通過verilog的PLI接口來實(shí)現(xiàn)的。$fsdbDumpfile,$fsdbDumpvars等 另外,在VCS仿真器中還有一種VCD+的數(shù)據(jù)格式VPD,詳細(xì)情況參照VCS的使用。 注意:WIF:波形中間格式;WLF:波形日志文件。由于在ModelSim下只能打開WLF文件 使用ModelSim行命令vcd2wlf 將VCD文件轉(zhuǎn)化為WLF文件。
而在dump fsdb文件需要幾個(gè)文件,Verdi.tab, pli.a 以及與仿真器相應(yīng)版本的.so庫文件(需要修改LD_LIBRARY_PATH變量)。而這些目錄在以往的版本中是比較凌亂的。
在Verdi200907版本之后它的dumper就做了統(tǒng)一化的處理:
How to Link the New Unified Dumper?
Prerequisites:
? ${NOVAS_INST_DIR} :
Verdi/Siloti install directory.
? ${PLATFORM} :
LINUX: Linux OS (32-bit)
LINUX64: Linux OS (64-bit)
SOL2: SunOS 5.x (32-bit)
SOL7: SunOS 5.x (64-bit)
IBM5: IBM 5.1
? Tab file:
novas.tab
? LD_LIBRARY_PATH
${NOVAS_INST_DIR}/share/PLI/lib/${PLATFORM} needs to be added as one of the
LD_LIBRARY_PATH searching paths all the time.
? Novas banner:
*Novas*
? novas.vhd file:
For VHDL and mixed language users who transfer from the old FSDB dumper, the first time use of new unified FSDB dumper needs the “novas.vhd” to be re-compiled (or re-analyzed) if the FSDB dumping commands have been specified in the VHDL design.
The related unified dumper directories are:
- ${NOVAS_INST_DIR}/share/PLI/VCS
- ${NOVAS_INST_DIR}/share/PLI/MODELSIM
- ${NOVAS_INST_DIR}/share/PLI/IUS
- ${NOVAS_INST_DIR}/share/PLI/lib
在我設(shè)的vcs環(huán)境中(csh)中設(shè)計(jì)的腳本如下
#!/bin/tcsh
if(-esimv)then
\rm-rsimv
endif
if(-esimv.daidir)then
\rm-rfsimv.daidir
endif
if(-ecsrc*)then
\rm-rfcsrc
endif
vcs0809
#verdi env setting
setPLATFORM=LINUX
setNOVAS_INST_DIR=/opt/spring/verdi201004
setenvLD_LIBRARY_PATH${NOVAS_INST_DIR}/share/PLI/lib/${PLATFORM}:${LD_LIBRARY_PATH}
vcs -l vcs.log \
-notice \
-line -debug_all \
-P $NOVAS_INST_DIR/share/PLI/VCS/$PLATFORM/novas.tab \
$NOVAS_INST_DIR/share/PLI/VCS/$PLATFORM/pli.a \
-f vcs.args
。/simv
需要注意:
- Csh中設(shè)置環(huán)境變量,需把環(huán)境變量用{}括起來,這一點(diǎn)我試了很多次,它確實(shí)不如bash的解析器更加智能。
- 在220的服務(wù)器上,vcs的版本是201006的,而Verdi的版本時(shí)間比較低,編譯時(shí)會(huì)提示,相應(yīng)的libsscore_vcs201006.so文件找不到?,F(xiàn)在我用的Verdi的版本是201004,而vcs的版本是200809
其中的vcs.args的參考腳本如下(以intra mode decision為例)
+libext+.v
+v2k
+acc
+define+DUMP_FSDB
-y http://www.cnblogs.com/rtl
-work work
//
// Testbench files
//
+incdir+http://www.cnblogs.com/bench
http://www.cnblogs.com/bench/tb_ip_mode_decision.v
// RTL files
//
+incdir+http://www.cnblogs.com/rtl
http://www.cnblogs.com/rtl/ip_mode_decision.v
http://www.cnblogs.com/rtl/defines.v
http://www.cnblogs.com/rtl/timescale.v
在csh中運(yùn)行
。/run_vcs
即可生成Verdi所需要的fsdb文件
之后運(yùn)行以下命令啟動(dòng)Verdi
verdi -2001 -f vcs.args -ssf test.fsdb
Verdi調(diào)試
Verdi調(diào)試主要分為以下幾步
? Load design and testbench into Debussy;
? 打開nWave,載入對(duì)應(yīng)的FSDB;
? 在nTrace中將要觀察的信號(hào)通過鼠標(biāo)中鍵Drag&Drop拖放到nWave中;
? 通常都是在波形上發(fā)現(xiàn)問題,找到錯(cuò)誤地方并雙擊鼠標(biāo),會(huì)自動(dòng)跳到Real driver statement,也即會(huì)跳到源代碼所在。
? nTrace中,Active Annotation(快捷鍵X)標(biāo)出仿真結(jié)果在source code下;
? 在先前driver statement中找個(gè)driver來使用active trace來追蹤有效驅(qū)動(dòng)。
Verdi就是之前的Debussy,在調(diào)試時(shí)有著諸多的優(yōu)點(diǎn),現(xiàn)在我感覺最基礎(chǔ)的幾點(diǎn)就是它
? 只需執(zhí)行一遍仿真就可以查看所有的波形,而在modelsim中則需要反復(fù)運(yùn)行add wave命令,每一次都要重新仿真。
? 可以查看設(shè)計(jì)的原理圖schematic,這非常方便查看每一個(gè)module和wire的所對(duì)應(yīng)的硬件結(jié)構(gòu),modelsim現(xiàn)在還沒有這個(gè)功能。
? 在仿真時(shí)可以很輕易地追蹤每個(gè)信號(hào)所對(duì)應(yīng)的源碼。
-
服務(wù)器
+關(guān)注
關(guān)注
12文章
9160瀏覽量
85425 -
波形
+關(guān)注
關(guān)注
3文章
379瀏覽量
31565 -
VCS
+關(guān)注
關(guān)注
0文章
79瀏覽量
9611
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論