我的verilog总是阻塞如下:
always @ (a)
begin
if(1) begin
..
end
if(0) begin
...
end
end
if(1)
是否意味着一旦触发了常规块,该语句就会一直执行?
那么if(0)
有什么意义呢?什么时候执行?
注意:这是遗留代码,我不是它的所有者。
答案 0 :(得分:5)
我不知道这是不是意图,但是这种结构允许你编写包含几个不同代码块的源代码,并通过更改哪些代码快速更改源代码中的哪一个。条件有1
。
例如,它们可能包含两种不同的方法来实现相同的功能,如果您需要测试哪种方式可以提供更好的性能,这样可以更轻松地来回切换。
或者,它可能与您希望在源中包含多少选项有关。
或者,有时候,它是一种版本控制形式,可让您保留旧代码,直到您确定不再需要它为止。
答案 1 :(得分:3)
有人可能会添加此内容以禁用整个代码块。基本上好像它是在一个块注释内。如果一段代码已经包含块注释,这将特别有用。但它也有点hacky,我不会在生产代码中使用它,当然也不会没有添加评论。