SVA 断言16.9 Sequence operations序列运算翻译笔记(12)

16.9.1运算优先级

        如下所示,优先级从上到下:

 16.9.2 序列重复

        序列内子序列连续重复的效果,可以通过明确地(显式)迭代子序列来实现:

//例1
a ##1 b ##1 b ##1 b ##1 c

        使用连续重复运算符 [*3] ,显示了三次迭代,这种顺序行为被更简洁地指定:

a ##1 b [*3] ##1 c
//例2
a [*3] means a ##1 a ##1 a
a [*0]    //表示一个空序列结果

        空序列是指匹配零个时钟信号,而不匹配任何正时钟信号的序列,以下规则适用于将序列与空序列串联,空序列表示为empty,序列表示为seq

(empty ##0 seq) //不会产生匹配
(seq ##0 empty) //不会产生匹配
(empty ##n seq), 其中n大于0, 等价于(##(n-1) seq).
(seq ##n empty), 其中n大于0, 等价于(seq ##(n-1) `true).
//例3
b ##1 ( a[*0] ##0 c)

        例3不生成序列的匹配项。

//例4
b ##1 a[*0:1] ##2 c
//等价于
b ##2 c or b ##1 a ##2 c

        语法在同一序列允许延迟和重复的组合:

`true ##3 (a [*3])     // means `true ##1 `true ##1 `true ##1 a ##1 a ##1 a
(`true ##2 a) [*3]     // means (`true ##2 a) ##1 (`true ##2 a) ##1
                        // (`true ##2 a), which in turn means `true ##1 `true
##1
                        // a ##1 `true ##1 `true ##1 a ##1 `true ##1 `true ##1 a
//例5
(a ##2 b) [*5]
//等价于
(a ##2 b ##1 a ##2 b ##1 a ##2 b ##1 a ##2 b ##1 a ##2 b)

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

//例6
(a ##2 b)[*1:5]
//等价于
(a ##2 b)
or (a ##2 b ##1 a ##2 b)
or (a ##2 b ##1 a ##2 b ##1 a ##2 b)
or (a ##2 b ##1 a ##2 b ##1 a ##2 b ##1 a ##2 b)
or (a ##2 b ##1 a ##2 b ##1 a ##2 b ##1 a ##2 b ##1 a ##2 b)

        同样

//例7
(a[*0:3] ##1 b ##1 c)
//等价于
(b ##1 c)    //注意:a重复次数为0,则其后所跟##1 不执行
or (a ##1 b ##1 c)
or (a ##1 a ##1 b ##1 c)
or (a ##1 a ##1 a ##1 b ##1 c)

        有限的无限重复的情况:

//例8
a ##1 b [*1:$] ##1 c    //a在第一拍为真,c在最后一拍为真,b严格在第一和最后一拍之间为真

        通过精确计数指定重复的迭代次数,相当于指定最小重复次数等于最大重复次数的范,即,seq[*n]等同于seq[*n:n]。

        非连续精确重复将布尔表达式而不是序列作为操作数,它指定布尔表达式在不一定连续且在最后一次迭代匹配时,结束的时钟点处的迭代匹配:

//例9
a ##1 b [->2:10] ##1 c

        在第一拍a为真,在最后一拍c为真,b在倒数第二拍上为真,包括倒数第二拍,在b为真的第一拍和最后一拍之间至少有2个、最多有10个不一定是连续的时钟节拍。

 例9等价于

a ##1 ((!b[*0:$] ##1 b) [*2:10]) ##1 c
//例10
a ##1 b [=2:10] ##1 c
//等价于
a ##1 ((!b [*0:$] ##1 b) [*2:10]) ##1 !b[*0:$] ##1 c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值