我試圖想出一個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
謝謝!
你想寫一個約束或屬性?封面屬性將在模擬中檢查您的隨機生成的'my_array'元素是否在'[1:9]'內。一個約束實際上會將你隨機生成的'my_array'元素限制在'[1:9]'內。你需要哪一個? – noobuntu
我在發佈問題時發了一個類型。它應該是一個約束。 –
這不是一個systemverilog隨機約束。這是一個假設財產。您是否正在編寫正式驗證的屬性? – noobuntu