具有抢先启动的 SystemVerilog 断言 (SVA) 含义

SystemVerilog Assertion (SVA) Implication with Preemtive Start

我是 SVA 的新手。我对 SVA 的含义有疑问。

1: sequence s1;
2:   start ##[1:$] !start;
3: endsequence: s1
4:
5: sequence s2;
6:   ready && (!start);
7: endsequence: s2;
8: 
9: assert_ready: assert property (@(posedge clk) s1 |-> ##5 s2);

这个断言的目的是检查时间属性:

我试图通过使用形式验证工具 Synopsys 的 VC formal 来验证这个 属性。它表明此断言失败,因为当优先 'start' 发生时 s2 序列为零。

我想我在第6行的描述有误,这是一个真正的新手代码。您能否让我知道如何正确描述抢先启动的断言?

我想你想要

sequence s1;
   start ##1 !start [*5]
endsequence: s1
sequence s2;
  ready;
endsequence: s2;

assert_ready: assert property (@(posedge clk) s1 |->  s2);

尽管您可能需要根据您对第 5 个周期 startready 重合时发生的情况的要求进行调整。