我可以访问 SystemVerilog 断言中的延迟值吗
Can I access delayed value in SystemVerilog assertion
我想在 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
?
您可以使用$past(...)
系统任务。使用 $past(rdaddress)
将 return 上一个循环中采样的 rdaddress
的值。您可以指定过去有多少个周期与第二个参数一起使用。在您的情况下,调用 $past(rdaddress, 2)
将 return 2 个周期之前 rdaddress
的值。
我想在 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
?
您可以使用$past(...)
系统任务。使用 $past(rdaddress)
将 return 上一个循环中采样的 rdaddress
的值。您可以指定过去有多少个周期与第二个参数一起使用。在您的情况下,调用 $past(rdaddress, 2)
将 return 2 个周期之前 rdaddress
的值。