SVA中“或”操作的分布

时间:2016-08-30 21:44:15

标签: system-verilog system-verilog-assertions

鉴于两个属性P1 = (R1 or R2) |-> PP2 = (R1 |-> P) or (R2 |-> P),其中R1R2是序列而P是属性,是否正确{ {1}}相当于P1

我根据LRM附件F中的紧密和中性可满足性的定义进行了计算,并且它们是等效的。 (我不想排除我在某处犯错的可能性。)

我问,因为我看到模拟工具对两者的处理方式不同。

1 个答案:

答案 0 :(得分:1)

我今天再次做了数学计算,两者并不相同。有些情况下属性或形式通过,但序列或形式会失败。

一个简单的例子是属性:

P1 = (1 or (1 ##1 1)) |-> 1
P2 = (1 |-> 1) or (1 ##1 1 |-> 1)
除了⊥之外,

P2对任何一个时钟周期长迹线都非常满意。短于两个时钟周期的走线永远不能满足P1。 (当将两种形式的财产满意度条件插入到强烈满意的定义中时,就会出现这种情况。)

这意味着用简单的英语表示两个线程都是在P1R1部分的一个和R2部分的一个)中开始,需要完成,直到断言为止这家酒店被认为是成功的。但是对于P2,只需要其中一个属性“成熟”,此时,其他属性的尝试将被丢弃。

乍一看似乎有些奇怪而且不那么直观,但它源于SVA的形式语义。我猜,但我不确定,P3 = first_match(R1 or R2) |-> P是否相当于P2。人们需要做数学运算。