当今的ic和印制电路板非常复杂,需要精细而大范围的测试,这大大增加了电子产品开发和制造的成本,因此,引入可测试设计就十分重要。
开发电子产品的工程小组履行的各种职能中,最花钱的可能集中在验证和测试这两个工序上。表面上看,验证和测试两种职能似乎一样,但只要你再深入研究,很快就会发现两者只是相关而已。验证的目的是排除设计中的错误,确保该设计符合其技术规范。测试的目的是检测由加工制造工序衍生的故障。一个业已完成的设计,可以用为了测试它而开发的相同向量来验证,但却不是在开发期间的验证。工程师们必须开发许多不适用于最终测试但对检测设计错误却是不可或缺的专用测试平台和向量。
一个用来检测设计错误的测试套件表明,以前所做的验证工作不当。在这个阶段纠正错误,成本会很高,甚至可能导致厂家不生产该产品。虽然困难程度不同,但你总是可以排除设计中的错误。工程师们可以使用的有:可按在各个抽象级别对设计进行仿真的各种各样工具,各种硬件加速器和仿真器,甚至用于测试平台开发的多种语言。在开发期间,你总是可以在设计中添加使验证简单化的临时结构。此外,形式验证技术正在成为强有力的设计验证工具。不过,尽管有这么多给人深刻印象的工具,但collettinternationalresearch公司发现,在所有的芯片设计中,首次制造失败的占51%。而且,74%的失效是属于功能错误的。
测试工程师必须研究产品成品的拓扑结构,以便找出错误。这个过程非常艰难,因为工程师只能利用器件上的可用引脚,而且必须应对制造过程中使用的ate(自动测试设备)在运行速度和内存容量方面的限制。(要想了解ate行业状况的最新信息,请见参考文献3。)现代制造工艺使设计师们能够在一块ic芯片上集成数百万只晶体管,以实现多种功能,但机械方面的制约因素使得每个ic封装的引脚数量十分有限。因此,如果不添加一些结构,测试工程师们就不可能找出一个器件中的所有错误。幸运的是,可用晶体管的数量是如此之多,添加这些结构几乎没有任何问题。工程师们只要预料到有问题存在并形成一些允许对内部信号进行访问的支持结构,就可利用预防措施来解决测试问题。eda行业已经开发出了两类产品来解决测试问题:一类是atpg(自动测试图形生成),它可通过检验电路网络和各种功能来提供测试向量;另一类是dft(可测性设计),它可在芯片内生成各种逻辑结构,以便在测试器件时支持生产。设计师们经常在同一芯片中运用这两种方法,因为每种方法的特点是相互补充的。
测试技术的演进
直到几年前,大多数ic都是用功能测试法来测试的。工程师们开发出各种测试向量来检验特定ic的所有功能特性,并在生产过程中利用这些测试来验证每一个单元。然而,目前的ic太复杂了,功能测试向量的数量甚至对于最新的ate来说也是太大了。工程师们认识到,一块ic是由大量独立的或准独立的功能块构成的,单独测试每一个功能块的效率会更高。这种方法叫做结构测试,因为它把一个器件分成一个个功能部件,再单独测试每一个结构。为了完成这项任务,你必须能够给功能块输入适当的向量,并且获得相应的输出。因为功能块可能没有外部的输入端和输出端,所以你必须把一些新的结构插入到ic中。
结构测试的目的是试图验证所有结构——通常是门电路和存储元件,如触发器和锁存器——以及它们之间的大多数互连线路都工作正常。利用设计网表的门电路级表示法,atpg可用算法计算出可控节点的激励源,以便你能测试各种内部设计结构。设计的复杂性和规模日益增大,再加上存储单元数量也很大,已使“控制”和“观察”每一个结构变得更加困难,从而促使人们开发出两种并行方法:“扫描”和“随机测试”。
当今的大多数结构逻辑测试方法都是以全扫描方案为基础的。在全扫描方案中,所有存储元件都连接在一起,成为一个或多个扫描链。以测试模式工作时,ate串行扫描输入和输出这些存储元件的数据,为测试工程师提供了充分的可控性和可观察性。扫描测试包括:扫入图形数据(对每一个扫描链加载),加上一个或多个功能时钟周期,然后扫出捕获的响应数据。全扫描方法实质上是把任何一个顺序设计变换成为组合设计。测试工程师把atpg图形存储在测试器内存中。ate使用若干并行扫描链,把向量输入到电路中。芯片i/o引脚的可用性、可用的测试器通道以及片上路由堵塞(因测试模式中链接各个存储元件而引起的)等因素限制了扫描链的数量。
随机测试方法把随机数据值加到“设计输入”节点,目的是运行设计中的每一个结构(实际上是对它们进行随机控制和观察)。对于内存等常规结构,这种方法很管用。你可以借助定制设计的lfsr(线性反馈移位寄存器)和移相器来改善伪随机图形的质量。只要给lfsr装有不同的种子程序(以启动图形生成),你就可以生成可用的全部随