我是靠谱客的博主 清秀棉花糖,这篇文章主要介绍从fsdb波形文件中提取你要的部分? 你需要这样做,现在分享给大家,希望可以做个参考。

对fsdb波形文件的操作


在仿真过程中,波形文件对我们debug至关重要。但默认导出的波形可能存在size太大!时间太长!结构层次太多!等等问题。
我们经常需要导出特定hierarchy的波形而不需要其他的部分,一般常见的有几个应用场景:

  1. 我只关心自己模块的部分,希望减小波形文件的大小.
  2. 我需要给团队外的人提供波形,不希望别人看到指定hierarchy之外的部分.
  3. 我的波形太长,只需要截取一段特定时间的波形.(在功耗分析时此需求尤其多)

一般有几种处理方式:

  • 最常见的是加入$dumpvars函数(如下example), 但缺点是这时候你需要重新run一次simulation. 如果时间不长那问题不大,如果本身设计很大跑一次要很久就有点麻烦了。
    另外如果bench参数化不好的话, 假如需要控制dumpon/dumpoff的时间点还需要改bench的代码, 对Bench形成冲击和额外的工作量。
$dumpvars; // Dump所有层次的信号
$dumpvars(level,module_hierarchy); //要记录的信号,level=0表示记录所有
$dumpvars (0, top); // Dump top模块中的所有信号
$dumpvars (1, top.module1); // Dump实例top.module1及其下一层的信号
$dumpoff; //停止记录
$dumpon; //重新开始记录
  • 在不改变现有文件的前提下,有一种更好的解决方法,更适用于单次改变波形文件的需求, 即 fsdbsxtract command. 如下example所示,
    • 对Verilog.fsdb文件使用“-s”命令可以指定自己所需的hierarchy。Tips:1)可以指定多个层次结构,2)要使用斜杠’/‘而不是点’.’
    • -level命令与$dumpvars命令的参数相似,指定该层次以下导出几层,比如-level1, -level3… 而-level0表示下面的所有层次;
    • -o命令可以改写你切割出来的波形的名字,取一个容易标记的名字吧,送给将来一定会忘记的你自己;
    • -bt和-et命令指定begin time和end time,现在你就可以根据时间轴随意切割你想要的波形文件了;
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波形文件中提取你要的部分? 你需要这样做的全部内容,更多相关从fsdb波形文件中提取你要的部分?内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部