在我的测试平台中,我想通过在RTL中强制某个模块的输出来模拟系统条件:
force DUT.driving_module.xx = 0;
但是当使用force命令执行此操作时,也会强制驱动模块内部输出的导线,这会导致系统的其他部分也受到影响 . 我真正需要的是强制模块的输出,而不改变其内部状态,如下所示:
我根本无法修改RTL代码 . 有没有办法从测试平台实现这一目标?
当端口连接两侧都有一根导线的端口时,导线会折叠成一根导线 .
这样做的方法是在模块中使用 logic 而不是 wire . 你应该在SystemVerilog中任何地方使用 wire 的唯一地方是信号是否有多个驱动程序 .
logic
wire
在Verilog中,您始终可以将模块的输出端口设为 reg
reg
在任何一种情况下,作为变量的输出端口都会创建对更高级别模块中连接的任何内容的隐式连续分配 . 连续分配是单向的,力不会传播回模块 .
1 回答
当端口连接两侧都有一根导线的端口时,导线会折叠成一根导线 .
这样做的方法是在模块中使用
logic
而不是wire
. 你应该在SystemVerilog中任何地方使用wire
的唯一地方是信号是否有多个驱动程序 .在Verilog中,您始终可以将模块的输出端口设为
reg
在任何一种情况下,作为变量的输出端口都会创建对更高级别模块中连接的任何内容的隐式连续分配 . 连续分配是单向的,力不会传播回模块 .