Verilog:如果if(1)始终为真,为什么会出现if(0)?

时间:2015-07-30 17:39:40

标签: if-statement verilog

我的verilog总是阻塞如下:

always @ (a)
begin

  if(1) begin
    ..
  end 

  if(0) begin
    ...
  end

end

if(1)是否意味着一旦触发了常规块,该语句就会一直执行? 那么if(0)有什么意义呢?什么时候执行?

注意:这是遗留代码,我不是它的所有者。

2 个答案:

答案 0 :(得分:5)

我不知道这是不是意图,但是这种结构允许你编写包含几个不同代码块的源代码,并通过更改哪些代码快速更改源代码中的哪一个。条件有1

例如,它们可能包含两种不同的方法来实现相同的功能,如果您需要测试哪种方式可以提供更好的性能,这样可以更轻松地来回切换。

或者,它可能与您希望在源中包含多少选项有关。

或者,有时候,它是一种版本控制形式,可让您保留旧代码,直到您确定不再需要它为止。

答案 1 :(得分:3)

有人可能会添加此内容以禁用整个代码块。基本上好像它是在一个块注释内。如果一段代码已经包含块注释,这将特别有用。但它也有点hacky,我不会在生产代码中使用它,当然也不会没有添加评论。