fsdbDumplimit - 限制FSDB文件size |
1: initial
2: begin
3: $fsdbDumpfile("wave_out.fsdb");
4: $fsdbDumpvars;
5: end
这样,在仿真时就会在script目录生成wave_out.fsdb波形文件。
如果波形文件比较大的话,打开时会占用很多内存,这时可以把波形文件分段输出,调试时只要载入指定时间段的波形文件就可以了,将第三行语句替换为如下语句:
1: $fsdbAutoSwitchDumpfile(25, "test.fsdb", 150);
这条语句表示将fsdb文件分成每个大小为25MB的文件,最多输出150个文件。每个文件的仿真时间范围记录在test.log文件中。
initial begin
$timeformat(...);
$fsdbAutoSwitchDumpfile(...);
$fsdbDumpvars(...);
// 条件表达式1
$fsdbDumpoff;
// 条件表达式2
$fsdbDumpon;
end
1. 我们比较常用的一般还有$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
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( $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
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
新开一个teminal窗口, 找到Debussy的安装目录. 进入/share/PLI/, 在该目录下有很多版本的目录,选择一个属于你的NC版本的目录, 比如nc51, 然后选择你的操作系统, 如LINUX,(换而言之, 现在处于/share/PLI/nc51/LINUX) 之后你会发现:
nc_loadpli1/ nc_shared/ pli.a veriuser.c
把这些目录及文件拷贝到 work目录下.
如果你不需要添加其他的系统函数, 那么直接可以用nc_loadpli1 下debpli.so 文件. 使用方法:
$> ncverilog +access+wrc +loadpli1= ./nc_loadpli1/debpli.so : debpli_boot rtl.files
当然在testbench文件中要写上你所希望调用的debussy 提供的函数, 基本的如:
$fsdbDumpfile("wave.fsdb");
$fsdbDumpvars(6, tb);
如果你已经对veriuser.c进行了修改, 那么首先把veriuser.c 编译为veriuser.o文件.
cc -KPIC -c veriuser.c -I${CDS_INST_DIR}/tools/verilog/include
之后连接
ld -G veriuser.o pli.a -o debussypli.so
使用方法:
$> ncverilog +access+wrc +loadpli1= ./debussypli.so : debussy_bootstrap rtl.files
当然在testbench文件中要写上你所希望调用的debussy 提供的函数, 基本的如:
$fsdbDumpfile("wave.fsdb");
$fsdbDumpvars(6, tb);
文章评论(0条评论)
登录后参与讨论