引言
不考虑项目中使用的验证方法,SystemVerilog断言可帮助加快验证过程。使用有效的SV断言,能在验证计划中识别正确的检验器集,并实现检验器的检查,有助于快速发现设计错误,并最终帮助进行高质量的设计。
如下是
SV断言的一些关键优点 :
- 使用SVA代码可以有效地在很多行中实现多行代码检查。
- 综合时可以忽略SVA。
- 因为断言可以指出故障的确切时间点,所以断言只需花费较少的时间进行调试,并且断言可以在仿真过程中打开/关闭。断言失败也有严重性级别,即其可能是由于非致命错误或致命错误。
- 多时钟断言在围绕跨时钟域(CDC)逻辑编写检验器时很有用。
- 断言也可以用于形式验证。
让我们看一下不同类型的SV断言示例。
简单的##延迟断言:
![98cc2db98772f976d39c7d71cb1febdb.png](https://i-blog.csdnimg.cn/blog_migrate/f39389c44e2a5f80c22d092f6b6e40a5.png)
属性hash_delay_p检验的是: a)在每个时钟周期,信号“a”被置为高电平; b)如果两个时钟周期后的一个周期中信号“a”为高电平,则信号“b”必须置为高电平。
波形片段:
![9bd47b5c66c1c749567a0dfa64d8c491.png](https://i-blog.csdnimg.cn/blog_migrate/0944d0a29b8df76100398dfb6ca4f73a.jpeg)
当信号“a”为高电平,且两个时钟周期后,信号“b”也为高电平时,断言通过。 在以下两种情况时断言失败:
交叠蕴含:
![37af62ae836acb81cd1799676e1af20c.png](https://i-blog.csdnimg.cn/blog_migrate/7842fcc28480d4be99e16142c10526e4.png)
属性overlapped_implication_p检验的是: 如果交叠蕴含符“|->”(被称为“先行算子”)的左边条件(“a”==1)为真,则在同一个时钟周期内检查右边(被称为“后续算子”)条件表达式(“b”==1)。
波形片段:
![c4ec6672b2b1db9f6568821c17fd79cc.png](https://i-blog.csdnimg.cn/blog_migrate/ae2b3af18a3fd3edc35445633e92d5d6.png)
在上面的波形片段中,当信号“a”为高电平,并且在同一个时钟周期内,信号“b”也为高电平时,断言通过。当信号“a”未被置为高电平时,断言则保持在“无效”状态。
仅当信号“a”被置为高电平,并且在同一个时钟周期内,信号“b”未被置为高电平时,断言失败。
非交叠蕴含:
![76a8873bf17592bbb75e2b077763facf.png](https://i-blog.csdnimg.cn/blog_migrate/a89f10d52844a34f51ba373cd929e7ff.png)
属性non_overlapped_implication_p检验的是: 如果非交叠蕴含符“|=>”(被称为“先行算子”)的左边条件(“a”==1)为真,则在下一个时钟周期检查右边(被称为“后续算子”)条件表达式(“b”==1)。
波形片段:
![98fc04e84e7e09755cea61c4cddfba94.png](https://i-blog.csdnimg.cn/blog_migrate/5ae03cf0b48c3fbf254ae55ab962381f.png)
在上面的波形片段中,当信号“a”为高电平,并且在下一个时钟周期内,信号“b”也为高电平时,断言通过。当信号“a”未被置为高电平时,断言则保持在“无效”状态。
仅当信号“a”被置为高电平,并且在下一个时钟周期内,信号“b”未被置为高电平时,断言失败。
带延迟范围的断言:
![2c85447dabee4ffc3db15155c23304d5.png](https://i-blog.csdnimg.cn/blog_migrate/2655ff5fdf95d4c17854f2f8ebfe8a4d.jpeg)
属性overlapped_implication_with_range_p检验的是: 当信号“a”被置为高电平时,在给定的等待时间范围内,将检查信号“b”的断言。
波形片段:
![55a1ffe003221f14a290a2865d59dc0c.png](https://i-blog.csdnimg.cn/blog_migrate/6aef8db9e1d98fb7966d3e03f3b16d8b.png)
在上面的波形片段中,当信号“a”被置为高电平,并且在5到7(MIN_DELAY:MAX_DELAY)个时钟周期内,信号“b”也被置为高电平时,断言完成。
当信号“a”被置为高电平,并且在5到7个时钟周期内,信号“b”未被置为高电平时,断言失败。
$rose:
![8975e5056bc573e4e76cdbfb9e558f7f.png](https://i-blog.csdnimg.cn/blog_migrate/4907611ea8235dcd219d79dc7cc05fc1.jpeg)
属性rose_p检验的是当信号“a”置为高电平时,在同一个时钟周期内,还检测到信号“b”的上升沿。
波形片段:
![0ee241fc8acda598295d2ae7702b77b7.png](https://i-blog.csdnimg.cn/blog_migrate/d719ad98a5e9a6ec88edb64da342e921.png)
在上面的波形片段中,当信号“a”被置为高电平,在同一个时钟周期内,信号“b”的上升沿也被检测到时,断言通过。
当信号“a”被置为高电平,而在