数字集成电路测试基本原理及其应用分析
一、数字集成电路测试的基本原理
器件测试的主要目的是保证器件在恶劣的环境条件下能完全实现设计规格书所规定的功能及性能指标。用来完成这一功能的自动测试设备是由计算机控制的,因此,测试工程师必须对计算机科学编程和操作系统有详细的认识,测试工程师必须清晰了解测试设备与器件之间的接口,懂得怎样模拟器件将来的电操作环境,这样器件被测试的条件类似于将来的应用环境。
首先有一点必须明显的是,测试成本是一个很重要的因素,关键目的之一就是帮助降低器件的生产成本,甚至在优化的条件下,测试成本有时能占到器件总体成本的40%左右,良品率和测试时间必须达到一个平衡,以取得最好的成本效率。
1、不同测试目标的考虑
依照器件开发和制造阶段的不同,采用的工艺技术的不同,测试项目种类的不同以及待测器件的不同,测试技术可以分为很多种类。
器件开发阶段的测试包括:特征分析:保证设计的正确性,决定器件的性能参数;
产品测试:确保器件的规格和功能正确的前提下减少测试时间提高成本效率;可靠性测试:保证器件能在规定的年限之内正确工作;
来料检查:保证在系统生产过程中所有使用的器件都能满足它本身规格书要求,并能正确工作。
制造阶段的测试包括:
圆片测试:在圆片测试中,要让测试衣管脚与器件尽可能地靠近,保证电缆,测试衣和器件之间的阻抗匹配,以便于时序调整和矫正。因而探针卡的阻抗匹配和延时问题必须加以考虑。
封装测试:器件插座和测试头之间的电线引起的电感是芯片载体及封装测试的一个首要的考虑因素。
特征分析测试,包括门临界电压、多域临界电压、旁路电容、金属场临界电压、多层间电阻,金属多点接触电阻、扩散层电阻,接触电阻以及FET寄生漏电等参数测试。
通常的工艺种类包括:
TTL、ECL、CMOS、NMOS、Others
通常的测试项目种类:
功能测试:真值表、算法向量生成
直流参数测试:开路/短路测试,输出驱动电流测试、漏电电源测试、电源电流测试、转换电平测试等。
交流参数测试:传输延迟测试,建立保持时间测试、功能速度测试、存取时间测试、刷新/等待时间测试,上升/下降时间测试。
2、直流参数测试
直流测试是基于欧姆定律的用来确定器件电参数的稳态测试方法。比如,漏电流测试就是在输入管脚施加电压,这使输入管脚与电源或地之间的电阻上有电流通过,然后测量其该管脚电流的测试,输出驱动电流测试就是在输出管脚上施加一定电流,然后测量该管脚与地或电源之间的电压差。
通常的DC测试包括:
接触测试(短路-开路):这项测试保证测试接口与器件正常连接,接触测试通过测量输入输出管脚上保护二极管的自然压降来确定连接性。二极管上如果施加一个适当的正向偏置电流,二极管的压降将是0.7V左右,因此接触测试就可以由以下步骤来完成:
(1)所有管脚设为0V,
(2)待测管脚上施加正向偏置电流"I",
(3)测量"I"引起的电压,
(4)如果该电压小于0.1V,说明管脚短路,
(5)如果电压大于1.0V,说明该管脚开路,
(6)如果电压在0.1V到1.0V之间,说明该管脚正常连接。
漏电(IIL,IIH,IOZ):理想条件下,可以认为输入及三态输出管脚和地之间是开路的,但实际情况,它们之间为高电阻状态,它们之间的最大的电流就称为漏电流。或分别称为输入漏电流和输出三态漏电流,漏电流一般是由于器件内部和输入管脚之间的绝缘氧化膜在生产过程中太薄引起的,形成一种类似于短路的情形,导致电流通过。
三态输出漏电IOZ是当管脚状态为输出高阻状态时,在输出管脚使用VCC(VDD)或GND(VSS)驱动时测量得到的电流,三态输出漏电流的测试和输入漏电测试类似,不同的是待测器件必须被设置为三态输出状态。
转换电平(VIL,VIH)。转换电平测量用来决定器件工作时VIL和VIH的实际值。(VIL是器件输入管脚从高变换到低状态时所需的最大电压值,相反,VIH是输入管脚从低变换到高的时候所需的最小电压值)。这些参数通常是通过反复运行常用的功能测试,同时升高(VIL)或降低(VIH)输入电压值来决定的,那个导致功能测试失效的临界电压值就是转换电平,这一参数加上保险量就是VIL或VIH规格,保险量代表了器件的抗噪声能力。
输出驱动电流(VOL,VOH,IOL,IOH)。输出驱动电流测试保证器件能在一定的电流负载下保持预定的输出电平,VOL和VOH规格用来保证器件在器件允许的噪声条件下所能驱动的多个器件输入管脚的能力。
电源消耗(ICC,IDD,IEE)。该项测试决定器件的电源消耗规格,也就是电源管脚在规定的电压条件下的最大电流消耗,电源消耗测试可分为静态电源消耗测试和动态电源消耗测试,静态电源消耗测试决定器件在空闲状态下时最大的电源消耗,而动态电源消耗测试决定器件工作时的最大电源消耗。
3、交流参数测试
交流参数测试测量器件晶体管转换状态时的时序关系。交流测试的目的是保证器件在正确的时间发生状态转换,输入端输入指定的输入边沿,特定的时间后在输出端检测预期的状态转换。
常用的交流测试有传输延迟测试,建立和保持时间测试,以及频率测试等。
传输延迟测试是指在输入端产生一个状态(边沿)转换和导致相应的输出端的状态(边沿)转换之间的延迟时间,该时间从输出端的某一特定的电压开始到输出端的某一特定的电压结束,一些更严格的时序测试还会包括以下的这些项目:
三态转换时间测试
TLZ,THZ:从输出使能关闭到输出三态完成的转换时间。
TZL,TZH:从传输使能开始到输出有效数据的转换时间。
存储器读取时间--从内存单元读取数据所需的时间,测试读取时间的步骤一般如下所示
(1)往单元A写入数据"0",
(2)往单元B写入数据"1",
(3)保持READ为使能状态并读取单元A的值,
(4)地址转换到单元B,
(5)转换时间就是从地址转换开始到数据变换之间的时间。
写入恢复时间--在写操作之后的到能读取某一内存单元所必须等待的时间。
暂停时间--内存单元能保持它们状态的时间,本质上就是测量内存数据的保持时间。
刷新时间--刷新内存的最大允许时间。
建立时间--输入数据转换必须提前锁定输入时钟的时间。
保持时间--在锁定输入时钟之后输入数据必须保持的时间。
频率--通过反复运行功能测试,同时改变测试周期,来测试器件运行的速度,周期和频率通常通过二进制搜索的办法来进行变化。频率测试的目的是找到器件所能运行的最快速度。
二、存储器和逻辑芯片的测试
存储器芯片测试介绍
存储器芯片是在特定条件下用来存储数字信息的芯片。存储的信息可以是操作代码,数据文件或者是二者的结合等。根据特性的不同,存储器可以分为以下几类,如表1所示:
存储器的种类与特性
存储器术语的定义
在讨论存储器芯片测试之前,有必要先定义一些相关的术语。
写入恢复时间(Write Recovery Time):一个存储单元在写入操作之后和正确读取之前中间必须等待的时间。
保持时间(Hold Time):输入数据电平在锁存时钟之后必须保持的时间间隔。
Pause Test:存储器内容保持时间的测试。
刷新时间(Refresh Time):存储器刷新的最大时间间隔。
建立时间(Setup Time):输入数据电平在锁存时钟之前必须稳定保持的时间间隔。
上升和下降时间(Rise and Fall Times):功能速度测试是通过重复地进行功能测试,同时改变芯片测试的周期或频率来完成的。测试的周期通常使用二进制搜索的办法来进行改变。这些测试能够测出芯片的最快运行速度。
写入恢复(Write Recovery):一个存储单元在写入操作之后和下一个存储单元能正确读取之前中间必须等待的时间。
读取时间(Access time):通常是指在读使能,片选信号或地址改变到输出端输出新数据的所需的最小时间。读取时间取决于存储器读取时的流程。
存储器芯片测试中的功能测试
存储器芯片必须经过许多必要的测试以保证其功能正确。这些测试主要用来确保芯片不包含一下类型的错误:
存储单元短路:存储单元与电源或者地段路
存储单元开路:存储单元在写入时状态不能改变相邻单元短路:根据不同的短路状态,相邻的单元会被写入相同或相反的数据地址
开路或短路:这种错误引起一个存储单元对应多个地址或者多个地址对应一个存储单元。这种错误不容易被检测,因为我们一次只能检查输入地址所对应的输出响应,很难确定是哪一个物理地址被真正读取。
存储单元干扰:它是指在写入或者读取一个存储单元的时候可能会引起它周围或者相邻的存储单元状态的改变,也就是状态被干扰了。
存储器芯片测试时用于错误检测的测试向量
测试向量是施加给存储器芯片的一系列的功能,即不同的读和写等的功能组合。它主要用于测试芯片的功能错误。常用的存储器测试向量如下所示,分别介绍一下他们的执行方式以及测试目的.
全”0”和全”1”向量: 4n行向量
执行方式:对所有单元写”1”再读取验证所有单元。对所有单元写”0”再读取验证所有单元。
目的:检查存储单元短路或者开路错误。也能检查相邻单元短路的问题。
棋盘格(Checkerboard)向量:4n行向量
执行方式:先运行0-1棋盘格向量,也就是第一个单元写1,第二个单元写0,第三个单元再写1,依此类推,直到最后一个单元,接下来再读取并验证所有单元。再运行一个1-0棋盘格向量,就是对所有单元写入跟0-1棋盘格完全相反的数据,再读取并验证所有单元。
目的:这是功能测试,地址解码和单元干扰的一个最基本最简单的测试向量。它还能检查连续地址错误或者干扰错误,也通常用它作为时间测量时的向量。
Patterns Marching向量:5n行向量
执行方式:先对所有单元写0.读取第一个单元,再对第一个单元写1。再读取第二个单元,再对第二个单元写1,依此类推,直到最后一个单元。最后再重复上述操作,只是写入数据相反。
目的:这是功能测试,地址解码和单元干扰的一个最基本最简单的测试向量。它还能检查连续地址错误或者干扰错误,也通常用它作为时间测量时的向量。
Walking向量:2n^2 行向量
执行方式:先对所有单元写0,再读取所有单元。接下来对第一个单元写1,读取所有单元,读完之后把第一个单元写回0。再对第二个单元写1,读取所有单元,读完之后把第二个单元写回0。依次类推,重复到最后一个单元。等上述操作完成之后,再重复上述操作,只不过写入的数据相反。
目的:检查所有的地址解码错误。它的缺点是它的运行时间太长。假设读写周期为500ns,对一个4K的RAM进行wakling向量测试就需要16秒的测试时间。如果知道存储器的结构,我们可以只进行行或者列的walking以减少测试时间。
Galloping写入恢复向量:12^2n行向量
执行方式:对所有单元写0。再对第一个单元写1(基本单元),读取第二个单元, 然后返回来读取第一个单元。再对第二个单元写0,读第二个单元。接下来再在其它所有单元和基本单元之间重复这个操作。等第一个单元作为基本单元的操作完成之后,再把第二个单元作为基本单元,再作同样的操作。依此类推,直到所有单元都被当过基本单元。最后,再重复上述过程,但写入数据相反。
目的:这是功能测试,地址解码测试和干扰测试一个极好的向量。如果选择适当的时序,它还可以很好地用于写入恢复测试。同时它也能很好地用于读取时间测试。
其他的测试向量都类似于以上这些向量,都基于相同的核心理念。
动态随机读取存储器(DRAM)
动态随机读取存储器(DRAM)的测试有以下的一些特殊要求:
1.行地址和列地址在相同的地址线上输入(行列地址复用)。他们分别通过RAS和CAS信号来锁存。
2.需要在固定的时间间隔内对芯片进行刷新。
3.DRAM能够进行页操作。因此需要保持行地址不变而改变列地址(或者相反)。
逻辑测试介绍
逻辑芯片功能测试用于保证被测器件能够正确完成其预期的功能。为了达到这个目的,必须先创建测试向量或者真值表,才能进检测代测器件的错误。一个真值表检测错误的能力有一个统一的标准,被称作故障覆盖率。测试向量与测试时序结合在一起组成了逻辑功能测试的核心。
测试向量
测试向量-也称作测试图形或者真值表-由输入和输出状态组成,代表被测器件的逻辑功能。输入和输出状态是由字符来表示的,通常1/0用来表示输入状态,L/H/Z用来表示输出状态,X用来表示没有输入也不比较输出的状态。事实上可以用任何一套字符来表示真值表,只要测试系统能够正确解释和执行每个字符相应的功能。
测试向量是存储在向量存储器里面的,每行单独的向量代表一个单一测试周期的“原始“数据。从向量存储器里输入的数据与时序,波形格式以及电压数据结合在一起,通过pin electronic电路施加给待测器件。待测器件的输出通过pin electronic上的比较电路在适当的采样时间与存储在向量存储器里的数据进行比较。这种测试被称作存储响应。
除了待测器件的输入输出数据,测试向量还可能包含测试系统的一些运作指令。比如说,要包含时序信息等,因为时序或者波形格式等可能需要在周期之间实时切换。输入驱动器可能需要被打开或者关闭,输出比较器也可能需要选择性地在周期之间开关。许多测试系统还支持像跳转,循环,向量重复,子程序等微操作指令。不同的测试仪,其测试仪指令的表示方式可能会不一样,这也是当把测试程序从一个测试平台转移到另一个测试平台时需要做向量转换的原因之一。
比较复杂的芯片,其测试向量一般是由芯片设计过程中的仿真数据提取而来。仿真数据需要重新整理以满足目标测试系统的格式,同时还需要做一些处理以保证正确的运行。通常来说测试向量并不是由上百万行的独立向量简单构成的。测试向量或者仿真数据可以由设计工程师,测试工程师或者验证工程师来完成,但是要保证成功的向量生成,都必须对芯片本身和测试系统有非常全面地了解。
测试资源的消耗
当开发一个功能测试时,待测器件各方面的性能与功能都要考虑到。以下这些参数都要仔细地进行测试或设置:
VDD Min/Max (待测器件电源电压)
VIL/VIH (输入电压)
VOL/VOH (输出电压)
IOL/IOH (输出电流负载)
VREF (IOL/IOH转换电平)
测试频率(测试使用的周期)
输入信号时序(时钟/建立时间/保持时间/控制)
输入信号波形格式
输出时序(在周期内何时对输出进行采样)
向量顺序(向量文件内的start/stop位置)
上述的这些资源说明了功能测试会占用测试系统的大部分资源。功能测试主要由两大块组成,一是测试向量文件,另外一块是包含测试指令的主测试程序。测试向量代表了测试待测器件所需的输入输出逻辑状态。主测试程序包含了保证测试仪硬件能产生必要的电压,波形和时序等所必需的信息。(如图所示)
功能测试
当功能测试执行的时候,测试系统把输入波形施加给待测器件,并一个周期一个周期,一个管脚一个管脚地监控输出数据。如果有任何的输出数据不符合预期的逻辑状态,电压或者时序,该测试结果被记录为错误。