在VCS仿真器中使用FSDB
FSDB(Fast Signal Database)是Verdi支持的文件格式,用于保存仿真產生的信號波形。據Verdi文檔說明,FSDB比標準的VCD格式節省磁盤空間,處理速度更快。要用VCS仿真器生成FSDB文件,就要調用Verdi提供的FSDB dumping命令,較常用的方法是在Testbench中調用。
首先要把FSDB dumper庫的路徑添加到LD_LIBRARY_PATH環境變量,32位Linux環境使用的C Shell命令格式如下:
if ($?LD_LIBRARY_PATH) thensetenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${NOVAS_HOME}/share/PLI/VCS/LINUX elsesetenv LD_LIBRARY_PATH ${NOVAS_HOME}/share/PLI/VCS/LINUX endif注意:如果使用的是64位Linux,需要把LINUX替換成LINUX64,其他操作系統參考Verdi文檔。后面步驟使用的路徑也要做同樣的替換。
使用不同語言寫Testbench和設計文件,VCS和Verdi的命令格式不同,下面分情況說明:
1) Testbench和設計文件都用Verilog
Verilog中常用的FSDB dumping命令包括$fsdbDumpfile和$fsdbDumpvars等,調用格式如下:
$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查看波形:
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
轉載于:https://www.cnblogs.com/catannie/p/8099331.html
總結
以上是生活随笔為你收集整理的在VCS仿真器中使用FSDB的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 团队项目冲刺第六天
- 下一篇: 2. PHP赋值运算符