SystemVerilog约束溢出

时间:2017-10-06 13:49:19

标签: system-verilog

SystemVerilog中的整数类型与大多数语言一样,在溢出时回绕。我想知道在约束中是否也是如此。例如:

class Test;
  rand bit [3:0] a;
  rand bit [3:0] b;

  constraint c { a + b <= 4'h6; }
endclass;

当随机化这个类的对象时,是否有可能得到a == 7b == 12的解决方案,这将满足约束条件,因为7 + 12 = 19,它包含在3和3之间小于6?

如果是这样,将约束公式化为

是否有帮助
constraint c { a + b <= 6; }

其中6是32位有符号整数,并且强制以32位精度计算求和? (如果随机变量的类型为int

,这当然不是解决方案

1 个答案:

答案 0 :(得分:1)

你是对的。无论您是否在约束内,表达式评估都是相同的。除溢出外,还需要关注截断和符号转换。在SystemVerilog中,整数表达式是弱类型的。