使用fsdbedit工具修改fsdb波形的层次结构

9 篇文章 4 订阅

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:

  1. Insert a leaf scope.

    %fsdbedit verilog.fsdb -insert_scope ‘/system/$scope(test1)’ -o sig.fsdb

  2. Insert a scope before another scope.

    %fsdbedit verilog.fsdb -insert_scope ‘/system/$scope(test1)/i_cpu’ -o sig.fsdb

  3. Delete one scope.

    %fsdbedit verilog.fsdb -delete_scope ‘/system/$scope(i_cpu)’ -o sig.fsdb

  4. Delete one scope and all the sub-scopes and signals.

    %fsdbedit verilog.fsdb -delete_scope ‘/system/$scope(i_cpu)/*’ -o sig.fsdb

  5. Insert the scope in the configuration file.

    %fsdbedit verilog.fsdb -insert insert.cfg -o sig.fsdb

  6. Delete the scope in the configuration file.

    %fsdbedit verilog.fsdb -delete delete.cfg -o sig.fsdb

  7. Add top scopes for Nanosim or Spice FSDB files.

    %fsdbedit analog_or_nanosim.fsdb -add_top_analog_scope ‘aa.bb’ -o sig.fsdb

  8. 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。

如果你想要快速入门、转行做数字前端设计,不妨到移知官网学习这些课程,给自己一次蜕变的可能。芯片东西还是挺多的,要讲的也太多。慢慢学吧。祝好运!

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Makefile 中控制 fsdb 波形的生成,你可以使用以下步骤: 1. 首先,确保你的工程支持 fsdb 波形的生成。这意味着你的设计需要使用 Verilog 或者 VHDL 语言,并且你的仿真工具支持生成 fsdb 波形文件。 2. 在 Makefile 中,你需要定义一个目标(target)来生成 fsdb 波形文件。你可以使用仿真工具提供的命令行选项来实现这一点。例如,如果你使用的是 VCS 仿真工具,你可以使用以下命令行选项来生成 fsdb 波形文件: ``` vcs -fsdb <其他选项> ``` 其中 `<其他选项>` 是你在编译和仿真过程中所使用的其他选项。 3. 在 Makefile 中,你可以创建一个规则(rule)来定义生成 fsdb 波形文件的步骤。这个规则应该依赖于编译和仿真的步骤,并且在执行时调用仿真工具的命令行来生成 fsdb 波形文件。例如: ``` waveform.fsdb: design.v sim.v vcs -fsdb <其他选项> -o simulation_output mv simulation_output waveform.fsdb ``` 这里假设 `design.v` 是你的设计文件,`sim.v` 是你的仿真文件。`waveform.fsdb` 是生成的 fsdb 波形文件。 4. 最后,在 Makefile 中,你需要定义一个默认目标,该目标依赖于生成 fsdb 波形文件的目标。这样,当你运行 `make` 命令时,Makefile 将自动执行生成 fsdb 波形文件的步骤。例如: ``` all: waveform.fsdb waveform.fsdb: design.v sim.v vcs -fsdb <其他选项> -o simulation_output mv simulation_output waveform.fsdb ``` 这样,当你运行 `make` 命令时,Makefile 将会自动执行生成 fsdb 波形文件的步骤。 请注意,上述示例中的命令行选项和文件名可能需要根据你的实际情况进行修改。此外,如果你使用的是其他仿真工具(例如 ModelSim),你需要查阅相应的文档以了解如何在命令行中生成 fsdb 波形文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值