完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
verdi工具有一个很强大的功能,可以将代码和波形对应起来,这样debug效率就很高。但是这需要有一个前提,代码的信号的层次路径,要和波形里面该信号的层次路径一致,这样verdi工具才能够进行对应。
但是如果代码里面的信号层次路径,和波形里面的信号层次路径不一致,那verdi工具就无能为力了。也就不能进行代码和波形的对应。 但是有时候,会有这样的一种情况。对于同一个模块,在不同的仿真环境下,所在的层次路径是不一样的。比如对于模块D: 在仿真环境A中,所在的层次路径为 tb_top1.xxx.a 在仿真环境B中,所在的层次路径为 tb_top2.yyy.a 此时在A仿真环境中生成的fsdb波形,如果我只想看模块D的波形,那么该fsdb波形,能够在仿真环境B中查看了吗? 当然,在仿真环境B中,能够直接打开该fsdb波形,但是不能将模块D的代码和波形中模块D的波形进行对应,因为他们的层次路径不一样。 所以,这个时候,如果能直接修改fsdb波形文件的层次路径,将tb_top1.xxx.a,修改为tb_top2.yyy.a,那么就可以直接在仿真环境B中,将模块D的代码和波形中模块D的波形进行对应了。 一、fsdbedit工具 为了实现这个功能,我们需要使用 fsdbedit 工具。该工具属于verdi的子工具之一。 使用 fsdbedit -h 命令,可以查看该命令的使用方法: Usage fsdbedit: fsdb_file_name [options] options: [-insert configFile] [-delete configFile] [-insert_scope scope_string [-attribute attr_string]] [-delete_scope scope_string] [-add_top_analog_scope scope_name] [-rename_scope ] [-o fsdb_file_name] help信息中,还提供了一个例子: examples: Insert a leaf scope. %fsdbedit verilog.fsdb -insert_scope '/system/$scope(test1)' -o sig.fsdb Insert a scope before another scope. %fsdbedit verilog.fsdb -insert_scope '/system/$scope(test1)/i_cpu' -o sig.fsdb Delete one scope. %fsdbedit verilog.fsdb -delete_scope '/system/$scope(i_cpu)' -o sig.fsdb Delete one scope and all the sub-scopes and signals. %fsdbedit verilog.fsdb -delete_scope '/system/$scope(i_cpu)/*' -o sig.fsdb Insert the scope in the configuration file. %fsdbedit verilog.fsdb -insert insert.cfg -o sig.fsdb Delete the scope in the configuration file. %fsdbedit verilog.fsdb -delete delete.cfg -o sig.fsdb Add top scopes for Nanosim or Spice FSDB files. %fsdbedit analog_or_nanosim.fsdb -add_top_analog_scope 'aa.bb' -o sig.fsdb Rename scope. %fsdbedit verilog.fsdb -rename_scope 'top/system' 'A' -o sig.fsdb 其中的$scope(),就是需要操作的波形的层次路径。 下面,介绍一下几个常用的选项的用法: 二、-insert_scope 该选项,用于向fsdb波形中,插入指定的层次路径。 比如我之前的层级路径为 tb_top/u_my_and。 现在想在 u_my_and 层次之上,插入 xxx.yyyy 层次。 那么命令为: fsdbedit -insert_scope '/tb_top/$scope(xxx/yyy)/u_my_and' -o a.fsdb 此时生成的a.fsdb波形文件,层次路径如下: $scope(),参数指定要插入的层次路径信息,使用 / 作为层次分隔符。 三、-rename_scope 该选项,用于向fsdb波形中,重命名指定的层次路径。 比如我之前的层级路径为 tb_top/xxx/yyy/u_my_and。 现在想把 xxx,给重命名成mmm。 那么命令为: fsdbedit a.fsdb -rename_scope /tb_top/xxx' 'mmm' -o b.fsdb 此时生成的fsdb波形中,层次路径信息如下: 四、-delete_scope 该选项,用于向fsdb波形中,删除指定的层次路径。 比如我之前的层级路径为 tb_top/xxx/yyy/u_my_and。 现在想在删除xxx层次。那么命令为: fsdbedit a.fsdb -delete_scope '/tb_top/$scope(xxx)' -o c.fsdb 此时生成的fsdb波形中,层次路径信息如下: 五、总结 利用fsdbedit工具,可以方便的修改fsdb波形文件中的模块的层次路径信息,从而match不同的仿真环境的模块的层次路径信息,从而能够高效的利用verdi进行debug。 |
|
相关推荐
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
如何配置Linux操作系统设备树让我的开发板可以将板子上的GPIO接口用作 I2S输出??
1675 浏览 1 评论
1450 浏览 0 评论
2078 浏览 0 评论
2019 浏览 2 评论
1118 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-20 02:44 , Processed in 0.547749 second(s), Total 68, Slave 52 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号