0

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

当valid被驱动(0到1)时,valid应该等于1,直到ack被驱动(1)。当 ack 被取消断言(1 到 0)时,valid 也被取消断言(1 到 0)。

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

我预计两个属性的工作原理完全相同。然而,pr2 并没有像我预期的那样工作(我预计断言可能在 50ns 时失败,因为在 50ns 时 valid 等于 1 但 ack 等于 0)。

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

pr2(50ns)有什么问题?

此致,

4

1 回答 1

0

根据 SystemVerilog LRM:

可以使用连续重复运算符 [* min:max] 表示具有最小最小和最大最大迭代次数范围的重复。

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

于 2016-09-10T12:08:24.300 回答