【问题标题】:Bit reduction unary operator in System VerilogSystem Verilog中的位减少一元运算符
【发布时间】:2015-12-14 12:48:18
【问题描述】:

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

【问题讨论】:

  • 有一个限制,但远不及 41 位。你能显示包含所有声明的代码吗?
  • 感谢重播。我刚刚用代码编辑了原始帖子

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


【解决方案1】:

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

【讨论】:

  • 我明白了,谢谢你的实验。至少它告诉我表达式应该有效
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-09
  • 2018-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多