随机能增加验证的可信度么?
他说对我们上半年设计的一个芯片很担心,虽然流片后没有发现任何bug。
我问为什么,他说因为以前的验证环境中随机用的太少。我说随机只能减少工作量,并不能帮你发现更多的bug。我们争论了半天,没有结果。
我觉的很困惑,有什么理由认为机选的彩票比你自己选号的彩票更容易获奖?或许是我错了?
看情况,随机测试可以提高一些代码覆盖率(如果原来不高的话),可能可以测出一些边界情况
3#说得很正确。另外还有一个很重要的原因,如下:
假如复杂的设计的某个测试点,有100种可能,其中有效求解空间是80种,无效求解空间是20种。
而验证在制定验证计划时,有可能不能正确把握求解空间(如果是100万种可能就很明显了),比如验证工程师认为只有70种是有效求解空间,10种是无效求解空间。
如果采用directed test,一般的做法是遍历测试验证工程师认为的70种是有效求解空间,必然造成验证的不全面性。而ramdom test往往采用的是把激励限制为无效求解空间的补集,这样,就遍历了90种。当然,在验证中会发现异常输出,再去分析,就能确定是因为输入为无效的激励还是设计的BUG。
一般来说,我们的一个复杂的设计都是由验证工程师进行ramdom test,由设计工程师进行directed test。发现的BUG数量比例大概为9:1。
一般来说,我们的一个复杂的设计都是由验证工程师进行ramdom test,由设计工程师进行directed test。发现的BUG数量比例大概为9:1。
这个数据有点意思
1# eddsos
为了覆盖功能,最好是随机定向都做测试。
而且一般随机也不是乱随机,也是有一定约束的随机。
全部随机怎么也没法保证覆盖率。除非无穷尽的时间测下去
我们一般都是自己的小模块使用直接测试,这个一般用于设计人员
然后合成系统以后使用random test,测试功能
因为系统大了以后没办法直接测试了,呵呵
desigh release出来给验证工程师之前,desiger一般都会自己先跑跑direct case.验证工程师一般都是用random test 方法.但衡量random的程度,一般就靠code & function coverage.还有就是发现bug的频率.如果coverage很高的同时,bug 的频率很低.基本上就可以考虑测试模块ok了.
一般是采用边界情况和伪随机测试生成相互结合的方法来验证!
小编说节省了时间也没错.关键是节省了手工不可能实现的时间.因此达到了手工不可能达到的覆盖率.所以有了手工不可能有的可信度
感兴趣的是什么设计,多大的规模和怎样的复杂度下得出的数据
个人理解random tests可以产生出一些人脑无法想象到的激励,可以更好的帮助你发现一些隐藏比较深的bug。虽然有时候direct tests可以更有效的发现bug,但是这些bug实际上是比较容易发现的。
测试空间是一个无限大的空间,依靠direct TC能够覆盖的点太少,当一个设计大到一定程度,direct tests就有些力不从心了,虽然小弟入行时间不长,但是所经历里的项目验证初期(Sanity Tests)一般用的是direct tests,但是到了中后期(BV,ST),则是启动了大量的random tests,结合daily regress,发现bug的效率之高、深度之深,让人感叹!
另外,如同楼上各位提到的,random tests辅助以Code Coverage & Function Coverage,可以有效的缩短Bug收敛的周期,也可以帮助PM/PL清晰的认识到当前项目所处的验证阶段。
shou jiao !
有些系统不能做随机验证的,比如特定信道,PN码,你做随机验证只能增加代码覆盖率,因为那样做系统无法收敛,也就没有特别的用处
当然,能够做随机测试的还是随机一下比较好
PS:你们的function coverage是用什么测试?也像code coverage一样是以百分比的形式报告出来吗?
随机覆盖,可以减轻direct case在设计上出现的偏离。虽然从总体上覆盖率不一定高多少,但覆盖的面宽了。好像你10发子弹,都打到6环了。随机呢,就相当于10发子弹,1发10环、1发9环、。
random+自動化+function coverage應該是每一個IC都要做的.
学习了。
谢谢楼上的兄弟!
受教了
受教了
随机如果不合覆盖率结合,就一点意义都没有。
如果比作买彩票,那么,机选一张中奖概率当然小,但是如果加上覆盖率--〉我就机选,我不停地机选,以保证覆盖率超高,那中奖几率当然就高了。
找bug也是一样
我印象中有本书,开头就讲到,direct test往往是设计者或者验证者能想到的点,而random test能够覆盖那些设计者或者验证者无意中忽略到的点,或者干脆没想到的点。
你说,random test是不是能增加验证的可信度呢?我觉得是。
讨论的很好, random test 切约时间,同时可以跑到很多边脚情况,我们也一直在用random test 方法,也是一种趋势 vmm