2

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文件名字。

harriszh
338 声望131 粉丝

做些有趣的事,留些有用的存在


« 上一篇
后仿验证的ABC
下一篇 »
[翻译]gitignore

引用和评论

0 条评论