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

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

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

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

使用不同语言写Testbench和设计文件,VCS和Verdi的命令格式不同,下面分情况说明:

1) Testbench和设计文件都用Verilog

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

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

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

  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 -rdynamic是Verdi要求的选项。

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

  1. 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程序包,调用格式如下:

  1. USE Work.Novas.ALL;
  2.  
  3. fsdbDumpfile("test.fsdb");
  4. fsdbDumpvars(1, "Testbench:Inst");

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

  1. -- Mapping default work directory
  2. WORK > DEFAULT
  3. DEFAULT : ./work
  4.  
  5. -- Library Mapping
  6. IEEE : $VCS_HOME/linux/packages/IEEE/lib
  7. SYNOPSYS : $VCS_HOME/linux/packages/synopsys/lib
  8.  
  9. --Simulation variables
  10. ASSERT_STOP = ERROR
  11. TIMEBASE = ns
  12. TIME_RESOLUTION = 1 ps

其中./work是WORK库对应的路径,默认情况下编译到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 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用于指定顶层实体/架构,格式为“实体名(架构名)”,如果只有一个架构,则可以省略架构名。

示例文件:vhdl

3) Testbench和设计文件都用SystemVerilog

SystemVerilog的FSDB dumping命令与Verilog相同。

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

  1. vcs -sverilog -R -nc -debug_pp -LDFLAGS -rdynamic \
  2. -P ${NOVAS_HOME}/share/PLI/VCS/LINUX/novas.tab \
  3. ${NOVAS_HOME}/share/PLI/VCS/LINUX/pli.a \
  4. 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文件。

示例文件:systemverilog

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

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

4) Testbench用Verilog,设计文件用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用于指定要调试的库,vhdlcom和vericom默认编译到work库中。

示例文件:verilog_tb

5) Testbench用VHDL,设计文件用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 ${NOVAS_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

示例文件: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. Google 搜索引擎语法

    Google Hack原理很简单,就是利用搜索引擎强大的搜索能力,来查找一些存在漏洞的网站.要利用Google来查找网站的漏洞自然要学会Google这个搜索引擎的语法了.下面先给大家讲解一下Googl ...

  2. 35 个 jQuery 小技巧

    1. 禁止右键点击 $(document).ready(function(){ $(document).bind("contextmenu",function(e){ return ...

  3. [翻译] .NET Core 2.1 Preview 1 发布

    [翻译] .NET Core 2.1 Preview 1 发布 原文: Announcing .NET Core 2.1 Preview 1 今天,我们宣布发布 .NET Core 2.1 Previ ...

  4. core java

    ConsoleTest,这个程序如果在IDE里运行就会因无法获得控制台而报错 import java.io.Console; public class ConsoleTest { public sta ...

  5. Qt 信号如何自动连接槽函数?

    on_objectName_signal [static] void QMetaObject::connectSlotsByName(QObject *object) void on_<obje ...

  6. hdu1251 map水过

    更快的方法应该是字典树,不用处理前缀. AC代码: #include<iostream> #include<cstring> #include<string> #i ...

  7. Linux sftp 安全文件传输命令

    sftp 是一个交互式文件传输程式.它类似于 ftp, 但它进行加密传输,比FTP有更高的安全性. 1.常用登陆方式: 格式:sftp <user>@<host> 通过sftp ...

  8. mysql数据库基本使用(增删改查)

    数据库db,database 数据库:依照某种数据模型进行组织并存放到存储器的数据集合dbms,database management system 数据库管理系统:用来操作和管理数据库的大型服务软件 ...

  9. RTLinux编程总结

    做过一个有关RTLinux的项目,时间一长,差不多忘光了,现在尽量把原来做过的东西总结一下,以备后用,同时正在做类似项目的一个借鉴平台主机:redhat 8.0目标机:PC104模块.ISA总线脉冲输 ...

  10. linux驱动---用I/O命令访问PCI总线设备配置空间

    PCI总线推出以来,以其独有的特性受到众多厂商的青睐,已经成为计算机扩展总线的主流.目前,国内的许多技术人员已经具备开发PCI总线接口设备的能 力.但是PCI总线的编程技术,也就是对PCI总线设备的操 ...