FSDB(Fast Signal Database)是Verdi支持的文件格式,用於保存仿真產生的信號波形。據Verdi文檔說明,FSDB比標準的VCD格式節省磁盤空間,處理速度更快。要用VCS仿真器生成FSDB文件,就要調用Verdi提供的FSDB dumping命令,較經常使用的方法是在Testbench中調用。linux
首先要把FSDB dumper庫的路徑添加到LD_LIBRARY_PATH環境變量,32位Linux環境使用的C Shell命令格式以下:架構
if ($?LD_LIBRARY_PATH) then setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${NOVAS_HOME}/share/PLI/VCS/LINUX else setenv LD_LIBRARY_PATH ${NOVAS_HOME}/share/PLI/VCS/LINUX endif
注意:若是使用的是64位Linux,須要把LINUX替換成LINUX64,其餘操做系統參考Verdi文檔。後面步驟使用的路徑也要作一樣的替換。app
使用不一樣語言寫Testbench和設計文件,VCS和Verdi的命令格式不一樣,下面分狀況說明:post
1) Testbench和設計文件都用Verilog
Verilog中經常使用的FSDB dumping命令包括$fsdbDumpfile和$fsdbDumpvars等,調用格式以下:spa
$fsdbDumpfile("test.fsdb"); $fsdbDumpvars(1, Testbench.inst);
用VCS仿真時,須要使用-P選項調用FSDB dumper,命令格式以下:操作系統
vcs +v2k -R -nc -debug_pp -LDFLAGS -rdynamic -P ${NOVAS_HOME}/share/PLI/VCS/LINUX/novas.tab ${NOVAS_HOME}/share/PLI/VCS/LINUX/pli.a Testbench.v Counter.v
其中+v2k表示使用Verilog-2001標準,-R表示自動運行仿真,-nc表示不顯示版權信息,-debug_pp和-LDFLAGS -rdynamic是Verdi要求的選項。命令行
用以下命令啓動Verdi查看波形:debug
verdi -2001 Testbench.v Counter.v -ssf test.fsdb -sswr test.rc
其中-2001表示使用Verilog-2001標準,-ssf用於指定FSDB文件,-sswr用於指定一個配置文件,包含要顯示那些信號以及顯示格式等,該配置文件能夠在Verdi中配置完波形後生成。設計
示例文件:verilog
2) Testbench和設計文件都用VHDL
VHDL中經常使用的FSDB dumping命令包括fsdbDumpfile和fsdbDumpvars等,調用前須要引用Novas程序包,調用格式以下:
USE Work.Novas.ALL; fsdbDumpfile("test.fsdb"); fsdbDumpvars(1, "Testbench:Inst");
在VCS中仿真VHDL須要在當前目錄有一個synopsys_sim.setup文件,格式以下:
-- Mapping default work directory WORK > DEFAULT DEFAULT : ./work -- Library Mapping IEEE : $VCS_HOME/linux/packages/IEEE/lib SYNOPSYS : $VCS_HOME/linux/packages/synopsys/lib --Simulation variables ASSERT_STOP = ERROR TIMEBASE = ns TIME_RESOLUTION = 1 ps
其中./work是WORK庫對應的路徑,默認狀況下編譯到WORK庫中。也能夠使用不一樣的路徑,須要將./work修改成你使用的路徑。
用VCS仿真時,須要先編譯novas.vhd,該文件中的Novas程序包聲明瞭FSDB dumping命令及其使用的庫,所以不須要在命令行使用特別的選項,而後編譯VHDL文件,最後執行仿真,命令格式以下:
if (! -d work) mkdir work # Create work directory if not exist vhdlan -nc ${NOVAS_HOME}/share/PLI/VCS/LINUX/novas.vhd vhdlan -nc Testbench.vhd Counter.vhd vcs -R -nc -debug_pp Testbench__Arch
分步仿真VHDL須要在最後一步調用vcs時指定頂層配置/實體/架構,一種格式爲「實體名__架構名」,用兩個下劃線分隔,若是隻有一個架構,則能夠省略架構名。包含VHDL文件時必須指定頂層配置/實體/架構。
用以下命令啓動Verdi查看波形:
verdi -vhdl -93 ${NOVAS_HOME}/share/PLI/VCS/LINUX/novas.vhd Testbench.vhd Counter.vhd \
-top "Testbench(Arch)" -ssf test.fsdb -sswr test.rc
其中-vhdl選項表示使用VHDL文件,-93表示使用VHDL-1993標準,-top用於指定頂層實體/架構,格式爲「實體名(架構名)」,若是隻有一個架構,則能夠省略架構名。
示例文件:vhdl
3) Testbench和設計文件都用SystemVerilog
SystemVerilog的FSDB dumping命令與Verilog相同。
用VCS仿真的命令格式與Verilog相似,只是把+v2k替換成-sverilog,格式以下:
vcs -sverilog -R -nc -debug_pp -LDFLAGS -rdynamic \ -P ${NOVAS_HOME}/share/PLI/VCS/LINUX/novas.tab \ ${NOVAS_HOME}/share/PLI/VCS/LINUX/pli.a \ Testbench.sv Counter.sv CounterItf.sv
其中-sverilog表示仿真SystemVerilog文件。
用以下命令啓動Verdi查看波形:
verdi -sv Testbench.sv Counter.sv CounterItf.sv -ssf test.fsdb -sswr test.rc
其中-sv表示使用SystemVerilog文件。
示例文件:systemverilog
VCS混合語言仿真須要先分別編譯HDL文件,而後執行仿真,若是包含VHDL文件,則須要synopsys_sim.setup文件,而且須要先編譯novas.vhd。
Verdi調試混合語言設計也要先分別編譯HDL文件到同一個庫,而後打開該庫進行調試。
4) Testbench用Verilog,設計文件用VHDL
VCS仿真命令格式以下:
if (! -d work) mkdir work # Create work directory if not exist vlogan -nc +v2k Testbench.v vhdlan -nc Counter.vhd vcs -R -nc -debug_pp -LDFLAGS -rdynamic -P ${NOVAS_HOME}/share/PLI/VCS/LINUX/novas.tab ${NOVAS_HOME}/share/PLI/VCS/LINUX/pli.a Testbench
包含VHDL文件時必須指定頂層配置/實體/架構,這裏使用了只指定實體名不指定架構名的格式。
用以下命令啓動Verdi查看波形:
vhdlcom -93 Counter.vhd vericom -2001 Testbench.v verdi -lib work -top Testbench -ssf test.fsdb -sswr test.rc
其中-lib用於指定要調試的庫,vhdlcom和vericom默認編譯到work庫中。
示例文件:verilog_tb
5) Testbench用VHDL,設計文件用Verilog
VCS仿真命令格式以下:
if (! -d work) mkdir work # Create work directory if not exist vhdlan -nc ${NOVAS_HOME}/share/PLI/VCS/LINUX/novas.vhd vhdlan -nc Testbench.vhd vlogan -nc +v2k Counter.v vcs -R -nc -debug_pp Testbench__Arch
用以下命令啓動Verdi查看波形:
vhdlcom -93 ${NOVAS_HOME}/share/PLI/VCS/LINUX/novas.vhd Testbench.vhd vericom -2001 Counter.v verdi -lib work -top "Testbench(Arch)" -ssf test.fsdb -sswr test.rc
示例文件:vhdl_tb