環境配置
首先搭建好vcs和Verdi都能工作的環境,主要有license問題,環境變量的設置。在220實驗室的服務器上所有軟件的運行環境都是csh。所以,所寫的腳本也都是csh的語法。
生成波形文件
Testbench的編寫
若想用Verdi觀察波形,需要在仿真時生成fsdb文件,而fsdb在vcs或者modelsim中的生成是通過兩個系統調用$fsdbDumpfile $fsdbDumpvars來實現的。而這兩個系統調用并不是Verilog中規定的,是Verdi以pli(Programming Language Interface)的方式實現的。這就需要讓vcs編譯時能找到相應的庫。
首先在testbench中需加入以下語句
`ifdef DUMP_FSDB
initialbegin
$fsdbDumpfile(“test.fsdb”);
$fsdbDumpvars;
end
`endif
這個編譯開關在用vcs編譯時加入+define+DUMP_FSDB選項就可以打開,也可以在define.v文件中定義DUMP_FSDB這個宏。
我們現在所接觸的仿真波形文件主要有
? Wlf文件: WLF波形日志文件,是modelsim的專用文件。這個wlf文件只能是由modelsim來生成,也只能通過modelsim來顯示。在用modelsim做仿真時,仿真結束都會生成一個*.wlf的文件(默認是vsim.wlf)。下次就可以通過通過modelsim直接打開這個保存下來的波形。vsim -view vsim.wlf -do run.do其中run.do中的內容為要查看的波形信號。要強調的是不是一個通用的文件文件格式。
? VCD文件:VCD 是一個通用的格式。 VCD文件是IEEE1364標準(Verilog HDL語言標準)中定義的一種ASCII文件。可以通過Verilog HDL的系統函數$dumpfile,$dumpvars等來生成。我們可以通過$dumpvars的參數來規定我們抽取仿真中某個特定模塊和信號的 VCD數據。它主要包含了頭信息,變量的預定義和變量值的變化信息。正是因為它包含了信號的變化信息,就相當于記錄了整個仿真的信息。可以用這個文件來再現仿真,也就能夠顯示波形。另外我們還可以通過這個文件來估計設計的功耗。因為VCD是 Verilog HDL語言標準的一部分,因此所有的verilog的仿真器都要能實現這個功能。因此我們可以在verilog代碼中通過系統函數來dump VCD文件。另外,我們可以通過modelsim 命令來dump VCD文件,這樣可以擴展到VHDL中。具體的命令: vcd file myfile.vcd vcd add /test/dut/* 這個就生成一個含dut下所有信號的VCD數據信息。我們在使用來進行仿真 vsim -vcdstim myfile.com test;add wave /*;run -all;
? FSDB文件:fsdb文件是verdi使用一種專用的數據格式,類似于VCD,但是它是只提出了仿真過程中信號的有用信息,除去了VCD中信息冗余,就像對 VCD數據進行了一次huffman編碼。因此fsdb數據量小,而且會提高仿真速度。我們知道VCD文件使用verilog內置的系統函數來實現 的,fsdb是通過verilog的PLI接口來實現的。$fsdbDumpfile,$fsdbDumpvars等 另外,在VCS仿真器中還有一種VCD+的數據格式VPD,詳細情況參照VCS的使用。 注意:WIF:波形中間格式;WLF:波形日志文件。由于在ModelSim下只能打開WLF文件 使用ModelSim行命令vcd2wlf 將VCD文件轉化為WLF文件。
而在dump fsdb文件需要幾個文件,Verdi.tab, pli.a 以及與仿真器相應版本的.so庫文件(需要修改LD_LIBRARY_PATH變量)。而這些目錄在以往的版本中是比較凌亂的。
在Verdi200907版本之后它的dumper就做了統一化的處理:
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
在我設的vcs環境中(csh)中設計的腳本如下
#!/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中設置環境變量,需把環境變量用{}括起來,這一點我試了很多次,它確實不如bash的解析器更加智能。
- 在220的服務器上,vcs的版本是201006的,而Verdi的版本時間比較低,編譯時會提示,相應的libsscore_vcs201006.so文件找不到。現在我用的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中運行
。/run_vcs
即可生成Verdi所需要的fsdb文件
之后運行以下命令啟動Verdi
verdi -2001 -f vcs.args -ssf test.fsdb
Verdi調試
Verdi調試主要分為以下幾步
? Load design and testbench into Debussy;
? 打開nWave,載入對應的FSDB;
? 在nTrace中將要觀察的信號通過鼠標中鍵Drag&Drop拖放到nWave中;
? 通常都是在波形上發現問題,找到錯誤地方并雙擊鼠標,會自動跳到Real driver statement,也即會跳到源代碼所在。
? nTrace中,Active Annotation(快捷鍵X)標出仿真結果在source code下;
? 在先前driver statement中找個driver來使用active trace來追蹤有效驅動。
Verdi就是之前的Debussy,在調試時有著諸多的優點,現在我感覺最基礎的幾點就是它
? 只需執行一遍仿真就可以查看所有的波形,而在modelsim中則需要反復運行add wave命令,每一次都要重新仿真。
? 可以查看設計的原理圖schematic,這非常方便查看每一個module和wire的所對應的硬件結構,modelsim現在還沒有這個功能。
? 在仿真時可以很輕易地追蹤每個信號所對應的源碼。
-
服務器
+關注
關注
12文章
9308瀏覽量
86071 -
波形
+關注
關注
3文章
379瀏覽量
31660 -
VCS
+關注
關注
0文章
80瀏覽量
9647
發布評論請先 登錄
相關推薦
評論