亚里士多德说:“任何一个系统都有自己的第一性原理,它是一个根基性命题或假设,不能被缺省,也不能被违反。”
《第一性原理》
第一性原理,好比树木的根基,没有人会看到繁茂枝干下的树根,但它决定了树的一切。本文将“第一性原理”的思想引入芯片验证中的几个场景,以理清一些验证问题的本质,直达本源。
我们常问,未来十年什么会变化?这个问题很重要,但更重要的问题可能是,未来十年什么不变?如果能找到不变的,把所有的资源和精力,毫无保留地投入在不变的事物上,其力量不可同日而语。
“归纳法是通过实践推导结论,把连续性的经验推广到一切时空。然而,并非所有事物都有连续性,固有的思维会让你陷入“归纳法谬误”。打破认知边界,实现第二曲线创新,你需要全新的思维模式——演绎法。但是演绎法必须有一个基石,一个来自系统之外、能够逻辑自洽的元起点。这个元起点既可以称为第一前提、逻辑奇点,也可以称为第一性原理。”
《第一性原理》
归纳法等同于芯片验证中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
微信公众号:
推荐阅读
更多IC设计技术干货请关注IC设计技术专栏