story · 2021年03月24日

assume,用于EDA验证为断言,用于Formal验证为约束

“橘生淮南则为橘,生于淮北则为枳,叶徒相似,其实味不同。所以然者何?水土异也”

《晏子春秋·内篇杂下》

用这句话来概括assume这个SVA语法在EDA验证Formal验证中的区别再好不过了。为什么assume在EDA验证中是断言,而在Formal验证中是约束呢?同样是因为“水土异也”罢了。

Assertion-based design verification is an absolute necessity in today’s large,complex designs . . . 

Every design engineer should be adding assertion checks to his design!

SystemVerilog Assertions Handbook

640.gif

下面本文来一一介绍assert/assume/ cover?

什么是assert?

简单来说,assert是关于设计属性的描述性语言,也是验证人员或设计人员对于设计的预期行为。

check_grant: assert property (!(gnt[0] && !req[0])) 

以上面这个arbiter的断言为例子,断言!(gnt[0]&& !req[0])恒成立,即reg[0]不请求时就不会被授予仲裁。

实际应用中,我们的assert描述通常也不会比这样的描述复杂太多,断言的简明性正是它成为如今数字IC验证不可或缺的一部分的原因之一

在EDA验证中,如果仿真工具运行测试用例时发现断言失败,就会打印出相应的信息。对于上述的例子,就会打印出“Grant without request for agent 0!”

在Formal验证中,上述的assertion就是Formal验证工具(例如cadence的jasperGold)的证明目标。Formal验证工具会遍历所有的合法场景,在数学上证明这个断言永远不会失败。还是那句话,EDA验证只能“证伪”,而Formal验证具有可以“证明”的能力。

什么是assume ?

assume与assert类似,但是assume字面意思上表示DUT的验证环境输入约束,而非DUT的预期行为。例如,也许我们希望输入约束cmd只为WRITE/READ/ATOMIC/EXECUTE,就可以使用下面的assume语句:

good_opcode:assume property (opcode inside {WRITE,READ,ATOMIC,EXECUTE})

在EDA验证中,对于assume和assert的处理是完全相同的。EDA仿真器会在执行测试用例的时候检查assume是否失败,如果失败就会打印相应的信息。

但是在概念上,assume和assert还是有些区别的:assume失败意味着验证环境或者周边设计可能出现了问题,即所测设计激励的行为不符合预期;而assert失败意味着DUT设计的行为不符合预期。对于上述的实例,如果assume失败,意味着验证环境发送了非法激励cmd。

在Formal验证中,assume和assert有着很明显的区别。就和字面意思一样,assume是作为设计的约束,会引导Formal工具产生的合法输入空间。如果没有assume,Formal工具会尽可能地遍历所有的空间,像空气一样到达他能够触及的空间。大多数情况,设计都会对输入有些限制,或者需要使用assume降低Formal full prove的复杂度。

640 (1).gif

什么是cover?

SVA中的cover描述语法和assert和assume类似,但是含义不同。assertion和assume是需要一直保证正确的属性描述,而cover只需要发生一次就可以,用来确保我们关注的场景条件有被覆盖到。例如,在我们的arbiter测试中,我们可能想确保覆盖到所有请求都同时申请的关键场景,我们可以使用下面的Cover描述:

cover_all_at_once: cover property

在EDA验证中,覆盖率是一个非常关键的数据,表明验证人员关注的场景是否真的在用例测试时被覆盖到。通常,需要确保每个测试点都至少被覆盖过一次,不然就说明我们的测试存在潜在的风险。

在Formal验证中,cover也起着重要的作用。尽管理论上Formal覆盖DUT所有的场景,但是如果我们对设计过约了,可能还是会遗漏关键的场景测试。这时候,我们仍然需要使用cover来证明,我们确实对这个场景进行了有效的验证和覆盖。

上面介绍了assertion/assume/cover在EDA验证以及Formal验证中的应用和区别,“橘生淮南则为橘,生于淮北则为枳,叶徒相似,其实味不同。所以然者何?水土异也”,你理解了么?

作者:XinXin_Hu
原文链接:https://mp.weixin.qq.com/s/jVgYz203bMZiAMRCkiznZA
授权转自数字芯片实验室公众号,请勿二次转载。

推荐阅读

更多数字IC设计技术干货等请关注数字芯片实验室专栏。
推荐阅读
关注数
12273
内容数
199
前瞻性的眼光,和持之以恒的学习~
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息