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) 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文档。后面步骤使用的路径也要做同样的替换。

使用不同语言写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

在VCS仿真器中使用FSDB的更多相关文章

  1. 在VCS仿真器中使用FSDB[转载]

    来源:https://www.cnblogs.com/catannie/p/8099331.html FSDB(Fast Signal Database)是Verdi支持的文件格式,用于保存仿真产生的 ...

  2. 在SDK中使用Ubuntu仿真器

    Ubuntu仿真器是开发过程中非常有用,尤其是在没有任何Ubuntu设备时.在将仿真器附加到SDK后,你便可以在上面运行程序,安装点击数据包,等等,类似在物理设备上的操作一样. 在这里,您可以了解如何 ...

  3. VCS仿真 Dump Memory

    VCS仿真 Dump Memory 两种方法 vcs联合verdi生成fsdb文件 vcs生成vpd文件 VCS联合verdi生成fsdb文件 1.testbench中加入如下语句: initial ...

  4. VCS使用学习笔记(1)——Verilog相关的仿真知识

    本文主要学习Verilog的仿真特性,以及仿真器对Verilog的处理,算是对Verilog知识的增量学习.本文内容与我的另一篇博文(http://www.cnblogs.com/IClearner/ ...

  5. VCS

    timing check相关的, +notimingcheck命令,可以用在compile时,也可以用在run time的时候, 都是将检查timing的系统函数,都disable掉了, 加在comp ...

  6. gvim中对变量的识别

    最近在项目中使用gvim打开一个文件,发现对某个变量不识别. 后来发现是gvim中对{$comm_ver},带花括号的变量不识别. 类似这样:parameter memory_spec = " ...

  7. vcs命令

    转载:VCS_weixin_34256074的博客-CSDN博客 timing check相关的: +notimingcheck命令,可以用在compile时,也可以用在run time的时候, 都是 ...

  8. VCS常用仿真选项开关及步骤总结

    转自:https://blog.csdn.net/bcs_01/article/details/79803304 转自:https://blog.csdn.net/wonder_coole/artic ...

  9. 转:Modelsim和Vcs+Verdi使用技巧(Linux)

    Modelsim脚本自动仿真 1.创建文件 run.do,"#"为注释符号 quit -sim #退出上次仿真 .main clear #清除上次仿真所有文件以及打印信息 vlib ...

随机推荐

  1. Python数据结构之一——list(列表)

    Python版本:3.6.2  操作系统:Windows   作者:SmallWZQ Python包含6种常见的内建序列.它们分别是列表.元祖.字符串.Unicode字符串.buffer(memory ...

  2. NSIS 设置系统变量

    定义 ; include for some of the windows messages defines !include "winmessages.nsh" ; HKLM (a ...

  3. HBuilder常用快捷键

    切换tab: Ctrl+Tab全部保存: Ctrl+Shift+S 激活代码助手: Alt+/显示方法参数提示: Alt+Shift+?转到定义: Ctrl+Alt+D 开启关闭注释整行: Ctrl+ ...

  4. R语言-聚类与分类

    一.聚类: 一般步骤: 1.选择合适的变量 2.缩放数据 3.寻找异常点 4.计算距离 5.选择聚类算法 6.采用一种或多种聚类方法 7.确定类的数目 8.获得最终聚类的解决方案 9.结果可视化 10 ...

  5. PendingIntent

    PendingIntent表示一种即将发生的意图,和Intent的区别在于:PendingIntent是在将来的某个不确定的时刻发生,而Intent是立刻发生 典型使用场景是给RemoteViews添 ...

  6. HDU - 1043 A* + 康托 [kuangbin带你飞]专题二

    这题我第一次用的bfs + ELFhash,直接TLE,又换成bfs + 康托还是TLE,5000ms都过不了!!我一直调试,还是TLE,我才发觉应该是方法的问题. 今天早上起床怒学了一波A*算法,因 ...

  7. 将vue的项目打包后通过百度的BAE发布到网上的流程

    经过两天的研究终于将VUE打包后的项目通过BAE发布到了网上.虽然接口方面还有一下问题但是自己还是很高兴的. 首先说一下这个项目需要用到的技术,vue+express+git+百度的应用引擎BAE. ...

  8. java编程思想第四版第二章要点总结

    1. 基本类型 基本类型 二进制位数 包装器类 boolean - Boolean byte 8 Byte char 16 Character short 16 Short int 32 Intege ...

  9. Servlet Cookie取不到值原因

    现象: 在测试带Cookie的HTTP请求时发现,服务端用request.getHeader("cookie")可以去到值; 但是用request.getCookies()却不行  ...

  10. css进行中打点效果

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...