在VCS仿真器中使用FSDB[转载]
来源:https://www.cnblogs.com/catannie/p/8099331.html
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[转载]的更多相关文章
- 在VCS仿真器中使用FSDB
FSDB(Fast Signal Database)是Verdi支持的文件格式,用于保存仿真产生的信号波形.据Verdi文档说明,FSDB比标准的VCD格式节省磁盘空间,处理速度更快.要用VCS仿真器 ...
- git在eclipse中的配置 转载
git在eclipse中的配置 转载 一_安装EGIT插件 http://download.eclipse.org/egit/updates/ 或者使用Eclipse Marketplace,搜索EG ...
- C#高级编程六十九天----DLR简介 .在.NET中使用DLR(转载) 我也来说说Dynamic
DLR 一.近年来,在TIOBE公司每个月发布的编程语言排行榜中,C#总是能挤进前十名,而在最近十年来,C#总体上呈现上升的趋势.C#能取得这样的成绩,有很多因素,其中它在语言特性上的锐意进取让人印象 ...
- C# json反序列化 对象中嵌套数组 (转载) 可能会导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。
C# json反序列化 对象中嵌套数组 (转载) 看图: 这里可以看到是二层嵌套!!使用C#如何实现?? 思路:使用list集合实现 → 建立类 → list集合 → 微软的 Newtonso ...
- 在IDEA中实战Git(转载自)
转载自:http://blog.csdn.net/autfish/article/details/52513465 工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下: 假设小组中有两个人,组 ...
- Objective-C中的SEL (转载)
SEL 在Objective-C中,SEL是选择器(selector)的一个类型.选择器就是指向方法的一个指针,读者可以简单理解为程序运行到这里就会执行指定的方法,可以这样定义一个选择器: SEL ...
- thinkphp5中使用PHPExcel(转载)
thinkphp5中可以使用composer来获取第三方类库,使用起来特别方便,例如:可是使用composer下载PHPMailer,think-captcha(验证码)等等…… 接下来说一下怎么使用 ...
- Spark Shuffle(一)ShuffleWrite:Executor如何将Shuffle的结果进行归并写到数据文件中去(转载)
转载自:https://blog.csdn.net/raintungli/article/details/70807376 当Executor进行reduce运算的时候,生成运算结果的临时Shuffl ...
- JS中的prototype(转载)
本文转载自博客园. 作者:叶剑锋 出处:http://www.cnblogs.com/yjf512/archive/2011/06/03/2071914.html 本文基于下面几个知识点: 1 原型法 ...
随机推荐
- [Python Study Notes]实现对鼠标控制
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...
- centos7设置静态ip
动态ip可以上网.静态ip设置成功后,发现不能上网. 1.首先查看动态ip的默认网关 cat /etc/resolv.conf 2.设置配置文件 在 /etc/sysconfig/network-sc ...
- ps调整文字平滑
1. 选中文字 2. 调整字体样式,选择"平滑"
- angularjs 控制器、作用域、广播详解
一.控制器 首先列出几种我们平常使用控制器时的几种误区: 我们知道angualrJs中一个控制器时可以对应不同的视图模板的,但这种实现方式存在的问题是: 如果视图1和视图2根本没有任何逻辑关系,这样& ...
- 奥酷流媒体服务系统AMS5.0
2016年6月29日,北极星通对外发布AMS5.0版本,AMS是北极星通公司独立研发的高性能流媒体服务系统软件,可广泛应用于视频直播,视频点播,视频转码,视频录播等场合. AMS5.0增加功能: ...
- Java基础(含思维导图)
很早之前整理的Java基础的一些知识点,思维导图: 1.'别名现象' 对一个对象赋值另一个对象,会指向新的对象引用,赋值前的对象引用会由于不再被引用而被gc回收: 而基本类型则不同.基本类型存储了实际 ...
- WPF&Winform版本地图引擎
最近几年一直从事地图方面的工作,自主研发了WPF和Winform两个版本瓦片地图引擎.轻量级.不依赖第三库.先上一张图片展示一下吧! 产品包括服务端和客户端两部份: 1.服务端主要地图图层配制和空间计 ...
- Linux常用命令详解(二) -- 查找常用命令
locate: 作用:在后台数据库中按文件名搜索,搜索速度更快 命令格式:locate 文件名 选项或参数: -l num(要显示的行数) ...
- bzoj2151 种树 双向链表+堆
2151: 种树 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 1151 Solved: 613[Submit][Status][Discuss] ...
- entity framework core在独立类库下执行迁移操作
之前学习EFCore的时候,都是在VS创建的默认模板里面进行的,按照官方文档,直接就可以搞定. 今天新项目准备上.Net Core,打算先按照国际惯例,进行分层,数据访问层是用EFCore来做,于是就 ...