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