前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SVA断言学习|01.什么是断言(SVA)

SVA断言学习|01.什么是断言(SVA)

作者头像
用户10108023
发布2022-10-28 16:36:04
8360
发布2022-10-28 16:36:04
举报

01

SVA断言学习

这是我自己的学习笔记,基于《SystemVerilog Assertions应用指南》这本书,记录一些我觉得重要的知识点。在芯片验证的过程当中,多多少少都会遇到断言,掌握断言,对于某一些场景下的验证是非常方便的。

举个简单的例子,如果要检查到信号a高电平的一个时钟周期后,信号b应该也为高电平,应该怎么检查最方便?可能有很多种实现方式,但是最方便的,恐怕是断言了。

代码语言:javascript
复制
property CHECK_A_B;
  @(posedge clk)
  signal_a |=> signal_b;
endproperty

FISH_CHECK_A_B: assert property(CHECK_A_B);

在仿真过程中,这个断言会一直检查,如果断言失败,即在a为高电平,一个周期后b不为高电平,断言失败。

SVA, 即system Verilog assertion,是基于systemVerilog的一种断言的写法,可以更方便、快捷的对design的代码进行检查,相比于用Verilog进行检查,SVA有以下优点

  1. 描述性语言,可以完美的描述时序相关的状况,大大方便了时序检查; 所以IC验证中,很多timing的检查,都会大量使用断言,方便快捷;
  2. 提供了很多内嵌函数; 大大方便了使用者,只需要直接调用,而不需要自己去创建函数;
  3. 可以自动收集功能覆盖率数据。

断言的评估和执行包括以下三个阶段

  1. 预备(Preponed)在这个阶段,采样断言变量,且信号或者变量的状态不能改变,确保采到最稳定的值;
  2. 观察(Observed) 对所有属性表达式求值;
  3. 响应(Reactive) 调度 评估属性成功或失败的代码;

这三个阶段可以总结为,什么时候采样,什么时候对断言的表达式求值,最后一步就是响应,判断断言的成功与否。

好了,今天的学习分享就到这里了,个人愚见,希望对你的学习有一点帮助,如有错误也欢迎批评指正。持续更新,欢迎关注。觉得有帮助的朋友,希望能够点个赞鼓励一下!!你的每个鼓励都是我持续创作的动力!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-10-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 不二鱼 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档