Dinglei_hello · 2021年11月08日

第一性原理和芯片验证

亚里士多德说:“任何一个系统都有自己的第一性原理,它是一个根基性命题或假设,不能被缺省,也不能被违反。”
《第一性原理》

第一性原理,好比树木的根基,没有人会看到繁茂枝干下的树根,但它决定了树的一切。本文将“第一性原理”的思想引入芯片验证中的几个场景,以理清一些验证问题的本质,直达本源。
112233.gif

我们常问,未来十年什么会变化?这个问题很重要,但更重要的问题可能是,未来十年什么不变?如果能找到不变的,把所有的资源和精力,毫无保留地投入在不变的事物上,其力量不可同日而语。

“归纳法是通过实践推导结论,把连续性的经验推广到一切时空。然而,并非所有事物都有连续性,固有的思维会让你陷入“归纳法谬误”。打破认知边界,实现第二曲线创新,你需要全新的思维模式——演绎法。但是演绎法必须有一个基石,一个来自系统之外、能够逻辑自洽的元起点。这个元起点既可以称为第一前提、逻辑奇点,也可以称为第一性原理。”
《第一性原理》

归纳法等同于芯片验证中simulation,当你在某个场景下连续采样一个接口100遍甚至1000遍,发现这个接口保持不变,就可以认为这个接口保持不变么?

1、你永远无法保证其中偶尔会出现的一两次跳变;

2、你永远无法从根本上证明这个接口保持不变这一特性,特别是在这些场景的边界往往会超出我们预知的边界。

接口会保持连续性的隐含假设其实也是我们验证过程中一种check不完备或者激励过约的一种体现,存在遗留bug的风险。

虽然在科学领域中,归纳法以所谓的“独立可重复性”作为标准,从而确保实验结果的有效性,但这并不意味着,我们通过归纳法总结出来的规律就一定是真实的。也就是说,这能证伪不能证明

从验证的角度,我们需要从根本上进行演绎推理证明在该场景下接口保持不变这一feature。可以利用断言,这个接口在这期间的每一拍保持不变。

这样就可以从根本上证明这个特性。

在验证过程中“从基石和结构切入,不要从内容入手”。如果我们需要验证A-C:

1、在RTL中实现是A ->B(RTL内部信号) ->C,这个时候我们一定需要保证我们整个验证环路的正确性,仅仅能够证明B->C是不可信的,依赖RTL内部信号的任何检查都是赌博,哦不,是赌命。

2、如果验证的feature是A+B=C,而RTL由于各种PPA的考虑,RTL的实现是A+B +B-B=C。功能性验证就应该直达本源,不要看实现的表象,关注这个feature本身,避免参考模型和设计错到一起。

对于验证,验证逻辑的比检查更加真实。也就是说,我们从A推导出B,中间的过程必须符合正确的逻辑。甚至古希腊人认为从A事物到B事物之间的逻辑才是实体,而A、B这两个事物不一定是实体。

作者:验证哥布林
原文链接:https://mp.weixin.qq.com/s/sXHjERkZBa3PjRoU6fttnw
微信公众号:
芯片验证工程师.jpg

推荐阅读

更多IC设计技术干货请关注IC设计技术专栏
推荐阅读
关注数
20186
内容数
1307
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息