系统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])
答案 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