在VCS仿真器中使用FSDB

时间:2021-10-27 22:41:48

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 = &quot ...

  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. 初识git版本控制系统

    当下git分布式版本控制系统越来越火,掌握git也是必须的一个技能.因此,对git做了如下学习. Git初级指南 1. 先安装git.(ps:在select cmponents处要勾选Git Bash ...

  2. Integer to English Words

    https://leetcode.com/problems/integer-to-english-words/ 这题记得是<c 和指针>里的一道习题,三年前花了一晚上做过.现在花了大概40 ...

  3. ghj

    如果对同一个元素的定义有多种,以最接近(最小一级)的定义为最优先,例如有这么一段代码 Update: Lorem ipsum dolor set 在CSS文件中,你已经定义了元素p,又定义了一个cla ...

  4. REST服务返回自定义的HttpResponseMessage

    WebApi框架中对资源的操作,都是通过其Controller提供的各种方法(GET,POST,PUT,DELET等)来实现,而这些方法的返回信息有以下几种形式: 方法返回类型 HttpRespons ...

  5. Android SDK、ADT认识

    Android SDK: (software development kit)软件开发工具包. 包含一些实用的Android sdk api,供开发者使用,就像开发java程序需要的使用JDK一样. ...

  6. OC动态特性

    今天是2.15周日,快要过年了,我以一个实习生的身份在公司工作了快要两个月了吧,什么是北漂,北漂就是感觉生活节奏变了,以前困了可以上课睡觉,累了可以回家休息数周,人际交往乏了,可以躲起来看着窗外的雨或 ...

  7. &lpar;转&rpar;iOS keychain API及其封装

    一. Keychain API KeyChain中item的结构为: 1.增加keychain Item OSStatus SecItemAdd (CFDictionaryRef attributes ...

  8. Android网络编程http派&sol;申请服务

    最近的研究Android网络编程知识,这里有一些想法,今晚学习.与您分享. 在实际的应用程序的开发非常需要时间appserver请求数据,那么app怎样发送请求呢?以下的代码就是当中的一种情况.使用H ...

  9. jQuery兼容浏览器IE8方法

    在维护公司网站的时候,发现在IE8下jquery会报对象不支持此属性或方法.缺少对象的错误:  在其他浏览器就可以正常运行,当前使用的jquery版本是3.1.1,查资料发现jquery从2.0开始不 ...

  10. 使用PandoraBox时的软件源配置

    src/gz 18.12_core http://downloads.pangubox.com:6380/pandorabox/18.12/targets/ralink/mt7621/packages ...