SystemVerilog中的整数类型与大多数语言一样,在溢出时回绕。我想知道在约束中是否也是如此。例如:
class Test;
rand bit [3:0] a;
rand bit [3:0] b;
constraint c { a + b <= 4'h6; }
endclass;
当随机化这个类的对象时,是否有可能得到a == 7
和b == 12
的解决方案,这将满足约束条件,因为7 + 12 = 19,它包含在3和3之间小于6?
如果是这样,将约束公式化为
是否有帮助constraint c { a + b <= 6; }
其中6是32位有符号整数,并且强制以32位精度计算求和? (如果随机变量的类型为int
)
答案 0 :(得分:1)
你是对的。无论您是否在约束内,表达式评估都是相同的。除溢出外,还需要关注截断和符号转换。在SystemVerilog中,整数表达式是弱类型的。