2017-10-06 145 views
0

SystemVerilog中的整数类型与大多数语言一样,在溢出时进行回绕。我想知道这在限制条件下是否也是如此。例如: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,这当然不是解决方案)

+0

运行模拟以查看所得结果。它会回答你的问题。 – toolic

回答

1

你是对的。无论您是否处于约束范围内,表达式评估都是相同的。除了溢出之外,您还需要关心截断和符号转换。 Integral表达式在SystemVerilog中输入很弱。