2016-11-27 37 views
0

全部,约束整数在一定范围内的数组

我试图想出一个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 

谢谢!

+0

你想写一个约束或属性?封面属性将在模拟中检查您的随机生成的'my_array'元素是否在'[1:9]'内。一个约束实际上会将你随机生成的'my_array'元素限制在'[1:9]'内。你需要哪一个? – noobuntu

+0

我在发布问题时发了一个类型。它应该是一个约束。 –

+0

这不是一个systemverilog随机约束。这是一个假设财产。您是否正在编写正式验证的属性? – noobuntu

回答

1

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

+0

我以为是,谢谢! –

+0

不客气。请接受答案 – noobuntu