System Verilog中的比特减少一元运算符

时间:2015-09-17 15:11:03

标签: system-verilog verification unary-operator bitwise-or register-transfer-level

系统verilog中的总线或信号的位减少是否有限制?

我想在下面的节点中检测到至少一个“1”而我正在使用“OR”运算符,但是,它在某些情况下无法正常工作。这是我在模拟中看到的行为:

             |000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0010=1
             |000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0001=1
             |100_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000=0
             |110_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000=0
             |111_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000=1

OR一元位减少运算符是否限制为41位?这意味着我不能减少等于或大于42位的总线/节点?

提前致谢

这是代码:

             node detect_ones  = 1; 
             node [`175-1:0] output_data;

             assign detect_ones   =  (|output_data[42:0])

1 个答案:

答案 0 :(得分:0)

EDA Playground显示正常工作的最小示例。

但是如果你错过了43'b声明,结果会有所不同。

|000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0010=1
|000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0001=1
|100_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000=0
|110_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000=0
|111_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000=1

应该是:

|43'b000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0010=1
|43'b000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0001=1
|43'b100_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000=1
|43'b110_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000=1
|43'b111_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000=1