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

本文详细介绍了循环结构中的[*n:$]、[*]、[+]、[=n]、[->n]等算子的含义及使用方法。这些算子用于描述序列在不同周期内的重复模式,包括连续和非连续循环。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • [*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最后一次出现的下一个周期。

各个运算符图示如下:


### OVL断言库与SystemVerilog Assertion (SVA) 的区别与联系 #### 语法结构 OVL(Open Verification Library)提供了一组预定义的断言语句,这些语句被封装成模块供用户调用。相比之下,SVA允许工程师直接在RTL代码中编写自定义断言表达式[^1]。 对于并发断言而言,二者都能声明随时间变化的行为模式并支持复杂的序列组合;不过,在具体实现上存在差异——前者通过参数化实例化方式应用标准模板,后者则利用丰富的关键字集如`sequence`, `property`等创建高度灵活且可读性强的新规则[^2]。 #### 应用场景 当项目倾向于采用统一风格或者缺乏足够人力去维护大量手写验证组件时,选用成熟的第三方资源如OVL不失为明智之举。然而如果追求更高的性能优化空间以及更加紧密贴合实际需求,则可能更适合借助于具备强大建模能力的SVA来进行细粒度控制[^3]。 此外值得注意的是,由于SVA是作为SystemVerilog的一部分集成到该语言中的特性之一,因此它能更好地与其他高级特性和工具链相融合,例如UVM框架下的测试平台开发工作流里经常可见其身影[^4]。 #### 支持功能 尽管两者都提供了基本的时间顺序检查机制用于捕捉违反预期条件的情况,但在某些特定领域内各有侧重: - **覆盖范围**:除了简单的真/假判断外,部分版本的OVL还增加了覆盖率收集选项以便评估目标电路满足规格的程度; - **调试辅助**:一旦检测到错误信号,SVA不仅会触发相应的动作(比如报告日志),还可以配合波形查看器定位问题根源所在,极大地方便了后续分析过程[^5]. 综上所述,OVL和SVA虽然同属形式化验证手段范畴之内,但由于设计理念和发展背景的不同导致它们之间存在着显著差别;理解清楚各自的优劣有助于做出合理的选择以适应不同阶段的设计验证任务. ```verilog // SVA示例 property p_valid; @(posedge clk) disable iff (!rst_n) $rose(valid); endproperty : p_valid ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值