Verilog在不改变内部状态的情况下对模块输出施加力

时间:2015-11-13 13:32:31

标签: verilog simulation system-verilog register-transfer-level digital-design

在我的测试平台中,我想通过在RTL中强制某个模块的输出来模拟系统条件:

force DUT.driving_module.xx = 0;

但是当使用 force 命令执行此操作时,也会强制驱动模块内部输出的导线,这会导致系统的其他部分也受到影响。 我真正需要的是强制模块的输出,而不改变其内部状态,如下所示:

enter image description here

我根本无法修改RTL代码。有没有办法从测试平台实现这一目标?

1 个答案:

答案 0 :(得分:1)

如果端口连接两侧都有一根导线,则导线会折叠成一根导线。

执行此操作的方法是在模块中使用logic而不是wire。你应该在SystemVerilog中的任何地方使用wire的唯一地方是信号是否有多个驱动程序。

在Verilog中,您始终可以将模块的输出端口设为reg

在任何一种情况下,作为变量的输出端口都会为更高级别模块中连接的内容创建隐式连续分配。连续分配是单向的,力不会传播回模块。