Systemverilog断言介绍(四)

编程入门 行业动态 更新时间:2024-10-07 19:18:44

Systemverilog<a href=https://www.elefans.com/category/jswz/34/1770475.html style=断言介绍(四)"/>

Systemverilog断言介绍(四)

3.3 SEQUENCES, PROPERTIES, AND CONCURRENT ASSERTIONS

3.3.1 SEQUENCE SYNTAX AND EXAMPLES

一个序列是在一段时间内发生的一组值的规范。构建序列所使用的基本操作是延迟规范器,形式为##n(表示特定数量的时钟)或##[a:b](表示在a和b个时钟之间的可变延迟)。特殊符号$可用于序列的上界,指定可能无限数量的周期。当序列的指定值全部发生时,称该序列被匹配。具有可变延迟的序列在任何执行跟踪过程中可能有多个重叠的匹配。下图展示了一些简单的sequence例子:

另一个常见的序列操作是重复运算符[m:n]。这表示一个子序列将被重复一定次数。同样,上界可以是$,表示可能会有无限次重复。下图展示了使用该运算符的一些示例:

        序列可以使用and、or或者操作符进行逻辑组合。(注意,这些与SystemVerilog中提供的||和&&操作符是不同的,后者用于布尔表达式的逻辑与或运算。)使用and操作符时,表示两个序列同时开始,尽管它们的结束点可能不匹配。对于or操作符而言,两个序列中必须有一个匹配。此外,throughout操作符非常有用,它检查某个布尔表达式在整个序列的执行过程中始终为真;within操作符也很有用,它检查一个序列是否发生在另一个序列的执行过程中。下图展示了使用这些操作符的一些示例:

        通常有用的最后一组序列操作符是跳转重复操作符[-  > n]和[ = n]。它们表示某个值在序列中恰好出现n次,尽管这些出现可能是不连续的,并且在它们之间可能有任意其他活动。简单的跳转[- > n]在该值的最后一次出现时匹配,而非连续的跳转[ = n]允许在最后一次出现之后有任意的其他活动。下图显示了一些示例:

        除非作为断言语句的一部分,否则序列是没有用的;上面的简单示例在技术上是代码片段,而不是有用的语句。将序列作为断言或假设是没有意义的,但序列在构建覆盖属性方面非常有用。下面是一些可能在仲裁器示例中有用的覆盖断言语句的示例:

转自:芯片验证笔记

更多推荐

Systemverilog断言介绍(四)

本文发布于:2023-12-07 16:00:04,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1671612.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:断言   Systemverilog

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!