高性能计算机芯片测试技术概述
2017-02-15梁斌
梁斌
[摘要]自从20世纪中叶以来,电子产业,尤其是半导体产业得到了飞快的发展。基于摩尔定律的描述,集成电路的集成度在不断上升,同时特征尺寸也在不断下降。特别是进入纳米及超高速发展的时代以来,电路的设计方法也由最初的全定制设计到后来的基于单元库的半定制设计,现在已经演变为基于IP核的SOC(System On Chip)系统设计。[1]整个IC行业也进行了进一步的分工,主要分为设计、制造和测试三大部分,按照国际半导体技术路线图(ITRS,International Technology Roadmap for Semiconductors)的预测,预计2014年晶体管的测试成本将超过晶体管的制造成本,测试将由原来的辅助角色变成了决定产品成败和利润的关键因素。
[关键词]芯片测试 可测型设计 内建自测试 扫描设计
[中图分类号]TN492 [文献标识码]A [文章编号]1009-5349(2016)20-0147-02
一、可测性设计与测试功耗
为了保证芯片的正确性,最重要的两个环节就是在设计时的验证,以及制造后的测试,然后随着芯片规模的不断扩大,导致测试的成本、难度和功耗都随之增大。为了解决这些难题,学术界和业界都做出了相应的研究和贡献。在这些成果之中,最为广泛的就是:在设计时就考虑到测试问题,即进行可测性设计(Design for Test)。可测性技术将测试的问题提升到设计阶段,因为越早的解决问题,消耗的成本越少,所以,在设计时不仅要考虑设计规则,同时也要满足DFT规则。通常的可测型设计方法包括扫描设计(Scan Design)、内建自测试(BIST)和边界扫描设计(Boundary Scan Design),针对逻辑电路和存储器各自的特征和不同的故障类型,都有适合其本身的DFT方法,其中,扫描设计主要用于数字逻辑电路,边界扫描设计主要用于板级电路,内建自测试主要用于存储器的测试,同时随着逻辑电路规模的不断上升,逻辑内建自测试也成为了一个研究的热点,除此之外,IDDQ的测试也是一种常用的方法,但随着特征尺寸的不断下降,它逐渐失去了原有的检测功能。在解决SOC的测试时,The Test Technology Technical Council (TTTC) of IEEE Computer Society 成立了一个嵌入式核测试的委员会,制定了IEEE P1500标准,同时基于NOC(Network On Chip)的测试也在不断发展中。[2]
二、常见的可测性技术
在现代集成电路的测试中,不仅要保证检测到芯片中所有的故障,并且同时要降低测试成本,其中包括测试时间、功耗和测试压缩。然而进入纳米时代后,集成规模不断扩大,使得只利用传统的测试方法根本无法对被测芯片做到完整的测试。其根本原因在于芯片内部各个节点的可测性,即可控制性和可观测性。无数的学者和工程师都为了改善可控制性和可观测性做了非常深入的研究。最初的方法是一种叫做Ad Hoc的方法,这种方法直截了当的在电路中插入控制点和观测点来改善它的可测性,一般的做法是加入多路选择器和一些简单的组合逻辑门,这样虽然在当时取得了非常不错的效果,但是随着电路功能的进一步复杂,规模的进一步扩大,这种方法也显现出了它的局限性。[3]为此,业界不得不探究新的方法来解决这一问题,最终产生了三种被广为接受的可测试设计方法,即扫描设计(Scan Design)、内建自测试(BIST)和边界扫描设计(Boundary Scan Design)。这三种方法至今仍是工业界主流的可测试设计方法,并且为多数EDA工具供应商所接受,将他们整合到相应的EDA工具中,完成自动化设计流程。
扫描设计的优化:由于全扫描设计存在面积开销较大和测试路径较长等问题,因此在一般的设计中都要插入不止一条的扫描链,将这些扫描触发器连接在不同的扫描链上,但扫描条数也不应过多,因为每增加一条扫描链将要增加一个扫描输入端口和一个扫描输出端口,通常所遵循的原则是:尽量使每条扫描链的长度相等,充分考虑端口的数目和复用,同时也要参考自动测试仪(ATE)的通道数目和数据存储量,对扫描链条数进行合理的分配。
测试图形生成:经过了扫描设计的电路,扫描触发器代替了原来的普通触发器形成了扫描链,使得原本要利用时序电路测试生成方法的电路,现在只需要利用组合电路的测试生成方法就可以达到很高的故障覆盖率,降低了测试生成的难度,同时也减少了测试数据。在现在EDA设计平台下,所有的EDA公司都提供了扫描链插入和测试图形生成的整套EDA工具,并且两者之间可以很好结合。例如Synopsys公司的DFT Compiler和TetraMax就是专门的用于扫描设计的工具,DFT Compiler可以对电路进行触发器的替换,之后再将替换后的触发器按设计者的实际需要连接成扫描链,之后将生成的文档交给TetraMax,让它根据所选的故障类型生成满足一定覆盖率要求的测试图形,同时可以对测试图形进行压缩,测试图形包括STIL、Verilog等多种形式可供选择。这些都可以很好地被ATE所支持,最终完成芯片的测试。[5]
内建自测试:当芯片的功能进一步加强,使得芯片的复杂度和规模不断上升,扫描设计也出现了一些较为棘手的问题。例如测试图形的加载、管脚数目较少和测试费用较高。针对这一系列的问题,内建自测试(BIST)的方法应运而生。内建自测试的基本思想就是将测试图形发生器和测试响应比较器都内嵌到电路里面。它一般包括测试激励生成电路、测试响应压缩电路、测试响应比较电路、理想响应存储电路和测试控制电路。
穷举测试:穷举测试是要对电路中的每一个状态都进行测试,在Intel 80386中就利用了这种方法进行测试激励的生成,但是一般情况下这种方法是不可行的,也是不必要的。因为大规模电路的内部状态将随着它的内部节点和逻辑门数随指数增长,同时,在一个芯片内部,很多状态在实际的功能中并未被使用,因此并没有必要對它们进行测试。
伪穷举测试:伪穷举测试克服了穷举测试中测试图形较多的缺点。一般的做法是将电路进行模块划分或进行敏化路径分割。模块划分是对电路中的模块按照功能进行合理划分,这样就可以对每一部分进行直接的控制和观测,但是这样会增加额外的电路面积。而敏化路径分割是根据PI和PO建立起敏化路径,对每一部分进行单独的测试,并且利用逻辑模拟其他部分的功能,这样就可以使故障在路径上进行正常的传播。
伪随机测试:这种测试图形生成方法是现下比较成功的一种,因为在现实的测试中,想要生成真正的随机测试码是不可能的。伪随机生成的测试图形是确定的,并且具有重复性。最常使用的伪随机测试图形都是根据线性反馈移位寄存器(LFSR)生成的,LFSR作为一个数据发生器,它在每一位上出现0和1的概率都是相等的,一般是利用DFF和异或门进行组合。根据LFSR的本原多项式随着时钟的变化生成一系列的测试图形,在该方法的启示下,又提出了加权伪随机测试图形生成方法。同时随着电路测试数据的进一步压缩,之前的研究中提出了一种新型的二维伪随机测试图形生成方法,该方法是利用了LFSR和Johnson序列进行运算,Johnson计数器随着时钟周期每次变化一位,当Johnson计数器完成了所有的跳变,LFSR根据本原多项式生成新的种子,从新运算得到新的测试图形,该方法由于利用了二维结构使得测试数据取得了很高的压缩率,并且每次只有一位进行变化,从而达到了降低功耗的目的,同时由于具有很好的伪随机性,使得故障覆盖率达到了很好的效果。
测试响应:当得到测试响应后,因为测试响应的数据量过大,不可能直接与理想响应进行比较,因此一般都是要先对测试响应进行压缩,然后再进行对比。然而在响应压缩过程中,有可能会对原有信息造成丢失,这种压缩称为有损压缩,不丢失信息的则是无损压缩,大多数情况下的响应压缩都是有损的,由于经压缩后的响应为特征符号,当该特征符号与理想的特征符号一样时,由于有信息丢失也不能确保该芯片一定没故障,这种情况称为混淆,混淆度的大小决定于压缩算法。常用的压缩算法有:“1”计数和跳变次数压缩。
“1”计数:这种压缩方法是对测试响应中的“1”进行计数,最终得到的特征符号就是该测试响应中“1”的个数。用该特征符号与理想的特征符号进行比较,如果有故障的电路的测试响应的“1”个数也与理想响应的一样,这样就会出现混淆,混效率随着测试响应的长度变长而减小。
内建自测试的分类:内建自测试在最初提出的时候,主要是用于存储器,因为存储器的故障模型和逻辑电路不同,而且它的内部结构十分的规律,同时又只有很少的面积开销,因此使用内建自测试得到了很好的效果。后来随着逻辑电路规模的进一步扩大,对ATE的要求越来越高,使得测试成本急剧上升,从而逻辑电路内建自测试的方法也得到了广大学者和业界的关注。
存储器内建自测试:当在存储器内建自测试中,最主要的问题是测试的调度和隔离问题。在现代集成电路中,每一块芯片中都不止一块的存储器,它们协同合作与逻辑电路交换数据。对于他们进行测试时,一般是共用一个测试图形发生器,根据测试功耗及端口的数目对它们进行合理的测试调度,使得在不超过额定测试功耗的前提下,最大程度的减少测试时间和成本。在与逻辑电路的交互中,存储器周边的逻辑单元起着至关重要的作用,当对存储器测试时,要将存储器和周围的逻辑单元隔离开,使得测试数据可以直接加载到存储器上,同时也可以直接对测试响应进行观测,而不受周围逻辑的限制。
逻辑内建自测试:逻辑内建自测试的原理与存储器的类似,而它的关键问题在于测试激励的生成。因为内建自测试不同于ATPG工具,ATPG工具可以根据软件的方法生成能检测到故障的测试图形,但内建自测试却不同,它是要根据硬件电路生成固定的测试图形,在这其中,或许有很多的测试图形是不能检测到故障的。因此如果要达到与ATPG工具同样的故障覆盖率就较为困难。当前较常使用的激励生成方法还是主要利用LFSR的伪随机性,再结合一些加权因子,这些方法不仅在测试覆盖率上有不错的效果,而且在功耗及时间方面都表现出很好的潜力。
边界扫描设计作为又一种DFT方法,它遵循JTAG标准,早期主要利用于一些FPGA电路中,后来经过进一步的修订和标准化,现在将它扩展到主要解决板级测试和诊断的问题。基本结构:边界扫描的整体结构包括一个测试存取通道(TAP)、一组边界扫描寄存器和一个TAP控制器。
边界扫描寄存器环绕在器件周围,功能和扫描设计的寄存器类似,内部的逻辑可以通过这些存储器进行数据和指令的读写,主要包括指令寄存器和数据寄存器。而数据寄存器又包括旁路寄存器、边界扫描寄存器和器件标志寄存器。
TAP控制是个状态机,主要含有了多种逻辑状态,包括:测试逻辑复位、选择指令寄存器扫描、选择数据寄存器扫描、捕获数据寄存器和数据寄存器移位等,由这些状态的转换可以完成整个测试过程。
边界扫描指令:在边界扫描设计下,TAP控制器有多重测试指令,按照这些指令可以完成相应的测试功能,主要包括以下指令:外测试指令(EXTEST):该指令是为了测试芯片外部的互联结构。内测试指令(INTEST):该指令是为了测试芯片内部的逻辑。运行内建自测试指令(RUNBIST):该指令是为了向器件内部发送一个内建自测试的命令。取器件标志指令(IDCODE):该指令主要是从器件内部读取器件的标号及厂商信息。组件指令(CLAMP):该信号是为了强制器件的输出信号与边界扫描寄存器驱动。旁路指令(BYPASS):该指令的功能是用旁路寄存器旁路掉边界扫描链。
本文重要介绍了集成电路测试的一些基本原理,其中最主要的是可控制性和可观测性,它们作为整个集成电路测试的重中之重,所有的测试方法和算法都是为了提高这两方面的性能。接下来简述了故障和ATPG相关信息,它们是电路测试的理论基础,只有建立了完整的故障模型,才有可能对电路进行接下来的测试。最后概述了常用的几种可测性设计方法,它们都是现下主流的方法,芯片在应用了这些可测性设计方法以后,大大提高了测试效率,使得测试成本急剧下降,但由于芯片规模的进一步扩大,测试的时间及功耗成为了研究的热点问题,尤其是扫描设计的功耗更是成为学者所关心的焦点。
【参考文献】
[1]Qiu W, Wang J, Walker DMH, et al. K Longest Paths Per Gate Test Generation for Scan-Based Sequential Circuit[C].IEEE International Test Conference,2004:223-231.
[2]Semiconductor Industry Association(SIA).Test and Test Equipment,International Technology Roadmap for Semiconductors(ITRS) 2006 Update[R].2006.http://public.itrs.net/辛希孟信息技术与信息服务国际研讨会论文集:A集[C].北京:中国社会科学出版社,1979.
[3]Sehgal A, Chakrabarty K. Optimization of Dual-Speed TAM Architectures for Efficient Modular Testing of SOCs[J].IEEE Transactions On Computers,2007,56(1):120-133.
[4]Maxwell P,Hartanto I,Bentz L.Comparing Functional and Structural Test[C].IEEE International Test Conference,2000:400-407.
[5]Girard P.Low Power Testing of VLSI Circuits: Problems and
Solutions[C].IEEE First International Symposium on Proceedings,2000:
173-179.
責任编辑:张丽