System verilog Verilog系统中的位缩减一元运算符

System verilog Verilog系统中的位缩减一元运算符,system-verilog,verification,unary-operator,bitwise-or,register-transfer-level,System Verilog,Verification,Unary Operator,Bitwise Or,Register Transfer Level,在系统verilog中,总线或信号是否有减少位的限制 我想在下面的节点中检测到至少一个“1”,并且我正在使用一个“或”操作符,但是,在某些情况下它不能正常工作。这是我在模拟中看到的行为: |000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0010=1 |000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0001=1 |10

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

我想在下面的节点中检测到至少一个“1”,并且我正在使用一个“或”操作符,但是,在某些情况下它不能正常工作。这是我在模拟中看到的行为:

             |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])
最少的例子显示它的工作

然而,如果你错过了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

有一个限制,但远没有接近41位。你能展示包含所有声明的代码吗?谢谢你的重播。我刚刚用我看到的代码编辑了原始帖子,谢谢你的实验。至少它告诉我这个表达式应该是有效的