下冰雹 · 2023年08月17日

写assertion很痛苦? 来了解下SVA Checker Library 吧!

先看一段代码

image.png

请根据这段代码写一个assertion检查 count 每次加5。

下面是一种写法

image.png

看起来不算太复杂。

但是如果让你写一个关于fifo 不能overflow 和 underflow的assertion呢?

是不是发现很头大?

笔者发现我们验证中很多assertion 具有一些共性,比如

某个条件永远不能发生;

某个条件一直为真;

req ack的检查;

在一段时间内,某条件一直为真;

fifo的检查;

等等

这些共性的东西,能不能整理成一个assertion的lib呢?带着疑问我们搜索了网上的资料,开始并没有什么收获。

image.png

几乎所有的资料都偏向基础的assertion语法解释。

直到我们看到这份文档,笔者大概猜到这就是我们要找的东西。

image.png
image.png

这完全符合我们最初的设想,有一系列的assertion checker Library 可以供我们调用,实现一些通用的assertion检查。

回到上面第一个问题,我们要用assertion检查count按cycle每次加5怎么做?assert_increment 很好的解决了这个问题。

image.png

调用方法:

assert_increment #(0, 7, 5, 0, "ERROR: count has increased beyond allowable limit", 0, 0, 0, 1) invalid_count_increase (clk, reset_n, count);

第二个问题,fifo的underflow ,overflow的检查。可以用assert_fifo 检查。

image.png

说了这么多,很多人肯定想知道这个assertion checker library是放在哪里的。

答案是

$VCS_HOME/packages/sva/

没错,他就是VCS的 SVA checker library!

image.png

我们点开一个assert_never 看下

image.png

各个参数和说明都有,完美!

大家喜欢今天的文章吗?喜欢的话给点个赞哈!

作者:处芯积律
文章来源:处芯积律

推荐阅读

更多IC设计干货请关注IC设计专栏。
迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
17752
内容数
1281
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息