波形文件(wlf/vcd/fsdb/shm/vpd)的区别,fsdb生成方法

转载 2015年11月18日 18:09:53

转自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的系统函数dumpfiledumpvars的参数来规定我们抽取仿真中某些特定模块和信号的数据。示例如下:

// 在testbench中加入以下内容

initial

begin

$dumpfile("*.vcd");

$dumpvars(0,**);

end

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

vcd file myfile.vcd

vcd 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,fsdbDumpvars等。示例如下:

// Testbench中加入以下内容

 initial

begin

$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_topdump,一般也会把需要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 这样子,
2. 另外那个dump.list(名字可以随便取)里面的设定就跟平常的设定dump 的层次设置一样了
层次 路径名
0 test_top.dut.m1

例子:

//=================

// dump FSDB wave

interger start_dump;

integer stop_dump;

integer finish_time;



integer result;

reg [8*30*-1 : 0] waveform_name;



initial begin:fsdb_dump

   start_dump = 0;

   finish_time  = 0;

waveform_name = "debussy.fsdb";

if ($test$plusargs("FSDB"))

     begin

       if($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);

     end

end

ncverilog和verdi结合使用dump fsdb

ncverilog和verdi结合使用dump fsdb
  • steven_yan_2014
  • steven_yan_2014
  • 2014年12月06日 21:11
  • 8280

产生FSDB波形文件的若干技巧

fsdbDumplimit - 限制FSDB文件size -- $fsdbDumpvars([], *) fsdbDumpfile - 指定FSDB文件名 -- $fsdbDumpfile(“”) ...
  • xs1326962515
  • xs1326962515
  • 2017年09月13日 13:36
  • 526

verdi 知识结构更新

1. verdi 加强了active anotation, active trace和trace this value的能力,并且引入了Temperal flow view。在trace X的时侯面对...
  • naclkcl9
  • naclkcl9
  • 2010年03月28日 23:28
  • 10398

FSDB Dumper

FSDB:Fast Signal Database 相比较于VCD文件,FSDB文件的大小比VCD波形小5-50倍。 各家的仿真器都支持在simulation的过程中,直接生成FSDB文件 ...
  • rainbowbirds_aes
  • rainbowbirds_aes
  • 2018年01月09日 17:27
  • 30

Modelsim打开、生成VCD文件

很多时候,需要把VCS仿真的波形导入到Modelsim中进行观察,这个时候无法直接查看,因为Modelsim只支持.wlf波形文件,所以需要做格式转换。 VCS仿真后的波形可保存为VCD(value...
  • chief_cf
  • chief_cf
  • 2017年05月12日 17:48
  • 971

vcd波形查看

  • 2013年07月25日 11:01
  • 4.61MB
  • 下载

Verilog中Dump函数及用法

Verilog提供一系列系统任务用于记录信号值变化,常见的格式有vcd,fsdb等。 1,Dump VCD格式$dumpfile("file. dump"); 打开一个VCD数据库用于记录 $dum...
  • limanjihe
  • limanjihe
  • 2015年11月19日 10:26
  • 1030

VCS+VERDI 的环境配置(1)

引子:              最近,在64bit的LINUX(cent os 6.4)上安装好,synopsys的VERDI和VCS后,写好MAKEFILE脚本,在运行的时候总是出现不了FSDB文...
  • limanjihe
  • limanjihe
  • 2016年08月25日 09:39
  • 4428

wave VCD Viewer波形查看工具(GTKwave)独立运行绿色版本

  • 2011年11月16日 18:20
  • 5.1MB
  • 下载

SystemC_win可以编译和看波形,Vcdviewer可以看VCD文件的波形

【转】使用VC6.0和ModelSim编译和仿真你的SystemC设计 发布时间:2010-11-23 12:52:24 技术类别:CPLD/FPGA   ...
  • autumn20080101
  • autumn20080101
  • 2012年10月18日 20:32
  • 1680
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:波形文件(wlf/vcd/fsdb/shm/vpd)的区别,fsdb生成方法
举报原因:
原因补充:

(最多只允许输入30个字)