约束整数数组在一定范围内

时间:2016-11-27 05:45:00

标签: arrays for-loop constraints system-verilog-assertions

所有

我试图想出一个SystemVerilog约束,它将用于例如byte my_array [0:8]循环遍历数组中的所有元素,将其值限制在1到9的范围内。例如:

restrict: assume property (
    foreach(my_array[i]) my_array[i] inside {[1:9]}
);

解析器不接受上述内容。请帮忙!我可以在循环中生成9个约束,但希望有更优雅的东西。因此,下面是当前的解决方法。

genvar i;
 for (i=0; i<=8; i++) begin : legal_nums
  restrict: assume property (
   my_array[i] inside {[1:9]}
 ); 
end : c

谢谢!

1 个答案:

答案 0 :(得分:1)

由于您正在编写属性,因此需要使用generate语句。我之前做过这个,经过大量研究,这是唯一可行的方法。