FSDB dump·

目录

$fsdbDumpfile

$fsdbDumpvars

$fsdbAutoSwitchDumpfile

$fsdbDumpflush

实用技巧


FSDB Dumper支持三种方式来加入options:

1) simulator的command line中添加,simv +fsdbfile+high.fsdb

2) 直接在env中添加,setenv NOVAS_FSDB_FIEL mid_prio.fsdb

3)FSDB Dumping cmd中添加,$fsdbDumpfile("+fsdbfile+low_prio.fsdb")

$fsdbDumpfile

$fsdbDumpfile("FSDB_NAME",Limit_Size);  

指定波形文件名,第二个参数可选择用来限制波形的大小(MB)。$fsdbDumpfile("FSDB_NAME",Limit_Size);  

$fsdbDumpvars

$fsdbDumpvars(depth,instance,"option="),

$fsdbDumpvars(0,system,"+fsdbfile+novas.fsdb");

dump system模块中的所有信号并且生产novas的波形文件

0表示dump该模块以及该模块下面的所有信号

1表示只dump该模块这一层的信号

 

$fsdbAutoSwitchDumpfile

$fsdbAutoSwitchDumpfile(file_size, “fsdb_name”, number_of_files[, “log_file_name”, “+fsdb+no_overwrite”])

当波形的大小达到限制后自动以一个新的波形文件起始加载波形;

在所有的波形文件加载完成后,会创建一个virtual FSDB文件,文件后缀.vf。查看波形时只需要加载此文件就可以合并所有的波形文件。

file_size—波形文件大小限制,单位为MB,最小为10M,若值小于10M则默认10M;

file_name—波形文件的名字,在实际加载波形时,文件名为file_name_000.fsdb file_name_001.fsdb…;

number_of_files—最多可以加载多少个file_size这么大的波形文件,如果写为0,则默认没有限制;

log_file_name—指定log文件的名字;

+fsdb+no_overwrite—当number_of_files限制的个数达到时停止dump波形;

 

$fsdbDumpflush

在仿真过程中强制将信号值加载到波形中,便于在仿真过程中查看波形

 


实用技巧

转载

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

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 这样子,

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值