不管是做设计,还是验证,相信大家都会有一些review会议上被问一些刁钻的问题的经历。当然,与会者问这些不那么容易回答的问题并非有意为难,大多数时候只是纯粹的好奇心。
极限验证法采用的途径是向芯片提出很多难以回答的问题。比如如何使芯片发挥到大程度?哪个特性会使芯片运行到其设计极限?哪些输入和数据会耗费芯片多的运算能力?哪些输入可能无法进入错误处理逻辑?如果芯片用于产生某些特定输出时,使用哪些输入和内部数据可以不断挑战芯片的这能力?
很显然,根据被测芯片的不同,提出的问题也会不同。对于一个计算模块,可能面临着各种错综复杂的输入数据格式和数量。
- 某个cnt是否存在越界,越界之后如何处理?
- 某两个处理过程能够并行?
- 当数据还未处理完成的时候能够改变某些寄存器配置。
这个验证法对每个芯片都不同,但是想法是相同的:
向芯片提出最困难的问题,这样就有可能发现芯片的能力和具体实现之间的差异。
这个验证法有一个变种,就是找麻烦验证法。验证时该方法要求验证人员故意设置各种障碍来看芯片如何应对。有一个非常典型的例子:
一个测试工程师走进一家酒吧,要了一杯啤酒 一个测试工程师走进一家酒吧,要了一杯咖啡 一个测试工程师走进一家酒吧,要了0.7杯啤酒 一个测试工程师走进一家酒吧,要了-1杯啤酒 一个测试工程师走进一家酒吧,要了2^32杯啤酒 一个测试工程师走进一家酒吧,要了一杯洗脚水 一个测试工程师走进一家酒吧,要了一杯蜥蜴 一个测试工程师走进一家酒吧,要了一份asdfQwer@24dg!&*(@ 一个测试工程师走进一家酒吧,什么也没要 一个测试工程师走进一家酒吧,又走出去又从窗户进来又从后门出去从下水道钻进来 一个测试工程师走进一家酒吧,又走出去又进来又出去又进来又出去,最后在外面把老板打了一顿 一个测试工程师走进一 一个测试工程师走进一家酒吧,要了一杯烫烫烫的锟斤拷 一个测试工程师走进一家酒吧,要了NaN杯Null 1T测试工程师冲进一家酒吧,要了500T啤酒咖啡洗脚水野猫狼牙棒奶茶 1T测试工程师把酒吧拆了 一个测试工程师化装成老板走进一家酒吧,要了500杯啤酒并且不付钱 一万个测试工程师在酒吧门外呼啸而过 一个测试工程师走进一家酒吧,要了一杯啤酒';DROP TABLE 酒吧 测试工程师们满意地离开了酒吧。 然后一名顾客点了一份炒饭,酒吧炸了
总之,所做的一切不一定要有什么实际意义,这么做的原因只是因为芯片允许这么做。毕竟,我们知道有时候有的芯片用户真的会这么做。
这个验证法及其变种能发现各种类型的缺陷,从非常重要的缺陷到简单甚至愚蠢的缺陷。它取决于极限验证人员的驾取能力。验证人员必须可以区分哪些是纯属发难的问题,哪些是可以让芯片正确运行的问题。
在验证中,应尽力去创建那些用户真正使用的应用场景,这么做的结果是让人们知道所发现的那些缺陷确实会影响到最终用户,并且应该被及时修复。