Могу ли я получить доступ к отложенному значению в утверждении SystemVerilog

Я хочу использовать старое значение сигнала в утверждении SystemVerilog.

Это то, что я сейчас делаю

logic [ADDRESS_WIDTH-1:0] old_address [1:0];

always_ff@(posedge rdclock) begin
   old_address[0] <= rdaddress;
   old_address[1] <= old_address[0];
end

property FooBar;
   @(posedge rdclock) rden |-> ##2 q == mem[old_address[1]];
endproperty

Baz: assert property (FooBar);

Так и должно быть, или можно как-то использовать старую версию rdaddress прямо в утверждении?


person AxelOmega    schedule 09.02.2015    source источник


Ответы (1)


Вы можете использовать системную задачу $past(...). Использование $past(rdaddress) вернет значение rdaddress, полученное в предыдущем цикле. Вы можете указать, сколько циклов в прошлом нужно пройти вторым аргументом. В вашем случае вызов $past(rdaddress, 2) вернет значение rdaddress 2 цикла назад.

person Tudor Timi    schedule 09.02.2015