FSDB
控制波形生成
vcd
$dumpvars; // Dump所有层次的信号
$dumpvars(level,module_hierarchy); //要记录的信号,level=0表示记录所有
$dumpvars (0, top); // Dump top模块中的所有信号
$dumpvars (1, top.module1); // Dump实例top.module1及其下一层的信号
$dumpoff; //停止记录
$dumpon; //重新开始记录
fsdb
`timescale 1ns/1ns
module test;
initial
begin
$fsdbDumpfile("test.fsdb");
$fsdbDumpvars(0,test);
end
...
endmodule
run-time
xcelium
%> xrun top.v -access +r +tcl+cmd.tcl
call fsdbDumpfile "my.fsdb"
call fsdbDumpvars top
run 10000ns
exit
vcs
% simv -ucli -i cmd.tcl
fsdbDumpfile test.fsdb 500
fsdbDumpvars 0 test "+all"
fsdbDumpon
run 1000ns
fsdbDumpoff
quit
VCS中使能FSDB
-debug_access+pp
-fsdb
-P $VERDI_LIB/novas.tab $VERDI_LIB/pli.a
分割fsdb波形
fsdbextract verilog.fsdb -s /top/module1 -o sub.fsdb
fsdbextract verilog.fsdb -s /top/module1 /top/module2/u_sub1 -level0 -o sub.fsdb
fsdbextract verilog.fsdb -s /top/module1 -bt 1ms -et 3ms -o sub.fsdb //bt=begin time, et=end time
将FSDB波形转成CSV等可读性文本
fsdbreport test.fsdb -bt 1000ns -et 1100ns -s "top/abc[31:0]" -csv -of h -o test.csv
其中参数
- bt是波形的开始时间
- et是波形的结束时间
- s是导出的信号名,可以用通配符匹配
- of是输出的数据格式,h为16进制
- o为导出的文件名
fsdbreport tb.fsdb -s /tb* -level 0 -bt 101055ps -et 200000ps -of h -o fsdb_cn.txt
列出模块/tb下的信号,输出类似
Time(1ns) /tb/clk /tb/rst /tb/led
======== ======= ======= =======
101 0 1 1
105 1 1 0
fsdbreport -help
可以查看更多选项
- -s: 指定要报告的信号或范围
- -exp: 当表达式为 true(==1) 时的报告值
- -w 32: 是指定数据位宽
- -bt: begin time
- -et: end time
- -of: 定义输出显示格式为二进制、八进制、十进制、无符号十进制或十六进制
- -o: 指定输出报告的文件名
- -level:指定要在指定范围内转储的级别数。此选项必须与 -s 一起使用
- -cn: 定义报告的列数,包括时间列, 0 表示所有满足的信号以一列形式显示;
fsdbreport verilog.fsdb -s "/system/addr[7:4]"
fsdbreport fsdb/vhdl_typecase.fsdb -nocase -s top/A_SIMPLE_REC.FIELD3 -a simple.field3 -w 15 TOP/A_COMPLEX_REC.F1.FIELD3 -a complex.f1.field3 -w 20 top/a_std_logic_vector -af sean2.alias -of a -o output.txt -bt 1000 -et 2000
fsdbreport rtl.fsdb -find_forces -s "/system/i_cpu/*" -exclude_scope "/system/i_cpu/s1/*" "/system/i_cpu/s2" -o report.txt
fsdbreport verilog.fsdb -exp "/system/addr=='h30 & /system/clock==1" -s /system/data
fsdb2vcd
fsdb2vcd verilog.fsdb -s /system/i_cpu -level 1 -bt 10 -et 1000 -o output.vcd
fsdb ucli
+IO_Only – 只加载IO port信号;
+Reg_Only – 只加载reg类型信号;
+mda – 加载memory和MDA信号;
+packedmda – 加载packed MDA;
+struct – 加载structs;
+parameter – 加载parameter;
+fsdbfile+filename – 指定fsdb文件名字。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。