具有提前启动的SystemVerilog断言(SVA)含义

时间:2018-10-08 17:34:53

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

我是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);

此声明的目的是检查计时属性:

  • 切换“开始”时,将在5个时钟周期后激活“就绪”。
  • 但是,如果存在预先定义的“开始”,即在激活“就绪”之前的另一个“开始”切换,则应重置此计时属性,并且应将“就绪”静音。

我试图通过使用形式验证工具Synopsys的VC形式来验证此属性。它表明此断言失败的原因是,当发生过早的“开始”时,s2序列为零。

我认为第6行的描述有误,这是一个真正的新手代码。您能不能让我知道如何正确描述早起的断言?

1 个答案:

答案 0 :(得分:0)

我认为你想要

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

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

尽管您可能必须根据自己的要求进行调整,例如在第五个周期startready重合时会发生什么。