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檔名字。