在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4109|回复: 3

[原创] 在VCS仿真器中使用FSDB

[复制链接]
发表于 2017-12-23 15:58:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 catannie 于 2017-12-25 19:19 编辑

【说明:前一次发的内容不完整,在这里重新发完整的版本】

VCS仿真器中使用FSDB

FSDBFast SignalDatabase)是Verdi支持的文件格式,用于保存仿真产生的信号波形。据Verdi文档说明,FSDB比标准的VCD格式节省磁盘空间,处理速度更快。要用VCS仿真器生成FSDB文件,就要调用Verdi提供的FSDB dumping命令,较常用的方法是在Testbench中调用。


首先要把FSDB dumper库的路径添加到LD_LIBRARY_PATH环境变量,32Linux环境使用的C Shell命令格式如下:






  1. if ($?LD_LIBRARY_PATH) then
  2.       setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${NOVAS_HOME}/share/PLI/VCS/LINUX
  3. elsesetenv LD_LIBRARY_PATH ${NOVAS_HOME}/share/PLI/VCS/LINUX
  4. endif



复制代码

注意:如果使用的是64Linux,需要把LINUX替换成LINUX64,其他操作系统参考Verdi文档。后面步骤使用的路径也要做同样的替换。



1) Testbench和设计文件都用verilog

Verilog中常用的FSDB dumping命令包括$fsdbDumpfile$fsdbDumpvars等,调用格式如下:






  1. $fsdbDumpfile("test.fsdb");
  2. $fsdbDumpvars(1,Testbench.inst);



复制代码

VCS仿真时,需要使用-P选项调用FSDBdumper,命令格式如下:






  1. 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 -rdynamicVerdi要求的选项。


用如下命令启动Verdi查看波形:






  1. verdi -2001 Testbench.v Counter.v -ssf test.fsdb -sswr test.rc



复制代码

其中-2001表示使用Verilog-2001标准,-ssf用于指定FSDB文件,-sswr用于指定一个配置文件,包含要显示那些信号以及显示格式等,该配置文件可以在Verdi中配置完波形后生成。

示例文件下载: verdi_verilog.zip (1.99 KB, 下载次数: 11 )



2) Testbench和设计文件都用Vhdl

VHDL中常用的FSDB dumping命令包括fsdbDumpfilefsdbDumpvars等,调用前需要引用Novas程序包,调用格式如下:






  1. USE Work.Novas.ALL;

  2. fsdbDumpfile("test.fsdb");
  3. fsdbDumpvars(1, "Testbench:Inst");



复制代码

VCS中仿真VHDL需要在当前目录有一个synopsys_sim.setup文件,格式如下:






  1. -- Mapping default work directory
  2. WORK > DEFAULT
  3. DEFAULT : ./work

  4. -- Library Mapping
  5. IEEE : $VCS_HOME/linux/packages/IEEE/lib
  6. SYNOPSYS : $VCS_HOME/linux/packages/synopsys/lib

  7. --Simulation variables
  8. ASSERT_STOP = ERROR
  9. TIMEBASE = ns
  10. TIME_RESOLUTION = 1 ps



复制代码

其中./workWORK库对应的路径,默认情况下编译到WORK库中。也可以使用不同的路径,需要将./work修改为你使用的路径。


VCS仿真时,需要先编译novas.vhd,该文件中的Novas程序包声明了FSDB dumping命令及其使用的库,因此不需要在命令行使用特别的选项,然后编译VHDL文件,最后执行仿真,命令格式如下:






  1. if (! -d work) mkdir work   # Create work directory if not exist
  2. vhdlan -nc ${NOVAS_HOME}/share/PLI/VCS/LINUX/novas.vhd
  3. vhdlan -nc Testbench.vhd Counter.vhd
  4. vcs -R -nc -debug_pp
  5. Testbench__Arch



复制代码

分步仿真VHDL需要在最后一步调用vcs时指定顶层配置/实体/架构,一种格式为“实体名__架构名”,用两个下划线分隔,如果只有一个架构,则可以省略架构名。包含VHDL文件时必须指定顶层配置/实体/架构。


用如下命令启动Verdi查看波形:






  1. 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用于指定顶层实体/架构,格式为“实体名(架构名)”,如果只有一个架构,则可以省略架构名。

示例文件下载: verdi_vhdl.zip (2.6 KB, 下载次数: 7 )



3) Testbench和设计文件都用SystemVerilog

SystemVerilogFSDB dumping命令与Verilog相同。

VCS仿真的命令格式与Verilog类似,只是把+v2k替换成-sverilog,格式如下:






  1. 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查看波形:






  1. verdi -sv Testbench.sv Counter.sv CounterItf.sv -ssf test.fsdb -sswr test.rc



复制代码

其中-sv表示使用SystemVerilog文件。


VCS混合语言仿真需要先分别编译HDL文件,然后执行仿真,如果包含VHDL文件,则需要synopsys_sim.setup文件,并且需要先编译novas.vhd


Verdi调试混合语言设计也要先分别编译HDL文件到同一个库,然后打开该库进行调试。

示例文件下载: verdi_sv.zip (2.21 KB, 下载次数: 6 )



4) TestbenchVerilog,设计文件用VHDL

VCS仿真命令格式如下:






  1. if (! -d work) mkdir work   # Create work directory if not exist
  2. vlogan -nc +v2k Testbench.v
  3. vhdlan -nc Counter.vhd
  4. 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查看波形:






  1. vhdlcom -93 Counter.vhd
  2. vericom -2001 Testbench.v
  3. verdi -lib work -top Testbench -ssf test.fsdb -sswr test.rc



复制代码

其中-lib用于指定要调试的库,vhdlcomvericom默认编译到work库中。

示例文件下载: verdi_ver_tb.zip (2.44 KB, 下载次数: 7 )



5) TestbenchVHDL,设计文件用Verilog

VCS仿真命令格式如下:






  1. if (! -d work) mkdir work   # Create work directory if not exist
  2. vhdlan -nc ${NOVAS_HOME}/share/PLI/VCS/LINUX/novas.vhd
  3. vhdlan -nc Testbench.vhd
  4. vlogan -nc +v2k Counter.v
  5. vcs -R -nc -debug_pp Testbench__Arch



复制代码

用如下命令启动Verdi查看波形:






  1. vhdlcom -93${N OVAS_HOME}/share/PLI/VCS/LINUX/novas.vhd Testbench.vhd
  2. vericom -2001 Counter.v
  3. verdi -lib work -top "Testbench(Arch)" -ssf test.fsdb -sswr test.rc



复制代码

示例文件下载: verdi_vhd_tb.zip (2.59 KB, 下载次数: 5 )


发表于 2017-12-26 13:09:02 | 显示全部楼层
最近在用VCS-XA做混合验证,数字和模拟波形格式均为fsdb,发现数字波形不能实时更新。
有没有同仁发现次现象?若有解决方案请分享,谢谢!
发表于 2017-12-26 21:33:36 | 显示全部楼层
谢谢分享
发表于 2021-1-4 17:39:59 | 显示全部楼层

谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-28 18:53 , Processed in 0.028181 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表