2016-08-25 3 views
0

Я новичок в systemverilog и SVA, и я пытаюсь создать утверждение для генератора prbs, сравнивая любой заданный массив (logic [6:0]) с тем же массивом 127 тактов. Проблема в том, что операторы, которые я нашел полезными для сравнения массивов, не позволяют параллелизм, а те, которые позволяют параллелизму работать только с битами.Сравнение параллельного массива SVA

Пытаясь иллюстрировать то, что я хотел сделать, было бы что-то вроде этого:

logic [6:0] seq 
assert property (@posedge clock) (seq === #127 seq)); 

ответ

1

Что-то вдоль линий:

property DLY; 
    logic MEM [6:0]; 
    (1'b1, MEM = seq) |-> ##127 (seq_OUT == MEM); 
endproperty 

DLY_CHK : assert property (@(posedge clock) DLY); 

должен сделать трюк. Это использует локальную переменную и (,) для назначения локальной переменной (MEM). Затем будет проверено 127 тактов.

С конструкцией (,), если LHS запятой истинна (что в моем примере оно всегда есть), тогда выполняется RHS запятой. Возможно, вы захотите изменить 1'b1 на какой-то управляющий сигнал. Вы можете поставить одну из трех вещей на РИТ от запятой:

  • присваивание локальной переменной
  • приращение или уменьшение локальной переменной
  • вызов задачи, метод задачи, ничтожной функция, функция функции пустоты или системная задача

См. разделы 16.10 и 16.11 от IEEE 1800-2012.