System Verilog - 强制信号反转/翻转

时间:2017-02-14 05:37:11

标签: verilog system-verilog

使用此方法强制转换信号的位是否有效?

1

task
begin
force higher_level.lower_level.a[1] = ~higher_level.lower_level.a[1];
end 

我尝试过最好的混合结果。有时候会翻转,有时它会保持不变。

然而,我也编写了一个不太优雅的代码,其目的是翻转位,这一直在起作用,如下所示:

2

task
begin
if(higher_level.lower_level.a[1] == 1'b1)
force higher_level.lower_level.a[1] = 1'b0;
else
force higher_level.lower_level.a[1] = 1'b1;
end

第一个代码不是翻转位的好方法吗?或者还有其他我错过的东西?

其中higher_level.lower_level.a[51:0]是52位信号

谢谢:D

1 个答案:

答案 0 :(得分:0)

不,第一种方法不起作用。如果是这样,它就像一个无限循环振荡器。

第二种方法要求您设置一个采样流程,您需要决定何时采样a

如果a由某个表达式驱动,则可以强制它与该表达式相反。