芯片验证全视之七:验证的周期(下)

本文转自:http://www.eetop.cn/blog/html/28/1561828-436935.html

这一节我们继续剩下的验证周期里的四个阶段。

 

递归测试

递归测试指的是去验证之前的硬件功能在某个缺陷修复或者添加了某项新功能以后,仍然可以通过以前的所有测试用例(test case)和可能添加的新的测试用例。这些可能存在的环境变化包括硬件设计自身的改进、缺陷修复、功能添加和验证环境的更新。在每次的递归测试中可能会发现新的缺陷、添加新的测试用例或者更新验证环境。每次递归测试都会帮助完成两个目标:

  1. 是去确保这次改动没有引入新的缺陷,而且也修复了之前的漏洞,或者按照预定目标实现了新的功能

  2. 由于随机验证在每次递交时,默认的随机种子是不同的,这对于重复递交一套递归测试表也是有意义的。伴随着功能覆盖率,可以通过保持往复的递归测试表和定向新的随机约束域两种方式来将验证完成率逐步提高。

当代的递归测试逐步趋向自动化,这就需要一种合适的递归测试工具协助完成递归测试表的提交、如何去分配到不同的服务器上面以计算量来换取时间的缩短、如何去自动识别仿真的结果最后到总体上给出验证报告。这种协助的递归测试工具,可以从EDA公司的工具表中找到商业化的产品,同时大中型公司也会有适合自己团队工作特点和具体需求的定制工具。针对递归测试工具,我们会在后面的文章,为大家介绍我们团队自行开发的轻量化团队递归测试工具Taiji,源代码也会递交到GitHub供大家下载参考。

递归测试在这里是一项流片前验证完备性检查的重要辅助手段,因为只有通过大量的测试用例同时提交到服务器群组,才有可能完成覆盖率的快速上升,并且满足项目进度的要求。

 

芯片生产

当经历过递归测试阶段(RTL递归和门级网表递归)两部分之后,这意味着芯片的逻辑部分和物力部分数据都经过各项检查了。在将芯片最后送交给半导体生产商(fabrication facility, fab)之前,项目经理也会同设计经理,验证经理,后端经理一同回顾整个检查表,确保所有的标准都已经通过。芯片的数据部分被提交给生产商以后,就最终会被制造出来,此时我们称之为流片(tape-out)。

但值得注意的是,此时功能验证的流程并没有全部走完,也并非停止,而是仍然需要提交递归测试,通过不停地保持随机测试的运算量在可能覆盖的新的状态空间上测试是否有可能会发现新的问题。如果确实是在递交给厂商生产以后又发现新的问题,这样的问题我们也会同硅后的系统测试发现的问题一样对待,通过分析这些缺陷,来考虑是否有软件补救办法,或者提交设计修改意见,在下一次流片前准备好设计的更改方案和验证方案,将其计划到下一次验证周期内。

 

 

硅后系统测试

在芯片返回之后,系统测试人员也会依照系统集成的顺序从底层模块开始测试。在测试之前,我们需要将芯片同测试开发板结合起来,或者将芯片植入到待开发的系统上面。而后,硅前人员(设计人员、验证人员、系统人员)和硅后人员(测试人员)需要保持频繁的沟通。因为一旦测试出了问题,需要第一时间判断是测试的方法不恰当,还是归属于硬件自身问题。之所以要求硅前人员也参与进来,是因为我们实际上不希望硅后测试出现太多的问题,尤其是致命的缺陷。那么当一个硬件缺陷被发现之后,硅前人员就需要讨论这个缺陷的严重性、从软件层面上讨论可行的补救办法、最后再到硬件层面是是否有其他办法使能这项功能或者不使这项功能扩大影响面导致整个芯片的致命缺陷。如果,我们最终无法避免这项缺陷,而且这项缺陷很严重的时候,我们就需要在下个芯片设计周期内去修改和验证这项功能

 

 

逃逸分析

有些时候,我们难以避免一些验证漏洞一直被忽视,导致它们可以从硅前验证阶段通过到了硅后测试直至被发现出来。遇到这样的情况,硬件设计人员和验证人员都需要去跟测试人员沟通,尝试在硅前的仿真环境中重现遇到的测试失败场景。如果可以复现,那么设计人员和验证人员需要再检查这个漏洞之所以逃脱的原因;如果无法复现,那么我们仍旧无法保证硬件做出的更改是否可以在下次流片以后修复这次测试问题。

 

这种硅后测试失败要求硅前验证重现的情况相比较在交给客户之后遇到的应用失败场景还是容易一些的,因为一旦从硬件级别向上堆叠经过驱动层、固件层再到客户的应用侧,我们更加难以重现客户应用失败场景的重现,而如果作为验证人员你有幸遇到过这样的场景重现和失效点定位的问题,那么想必你会深深记住它的。

 

当逃逸分析完成以后,这一过程会对下一个芯片周期中,设计人员如何规避设计陷阱、完善设计经验,验证人员如果充分完善验证方案、产生尽可能多的测试序列都是很有意义的,而在整个芯片过程中都贯穿着吸取教训四个字,因为要完成芯片从硅前到硅后的过程本身就很漫长(相比软件的迭代开发而言),那么要积累尽可能多的经验,对于每一位芯片工程师,都应该在每一个关键节点就养成总结的习惯,并且在下一个阶段有意识地去完善,保持一种不断成长的姿态

你可能感兴趣的:(IC_Verification)