如何将fsdb波形中信号存到TXT文档中
今天和大家分享一个小技巧,你在debug问题的时候,是不是也曾经想过将波形中的某些信号转化成txt,然后用txt的值复现某些波形或者与理论值对比。今天这篇文章就教大家怎么用verdi将fsdb格式的波形转化成txt。
这里用到的工具是verdi的fsdbreport指令。
以下面的波形为例,我想将ch0_data有效的data存在txt里面。

根据规格书约定,ch0_data 只有在ch0_ready 和ch0_valid 为高时有效。又因为这是一段时序电路逻辑,所以时钟也要包括在里面。我们采用下面命令转化波形。
fsdbreport tb.fsdb -exp "/arb_tb_top/clk & /arb_tb_top/dut/ch0_ready & /arb_tb_top/dut/ch0_valid "
-s "/arb_tb_top/dut/ch0_data/" -of h -o debug.txt
最终在产生的debug.txt里面可以到ch0_data已经被存下来,左边是采样的时间。

上述这段命令中用-exp指定采样的条件,我指定了clk为1,ch0_ready 和ch0_valid 都为1的时候进行采样。采样的信号用-s指定,这里指定了ch0_data。-of指定采样信号存储的格式,这里指定为hex格式,-o指定存储到的文件为debug.txt。
fsdbreport的一些应用
-
指定某段时间将信号报告到txt中用-bt 和-et。
fsdbreport verilog.fsdb -s "/system/addr" -bt 1000ps -et 2000ps -
报告到txt中某些信号的部分信息。
fsdbreport verilog.fsdb -s "/system/addr[7:4]" -
以不同的格式报告信号列表里面的信号。

-
报告一个模块下面的信号,可以指定层级。
fsdbreport rtl.dump.fsdb -bt 10 -et 100 -s "/system/i_cpu/*" -level 3 /system/i_param/clock -cn 0 -
指定条件为真时,报告某些信号。
fsdbreport verilog.fsdb -exp "/system/addr='h30 & /system/clock==1" -s /system/data -
用-find_forces报告某模块下面force,release,deposit的信号。
fsdbreport rtl.fsdb -find_forces -s "/system/i_cpu/*" -level 2 -o report.txt
想了解更多fsdbreport的用法,请在自己的verdi环境用fsdbreport -help继续查看。
浙公网安备 33010602011771号