如何将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继续查看。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架