中文 英语
德赢vwin
的意见

Bug转义和完成的定义

在验证中需要改变什么以提高第一个硅的成功率。

受欢迎程度

在赫兹利亚的国家半导体设计中心(NSTA)是我爱上芯片验证的地方。我在1999年加入了这个团队,当时我还在攻读BSc,在那里我遇到了一群创新者,他们满怀激情地创造出伟大的asic,并不惜一切代价改进我们的工作方式。

这是对我的验证工程和验证管理方面的快速学习。我的大多数管理技能我从石英中学到了今天我的亲爱的朋友。

有一天,我第一次看到了著名的每周bug图表(BPW)。BPW每周收集验证团队发现的bug,以帮助确定芯片的绦虫退出准备。

经理们希望这种趋势会随着团队速度的提高而呈现出越来越多的漏洞,然后随着设计变得越来越清晰而出现越来越少的漏洞。不同的公司使用不同的图表阈值作为tapeout的检查项。

你知道有时候你一眼就能看出什么吗?但是周围的人都把它当作一个微不足道的事实,然后随着时间的推移,你也明白了吗?每隔一段时间你就会问自己:这真的有意义吗?

我记得自己曾对Limor说过:“你知道吗,我们真正应该考虑的是设计中遗留的漏洞,而不是我们已经发现的漏洞。如果BPW的下降趋势只是因为验证团队累了,很难找到这些顽固的bug呢?”

错误逃

每两年,Mentor公司的首席科学家哈里·福斯特(Harry Foster)都会与Wilson Research公司合作进行一项验证性研究。下面的图表令人震惊。

尽管在EDA工具研发上投入了数十亿美元,在验证工作上投入了数百亿美元,但只有30%到50%的ASIC设计能够在首次尝试后投入生产。这并不是说他们没有漏洞,而是说他们没有足够严重的漏洞让派对停办。尽管我们付出了种种努力,但漏洞还是一次又一次地逃逸到硅里。

设计越来越大,我们作为EDA社区必须提出更好的想法。

如果尽管我们努力了,但我们只有30%的时间是第一次正确的,那么有两个原因:

  1. 我们没有足够的时间来完成适当的核查程序。
  2. 我们对完成的定义不够好。

为了解决第一个原因,我们必须加快核查的步伐。在我之前的文章中我几乎做我谈到了如何更快地实现最后一英里的验证收敛,并将其从95%提高到100%,以及Vtool的Cogita如何提供帮助。

但是百分之百是什么呢?

这就引出了第二个原因,完成的定义。

截至目前,我们在数字功能验证中完成的定义是基于代码和功能覆盖范围。虽然这些是重要的指标,但它们中的两个都是100%的承诺让您的硅错误。计算在磁带前有100%的代码和功能覆盖,这可能会有趣。在我的经历中,很多。

后100%覆盖错误狩猎

功能覆盖有几个限制:

  1. 这是不客观的。它不仅和验证工程师的定义一样好,而且很难真正地审查和评估它的完整性。
  2. 功能覆盖不能正确地指示不同场景的分布。虽然存在“点击率”属性,但大多数人只是简单地忽略它,因为它很难分析和跟踪。
  3. 定义基于时间的场景非常困难,通过查看覆盖率结果来检测它们甚至更加困难。

通常,我们向设计师发送wave只是为了建议不同的测试是否真的被导向重要的场景生成。

在Vtool中,我们有另一个覆盖层来定义done。我们在两个层面上做。

第一个是视觉分析。随着时间的推移,通过观察测试的不同属性,工程师对他们的场景是否足够产生直觉。

下面的例子显示了在完全回归中数据包FIFO占用的分布。写和读I/ f独立工作,FIFO的占用取决于这些比率,以及数据包的大小。

占用率被定义为一个覆盖项目,有适当的范围,并与其他属性如包的大小相交叉。

经过几个月的努力,代码和功能覆盖率达到了100%。然而,用Cogita可视化测试结果显示如下:

在这种情况下,工程师可以看到所有的测试都遵循类似的趋势,并且丢失了一些基本的场景。例如,让FIFO溢出,然后清空它,然后再次溢出。

当他创造这个场景的时候,他发现了一个本来可以进入硅的虫子,然后又一个被消灭了。

第二层是使用分类算法。Cogita能够将测试属性分类到与场景的失败或成功相关的组。这在调试失败场景时提供了巨大的帮助。更重要的是,接近100%的分类率揭示了反例。

例如,该算法会告诉你如下内容:

当块被配置为模式A,并且以太网端口在一个大于2 us的时间窗口中以1Gbps以上的速度处于活动状态,DMA正在访问共享内存—那么在99.85%的情况下,测试失败。这里有两个反例。

人们必须问自己,这两个反例有什么了不起之处让测试通过了?

在很多情况下,答案是,“没有什么是那么好。”跳棋者漏掉了。”

就目前而言,我们无法计算设计中遗留的漏洞,然后搭顺风车去工厂。然而,在我们达到100%的覆盖率并首次使用我们的专用集成电路后,我们可以找到更多的此类芯片。



发表评论


(注意:此名称将公开显示)