我可以在SystemVerilog断言中访问延迟值

时间:2015-02-09 15:40:42

标签: fpga system-verilog verification assertion system-verilog-assertions

我想在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

1 个答案:

答案 0 :(得分:1)

您可以使用$past(...)系统任务。使用$past(rdaddress)将返回在上一个周期中采样的rdaddress的值。您可以使用第二个参数指定过去的循环次数。在您的情况下,调用$past(rdaddress, 2)将返回rdaddress之前2个循环的值。