SVA(systemverilog assertion)序列循环算子[*] [->] [=]

  • [*n : $], [*] [+]连续循环,是针对sequence的连续循环

[* n:$]结构类似于[* n:m],除了m被$符取代,$符代表无限的意思,并且n意味着重复最少n个周期。 [*]是[* 0:$]的缩写,表示重复至少0次,最多无限次。 [+]是[* 1:$]的缩写,表示重复至少1次,最多无限次。

  • [=n], [=n:m] 非连续循环算子

能够对不连续的循环进行评价,循环评价结束时,不连续的可能性依然继续。重复次数可以是固定常数或固定范围。

b[=m] is equivalent to ( b [->m] ##1 !b [*0:$]
b[=1] is equivalent to:
!b[*0:$] ##1 b ##1 !b[*0:$]
b[=2] is equivalent to:
!b[*0:$] ##1 b ##1 !b[*0:$] ##1 b ##1 !b[*0:$]

(a) |=> (b[=2] ##1 c);

该属性指出,如果从a成立下一个周期开始,那么b应该成立两次,b要么是连续的要么是不连续的,然后稍后一段时间(即下一个周期或之后)出现c。

如果在第二次出现b后出现新的b(且 c 没有成立),则该属性失败。
但是,如果在b的第二次成立之后,c在新的b之前的任何时间发生,或者与最后一次b同时出现,则属性成功。

  • [->n ], [->n:m] goto循环算子

goto循环算子(Boolean[ - > n])允许布尔表达式(而不是序列)在连续或不连续的循环中重复,而且循环评价结束时,不连续的可能性也结束了。 重复次数可以是固定常数或固定范围。

 b [->m] is equivalent to ( !b [*0:$] ##1 b)[*m]
b[->1] is equivalent to:
!b[*0:$] ##1 b
b[->2] is equivalent to:
!b[*0:$] ##1 b ##1 !b[*0:$] ##1 b
(a)|=>(b [->2] ## 1 c);

上述属性指出,如果从a成立下一个周期开始,那么b应该成立两次,它可以是连续的或不连续的。 但是,c必须发生在b最后一次出现的下一个周期。

各个运算符图示如下:


  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值