转自http://www.eetop.cn/blog/html/30/523930-36594.html

波形文件一般用于仿真后记录波形文件,用于做详细分析和研究。说一下几种波形文件WLF(Wave Log File)、VCD(Value Change Dump)文件,fsdb(Fast Signal DataBase)文件、shm、vpd。

1.WLF (Wave Log File)

Mentor Graphics 公司Modelsim支持的波形文件。在modelsim波形窗口观察波形时,仿真结束时都会生成一个*.wlf的文件(默认是vsim.wlf),可以用modelsim直接打开,命令如下:

vsim -view vsim.wlf -do run.do

其中,run.do中的内容为要查看的波形信号。这个wlf文件只能由modelsim来生成,也只能通过modelsim来显示。不是一个通用的文件格式。

2.VCD(Value Change Dump)

IEEE1364标准(Verilog HDL语言标准)中定义的一种ASCII文件,是通用的文件格式。

它主要包含了头信息,变量的预定义和变量值的变化信息。正是因为它包含了信号的变化信息,就相当于记录了整个仿真的信息,我们可以用这个文件来再现仿真,也就能够显示波形。因为VCD是 Verilog HDL语言标准的一部分,因此所有的verilog的仿真器都能够查看该文件,允许用户在verilog代码中通过系统函数来dump VCD文件。

我们可以通过Verilog HDL的系统函数dumpfile来生成波形,通过dumpfile来生成波形,通过dumpvars的参数来规定我们抽取仿真中某些特定模块和信号的数据。示例如下:

// 在testbench中加入以下内容

initialbegin$dumpfile("*.vcd");$dumpvars(0,**);end

我们可以通过modelsim 命令来dump VCD文件,这样可以扩展到VHDL中。具体的命令:

vcd file myfile.vcdvcd add /test/dut/*                        #  生成一个含dut下所有信号的VCD数据信息)vsim -vcdstim myfile.com          #  使用VCD来进行仿真 )test;add wave /*;run -all;

特别说明的一点是,正是因为VCD记录了信号的完整变化信息,我们还可以通过VCD文件来估计设计的功耗,而这一点也是其他波形文件所不具备的。Encounter 和 PrimeTime PX (Prime Power)都可以通过输入网表文件,带功耗信息的库文件以及仿真后产生的VCD文件来实现功耗分析。

3.FSDB (Fast Signal DataBase)

Spring Soft (Novas)公司 Debussy / Verdi 支持的波形文件,一般较小,使用较为广泛,其余仿真工具如ncsim,modlesim 等可以通过加载Verdi 的PLI (一般位于安装目录下的share/pli 目录下) 而直接dump fsdb文件。

fsdb文件是verdi使用一种专用的数据格式,类似于VCD,但是它是只提出了仿真过程中信号的有用信息,除去了VCD中信息冗余,就 像对VCD数据进行了一次huffman编码。因此fsdb数据量小,而且会提高仿真速度。我们知道VCD文件使用verilog内置的系统函数来实现 的,fsdb是通过verilog的PLI接口来实现的,例如fsdbDumpfile,fsdbDumpfile,fsdbDumpvars等。示例如下:

// Testbench中加入以下内容

 initialbegin$fsdbDumpfile("*.fsdb");  //*代表生成的fsdb的文件名$fsdbDumpvars(0,**);    //**代表测试文件名end

4.shm

Cadence公司 NC verilog 和Simvision支持的波形文件,实际上 .shm是一个目录,其中包含了.dsn和.trn两个文件。

使用NC Verilog 对同一testcase和相同dump波形条件的比较,产生shm文件的时间最短(废话,本来就是一个公司的),产生vcd文件的时间数倍于产生shm和 fsdb的时间。在笔者测试的例子中,产生的fsdb文件为十几MB,shm文件为几十MB,而vcd文件则要几个GB的大小。

5.vpd

Synopsys公司 VCS DVE支持的波形文件,可以用$vcdpluson产生。

其余波形文件就是各家不同的仿真或调试工具支持的文件类型,互不通用,但基本都可以由VCD文件转换而来(其实就是VCD文件的压缩版,因为只取仿真调试需要的数据,所以文件大小要远小于原始VCD文件),有的还提供与VCD文件的互转换功能。


6.fsdb的一些用法:

(1)下面是一个列表,提示了fsdb 的各种可能用法,具体的内容大家可以Google 一把,就都出来了。
fsdbDumplimit - 限制FSDB 文件size  如何使用?
$fsdbDumpvars([<level>], <scope | signal>*)
fsdbDumpfile - 指定FSDB 文件名
$fsdbDumpfile(“<FSDB name>”)
fsdbDumpvars - Dump 指定的变量
fsdbDumpSingle - Dump 指定的信号
fsdbDumpvariable - Dump 指定的VHDL 变量
fsdbSwitchDumpFile - 将dumping 切换到另一个FSDB 文件
$fsdbSwitchDumpFile(“<new FSDB name>”)
fsdbAutoSwitchDumpfile - 限制文件大小并在数据量过大时自动创建新的FSDB 文件
$fsdbAutoSwitchDumpfile(<file size>, “<FSDB name>”,< number of file>)
fsdbDumpflush - Force to Dump Result to FSDB file
fsdbDumpMem - Dump 指定的memory 的内容
$fsdbDumpMem(<reg name>, [<start addr>, [<size>]])
$fsdbDumpon - 打开 FSDB dumping
$fsdbDumpoff - 关闭 FSDB dumping
(1)一个自由开关FSDB 的方法
有时候要运行很长时间的仿真,但是关心的波形却只是其中一小段。这个时候怎么来开关波形,使文件不至于太过庞大呢?这里介绍一个方法。示例仅供参考,大家可以结合实际应用创造出更加多样的变化来。initial begin
$timeformat(...);
$fsdbAutoSwitchDumpfile(...);
$fsdbDumpvars(...);
// 条件表达式1
$fsdbDumpoff;
// 条件表达式2
$fsdbDumpon;
End
( 2 )、我们比较常用的一般还有$value$plusargs 这个task,在test_top 中:
$value$plusargs("casename=%s",casename)
通过脚本在run 的时候把casename 传递进去(给vcs/nc SIM_ARG: +casename=$Testcase_name.fsdb)
便于如果同时跑多个testcase 的时候可以同时dumpfsdb,另外就是跳过一些时间开始
dump(SIM_ARG: +time=$start_time)
$value$plusargs("time=%d",skip)
#skip
(3)、project 中每个人关注的module 不同,为了频繁去修改test_top 的dump,一般也会把需要dump 的内容用dumplist
的file 来实现
$fsdbDumpvarsToFile("dump.list");
比如dump.list 内容 #用于注释)
0 test_top
#1 test_top
#0 test_top.dut
#0 test_top.dut.m1
#0 test_top.dut.m2
用的时候一般是在test_top.v 添加相关的语句:
reg [100:0] casename;
integer skip, i;
initial begin
if( $test$plusargs("dumpfsdb") ) begin
if( $value$plusargs("time=%d", skip) )
#skip;
if( $value$plusargs ("casename=%s",casename) )
$fsdbAutoSwitchDumpfile(300, casename, 30);
else
$fsdbAutoSwitchDumpfile(300,"./test_top.fsdb",40);
$fsdbDumpvarsToFile("dump.list");
end
end

跑仿真的时候,对应的如果要从5000ns(时间单位根timescale 有关)处开始dump 波形,给vcs/nc 的参数

+dumpfsdb +time= 5000 +casename= testcase1.fsdb 

其中的testcase1 一般我们都会在脚本处理后跟case 名字关联起来,这样子跑完之后就会从5000 开始dump 
testcase1_000.fsdb, testcase1_001.fsdb 这样子, 
另外那个dump.list(名字可以随便取)里面的设定就跟平常的设定dump 的层次设置一样了 
层次 路径名 
0 test_top.dut.m1

例子:

//=================// dump FSDB waveinterger start_dump;integer stop_dump;integer finish_time;integer result;reg [8*30*-1 : 0] waveform_name;initial begin:fsdb_dumpstart_dump = 0;finish_time  = 0;waveform_name = "debussy.fsdb";if ($test$plusargs("FSDB"))beginif($test$plusargs("DUMP_FILE"))result  = $value$plusargs("DUMP_FILE=%s",waveform_name);$fsdbAutoSwitchDumpfile(150,waveform_name,100);$fsdbDumpflush;#start_dump;//select dump signals$fsdbDumpvars(0,xx_tb);endend

IC设计中不同eda工具波形文件(wlf/vcd/fsdb/shm/vpd)的区别及生成方法相关推荐

  1. 波形文件(wlf,vcd,fsdb,shm,vpd)的区别,及如何生成

    在verilog和systemverilog等逻辑仿真的过程中,最关心的就是最后生成的波形是如何,我们才能根据波形去具体分析.但是往往会根据各个公司和各个平台工具的不同,会产生不同的波形文件,那么不同 ...

  2. 波形文件(wlf/vcd/fsdb/shm/vpd)的区别

    http://blog.sina.com.cn/s/blog_ddf93b6c0102y6lr.html

  3. IC-CAD IC 设计流程及 EDA 工具

    IC 设计流程是每个 IC 从业者的必修课,虽然多数人的从业方向只是 IC 设计流程中的一部分,但是了解 IC 设计流程全貌对正确认识每个 IC 设计环节的作用是有很大帮助的. 对于一个 CAD 来说 ...

  4. IC设计Linux设置文件夹颜色,IC设计中常用的Linux命令

    一个合格ICer,必需要熟练掌握常用的Linux命令.今天来介绍一下IC设计中常用的Linux命令.(管理员相关的命令后面另写一篇文章.) Linux常见命令一览 文件及目录操作 cd  pwd  l ...

  5. IC设计中时钟偏斜对延时的影响

    IC设计中时钟偏斜对延时的影响 1. 什么是时钟偏斜 芯片实际工作中,时钟并不是同时到达各个时序元件,在到达时间上又某种不确定性,因而可能减少用于计算的时间. 如下图所示:图中加粗clk线表示时钟可能 ...

  6. IC设计中如何用PTPX分析功耗

    PrimeTime PX(Power Analysis) userguide阅读笔记 IC设计中的功耗分析的流程 PrimeTime-PX功耗分析总结 低功耗设计 synopsys官方参考文档:pri ...

  7. 数字IC设计中为什么要避免锁存器(Latches)

    数字IC设计中为什么要避免锁存器(Latches) 上学时,老师说判断语句要把条件写全,不然会生成锁存器,做项目时又说多比特寄存器信号的赋值一定要加if条件,不让出现else的赋值.就很矛盾,本文主要 ...

  8. 数字IC设计中ECO的那些事,其实并不是事

    数字IC设计中ECO的那些事,其实并不是事! 文章右侧广告为官方硬广告,与吾爱IC社区无关,用户勿点.点击进去后出现任何损失与社区无关. 点击标题下「蓝色微信名」可快速关注 刚好最近一直在忙着芯片的测 ...

  9. (转)IC设计完整流程及工具

    IC的设计过程可分为两个部分,分别为:前端设计(也称逻辑设计)和后端设计(也称物理设计),这两个部分并没有统一严格的界限,凡涉及到与工艺有关的设计可称为后端设计. 前端设计的主要流程: 1.规格制定 ...

最新文章

  1. 机器学习之强化学习概览
  2. 拯救莫莉斯[GDOI2014]
  3. Spring Boot使用Druid和监控配置
  4. 015_JavaMail
  5. Serverless 微服务实践-移动应用包分发服务
  6. 数学中的向量乘积和矩阵乘积总结
  7. 问题 E: 括号规则
  8. Hibernate关联关系配置(一对多、一对一和多对多)
  9. inDesign教程,如何将inDesign文档导出为 PDF 文件?
  10. 苹果mac数据库开发工具:Navicat Premium
  11. PPT做的很好却不会讲?掌握这些职场PPT演讲技巧,不再惧怕做汇报
  12. 亚马逊云科技顾凡:持续创新的关键是企业已构建起现代化应用
  13. 【Webpack 性能优化系列(2) - source-map】
  14. 席卷全球的大数据发展趋势需要什么?
  15. 史上最全蓝屏代码!电脑蓝屏了查一下什么原因吧!
  16. OCR实时扫描识别中英文--tess_two在Android的使用
  17. TrueCrypt 6.2a原理及代码分析
  18. 6-1 水仙花数判断 (10分)(函数题)
  19. 【视频点播】阿里云视频点播如何获取视频播放的URL
  20. Linux应用(四)socket网络编程

热门文章

  1. 循环赛赛程表的分治法实现
  2. NTU商汤提出新 loss!Focal Frequency Loss 提升图像重建和图像合成的质量 ICCV2021
  3. 剧本杀开连锁店,有戏吗?
  4. 比较MICROSOFT 365教育版的各种计划(英文版)
  5. 当不想前行的时候,就静静的看看书吧
  6. python环境配置不成功_怎么解决python配置环境变量不成功
  7. c语言:英尺和米之间的转化
  8. python win32console_Python win32console.FOREGROUND_RED属性代码示例
  9. php获得小程序的传值,微信小程序之传值取值方法总结
  10. .NetCore数据库依赖注入