2016-11-27 36 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