SVA握手

时间:2013-07-08 13:48:38

标签: system-verilog system-verilog-assertions

我正在尝试为握手程序编写SVA断言。

在我的搜索中,我发现了以下内容:

property p_handshake(clk,req,ack);
@(posedge clk)
req |=> !req [*1:max] ##0 ack;
endproperty
assert property(p_handshake(clock,valid,done));

然而,在有效周期变高后,允许我的“完成”信号进入许多周期。你如何使这个陈述确保在声明有效之后任何点声明“完成”,而没有有效的解除声明?

2 个答案:

答案 0 :(得分:2)

$rose(req) |=> req[*1:$] ##0 ack;

$rose将在req的上升沿启动断言。 [*1:$]表示对于1到无限时钟的范围,左侧必须为true。您可以使用等同于[+]的{​​{1}}。

其他一些编写检查器的方式是:

[*1:$]

答案 1 :(得分:0)

你是否还需要一个SVA来确保在有效$ rose的情况下,还没有声明完成? 如果你这样做,那么请考虑这个SVA- $ rose(有效)| - > 〜完成## 1 $稳定(〜完成)[* 949:950] ## [1:$]完成;

以上要求在一段时间内不断言,然后在将来的某个时间断言。