SystemVerilog 断言有效(请求) - 确认检查



我正在研究SystemVerilog Assertion。我应用 SVA 来检查有效的确认规范。规格如下:

当驱动有效值(0 到 1(时,有效值应等于 1 直到 ACK 被驱动 (1(。当确认被取消断言(1 到 0(时, 有效也是取消断言的(1 到 0(。

为了检查这个规范,我写了两个属性(pr1 和 pr2(。您可以从下面的链接中看到 SVA 代码。https://www.edaplayground.com/x/5gHd

我预计两个属性的工作方式完全相同。但是,pr2 没有按我的预期工作(我预计断言可能会在 50ns 时失败,因为有效值等于 1,但在 50ns 时 ack 等于 0(。

波形:https://www.edaplayground.com/w/x/u5

pr2(50ns时(出了什么问题?

此致敬意

根据SystemVerilog LRM:

最小

最小和最大最大迭代次数范围的重复可以用 连续重复运算符 [* 最小值:最大值]。

在 pr2 中,您使用了 max 等于 $ 的重复运算符,它代表有限但无限的迭代次数,因此只要断言valid,序列valid[*1:$]就会持续,并且只有在valid下降后才会检查ack

最新更新