如何获得具有相似名称的层次结构信号?

问题描述 投票:-1回答:2

假设在我的测试台上,我有以下信号

top.module0.expect
top.module1.expect

是的,我们现在使用相同的模块实例化module0 / 1,在函数get_expect_sig(int module_idx)中(module_idx可以是0或1),我想根据module_idx获取信号

我现在做的是如下:

if (module_idx == 0) return top.module0.expect;
else if (module_idx == 1) return top.module1.expect;

这个解决方案非常难看。如果有任何出色的方法可以帮助我吗?因为我有32个模块,而不是2个模块

谢谢!

verilog system-verilog
2个回答
0
投票

case声明会稍微不那么难看。由于您的设计选择使用唯一名称而不是实例数组来实例化模块,因此无法迭代它们。

某些工具允许您使用字符串名称查找信号的值。然后,您可以使用索引值格式化字符串。您需要阅读工具手册。


0
投票

如果这是testbench代码(不可合成),如果模块0和模块1是同一模块的实例,则可以将接口绑定到它。绑定语句将导致在模块的所有实例中实例化此接口。然后,您可以在此接口中放置一些帮助程序代码,以便使用配置类“注册”。在UVM中,这可能是配置数据库,但在SystemVerilog中,您可以使用静态或单例类。

示例:https://www.edaplayground.com/x/5ZUG

这使用了一些您可能需要阅读的概念(abstract-concrete polymorphic interfaces)。但希望这个例子足够清楚。

© www.soinside.com 2019 - 2024. All rights reserved.