-1

为什么这两个代码不等价?我正在检查两者之间的逻辑等价性,它们失败了,可能是什么错误?是否将其视为宽度不匹配,或由多个驱动程序驱动?我正在使用 cadence LEC 进行形式验证

module driver (a, b);
  input [3:0] a;
  output wand b;

  assign b = a;
endmodule
module driver (a, b);
  input [3:0] a;
  output wand b;

  assign b = a[3];
  assign b = a[2];
  assign b = a[1];
  assign b = a[0];
endmodule
4

1 回答 1

1

assign b = a相当于assign b = a[0]。的高位a超出 的范围b

与溢出相同的原因。例如assign sum[3:0]=a[3:0]+b[3:0],如果 a=15 且 b=2,sum 将为 1,因为没有足够的位来表示 17 (17 mod (2^bitwidth(4)) = 1)。

于 2015-04-16T20:02:30.503 回答