2016-11-27 4 views
0

Все,Constraint массив целых чисел в пределах определенного диапазона

Я пытаюсь придумать 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

Смежные вопросы