fsdb文件dump命令

fsdbDumpfile - 指定FSDB文件名

$fsdbDumpfile(“”)

fsdbDumpvars - Dump指定的变量

fsdbDumpSingle - Dump指定的信号

fsdbDumpvariable - Dump指定的VHDL变量

fsdbSwitchDumpFile - 将dumping切换到另一个FSDB文件
$fsdbSwitchDumpFile(“”)

fsdbAutoSwitchDumpfile - 限制文件大小并在数据量过大时自动创建新的FSDB文件
$fsdbAutoSwitchDumpfile(, “”,< number of file>)

fsdbDumpflush - Force to Dump Result to FSDB file

fsdbDumpMem - Dump 指定的memory的内容
$fsdbDumpMem(, [, []])

$fsdbDumpon - 打开 FSDB dumping

$fsdbDumpoff - 关闭 FSDB dumping

1: initial
2: begin
3: $fsdbDumpfile(“wave_out.fsdb”);
4: $fsdbDumpvars;
5: end
这样,在仿真时就会在当前目录生成wave_out.fsdb波形文件。
如果波形文件比较大的话,打开时会占用很多内存,这时可以把波形文件分段输出,调试时只要载入指定时间段的波形文件就可以了,将第三行语句替换为如下语句:
3: $fsdbAutoSwitchDumpfile(25, “test.fsdb”, 150);
这条语句表示将fsdb文件分成每个大小为25MB的文件,最多输出150个文件。每个文件的仿真时间范围记录在test.log文件中。

initial begin

$timeformat(…);
$fsdbAutoSwitchDumpfile(…);
$fsdbDumpvars(…);

// 条件表达式1

$fsdbDumpoff;
// 条件表达式2
$fsdbDumpon;
end

  1. 我们比较常用的一般还有 v a l u e value valueplusargs这个task,在test_top中: v a l u e value valueplusargs(“casename=%s”,casename)
    通过脚本在run的时候把casename传递进去(给vcs/nc SIM_ARG: +casename= T e s t c a s e n a m e . f s d b ) 便 于 如 果 同 时 跑 多 个 t e s t c a s e 的 时 候 可 以 同 时 d u m p f s d b , 另 外 就 是 跳 过 一 些 时 间 开 始 d u m p ( S I M A R G : + t i m e = Testcase_name.fsdb) 便于如果同时跑多个testcase的时候可以同时dumpfsdb,另外就是跳过一些时间开始dump(SIM_ARG: +time= Testcasename.fsdb)便testcasedumpfsdbdumpSIMARG:+time=start_time)
    v a l u e value valueplusargs(“time=%d”,skip)
    #skip

  2. 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( t e s t test testplusargs(“dumpfsdb”) ) begin
if( v a l u e value valueplusargs(“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

  1. 跑仿真的时候,对应的如果要从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

为了处理fsdb文件过大的问题,有如下的方法:

(1)使用fsdbAutoSwitchDumpfile命令将fsdb文件存成1个个的小文件,这样verdi就可以容易打开。这是通过将大文件拆成小文件来解决。

(2)使用fsdbDumpoff和fsdbDumpon命令来dump指定时刻的波形,不必dump所有仿真时刻的波形来减小文件大小。这是通过减少dump时间来减少文件大小。

(3)使用fsdbDumpvars和fsdbDumpSingle 命令来dump指定信号的波形。这是通过减少dump信号的数量来减少文件大小。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值