在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 原型法 ...
随机推荐
- 【ASP.NET Core】处理异常(上篇)
依照老周的良好作风,开始之前先说点题外话. 前面的博文中,老周介绍过自定义 MVC 视图的搜索路径,即向 ViewLocationFormats 列表添加相应的内容,其实,对 Razor Page 模 ...
- c++类的基础
1.抽象: 抽象出公有特性,包括公有动作,公有数据. 2.类:类是具有相同属性和行为的一组对象的集合(变量和函数) 声明格式: class 类名(Dog) { 类体:(数据和函数成员)默认为私有成员, ...
- 小笔记:Timer定时间隔时间操作
小笔记:Timer定时间隔时间操作,后面有时间再补充和完善: public class TimingSvc { /// <summary> /// 定时器,执行定时任务 /// </ ...
- a:hover 等伪类选择器
a.random:hover{ color:#64FFDA; font-size:120%; } //选择的是class="random"的<a>标签. a#s ...
- ansible 拷贝文件并重启服务
Ansible 安装 只需要在ansible 服务器上安装 yum install -y epel-release yum install -y ansible 服务器生成密钥对 ssh-ke ...
- Java经典编程题50道之四十
将几个字符串排序(按英文字母的顺序). public class Example40 { public static void main(String[] args) { Stri ...
- Servlet3.0+springmvc5+log4j2正确的开启姿势(WebLookUp)
前言 java社区占据市场份额比较大的日志组件由log4j 1.×,到logback,再到整合后的升级版 log4j 2.×,有网友测试后据说log4j2的性能最NB.于是开始往自己的springmv ...
- 在Ubuntu上安装PHPStudy组件
phpStudy for Linux (lnmp+lamp一键安装包) phpStudy Linux版&Win版同步上线 支持Apache/Nginx/Tengine/Lighttpd/IIS ...
- MysqL 主从事务数据安全之sync_binlog
sync_binlog:是MySQL 的二进制日志(binary log)同步到磁盘的频率(刷新二进制日志到磁盘),默认是0,意味着mysql并不刷新,由操作系统自己决定什么时候刷新缓存到持久化设置, ...
- ubuntu Emergency Mode
sudo fsck -y /dev/sda# e2fsck -f -y -v -C 0 /dev/sda#