首先我们需要对一个基础的功能测试所涉及的器件规格、测试系统硬件和测试程序之间的关系做一个整体的了解,这里拿一款简单的器件——时钟控制反向器为例,来说说相关内容。钟控反相器有两个输入端:时钟输入(CLK)和数据输入(DATAIN);一个输出端:反向信号输出(DATAOUT)。它有如下功能特征:
1. 时钟是数据由输入到输出经过器件进行传输的同步控制信号;
2. 输入数据在时钟的上升沿由器件读入;
3. 输出数据在时钟的下降沿由器件输出;
4. 数据传输仅在时钟有效时进行;
5. 输出数据与输入数据逻辑相反。
器件规格
总的说来,规格书给出了器件需要满足的最差情况,测试工程师会根据它去建立测试计划(Test Plan)、选择合适的测试系统,并在测试系统上实现其测试。下面的数据是测试钟控反相器需要控制的电平及时序参数:
VDD=5.0V
VIH=2.0V VIL=0.8V
VOH=2.4V VOL=0.4V
工作频率=10MHz,时钟占空比50%
输入数据建立时间=15nS 输入数据保持时间=5nS
输出传输最大延时=8nS

图5-9.钟控反向器
测试所需
1. 测试硬件及设备——测试板(Loadboard)、测试座(Socket)、相关阻容元件;
2. 器件电源,VDD和Ground;
3. 输入电平,VIL(逻辑0)和VIH(逻辑1);
4. 输出参考电平,VOL(逻辑0)和VOH(逻辑1);
5. 信号时序和格式配置,包括输入信号的生成和输出信号的比较;
6. 测试向量。
测试资源规划
测试系统内的资源有很多,我们要针对测试所需选取并配置相关的资源,实现性价比高的测试开发。
首先肯定是DPS单元,我们需要它对器件供电。这里VDD为5V,通过一路DPS提供5V电压即可;Ground已经由测试板和测试机的Ground连接。
接着是输入电平,它们由RVS单元提供,VIL设定为0.8V,VIH设定为2.0V。
输出比较的参考电平也是由RVS单元提供,这里VOL设定为0.4V,VOH设定为2.4V。
测试系统的时序单元会给定输入信号的信号周期、信号格式及输出信号的比较沿位置。对于时钟信号,规格书给出的是10MHz,则时钟周期为100nS;占空比要求是50%,即一个周期内时钟信号一半为高一半为低,这里我们将上升沿设定在25nS,下降沿设定在75nS;信号格式我们选用RZ格式。
DATAIN的时序则需要参考时钟信号。它的建立时间是15nS,即在时钟的上升沿之前15nS,它的状态必须是有效的;保持时间是5nS,即上升沿只有的5nS它必须保持相同的状态。这样我们就知道周期内数据信号的脉宽最少是20nS。为了能正确地验证建立时间和保持时间,我们选用SBC格式作为DATAIN的信号格式。
最后一步是确定输出信号的相关时序。规格书给出的信号传输延迟为8nS,加上时钟的下降沿在75nS,则我们可以确定输出信号比较沿的位置:75nS+8nS=83nS,测试系统在此位置上对输出采样并将电平值与VOL/VOH相比较,判断状态为L、M还是H,再与pattern中的期望值比较以判断此周期的输出正确与否。
当然还需要的资源是向量存储器,pattern存储其中并由测试系统在功能测试器件运行。
测试向量
功能测试必须有测试向量,也就是反映器件真值表的图形化文件,这在之前已经有过介绍,这里只说说此例的pattern.如表5-1,钟控反向器的向量文件包含七种向量字符,每个字符都代表一个周期数据状态,它们与时序、电平和格式等信息共同构成相关信号的波形,如图5-10。

表5-1. Test Vectors for Clocked Inverter
向量字符说明:
1 : Drive input high (to logic 1)
0 : Drive input low (to logic 0)
H : Compare output to a high
L : Compare output to a low
P : Drive input with a positive clock pulse
测试条件说明
图5-10显示的是运行功能测试期间钟控反向器各信号的时序图,我们可以看到由信号时序、信号格式及信号电平组合而成的七个周期的向量数据,这和之前规格书中定义的情形一致。测试周期设定为100nS;时钟信号则是RZ信号格式,占空比为50%;DATAIN采用SBC格式,设置了正确的建立时间和保持时间;输入和输出的电平值也按照规格书进行了设定。

图5-10.功能测试的测试条件
总功能测试条件
实施总功能测试通常是有用的,它的目的是在不动用精确参数设置的情况下基本判断器件是“活的”还是“死翘翘”的,就像军医抢救“伤员”时先用手探探鼻息摸摸心跳,而非直接将“伤员”抬进手术台用仪器去探测各种血压、脉搏等生命体征。总功能测试能最快地检测出半导体内部的物理损伤或制程中的错误。
图5-11的波形显示的是总功能测试用到的时序及电平条件。输入和输出电平较功能测试条件有所改变(放宽),这使得器件更容易正确运行其功能;测试速度由原来的100nS放宽至500nS; DATAIN信号则改为在每个周期的开始启动的NRZ格式,放弃了对建立和保持时间的测试;输出传输延迟也适当增加使输出有更多时间去改变状态并稳定。
如果器件在图5-10的测试条件下失效(fail)而在图5-11的测试条件下重新测试并通过(pass),则之前的失效不是由硅缺陷引起。这时每个具体的参数则需要单独测试以找出失效的真正原因。总功能测试条件常被用于测试向量的调试阶段,它可以在排除其他因素干扰的情况下轻易判断测试向量是否正确。

图5-11.总功能测试的测试条件
测试程序实例
下面我们就来看一段钟控反向器在脱机(non-Tester)模式下的功能测试程序代码:
Begin Program;
/* define pin functions */
Connect DPS1 pin 4;
Connect GND pin 5; /* ground is hard wired */
Data_in input pin 1;
Clock input pin 2;
Data_out output pin 3;
/* set voltage levels */
Set DPS1 5V;Set VIL 0.8V;
Set VIH 2.0V;Set VOL 0.4V;
Set VOH 2.4V;
/* set timings */
Set Test Period 100nsec;
Set Clock start_edge 25nsec;
Set Clock stop_edge 75nsec;
Set Clock format RZ;
Set Data_in start_edge 10nsec;
Set Data_in stop_edge 30nsec;
Set Data_in format SBC;
Set Data_out start_strobe 83nsec;
Set Data_out stop_strobe 93nsec;
/* load the test vector file into vector memory */
At Vector Location 0;
Load Pattern (test_vectors);
Start Pattern 0;
Stop Pattern 6;
Execute Test_pattern; /* this runs the test */
/* Turn off voltage levels */
Set VIL 0.0V; Set VIH 0.0V;
Set VOL 0.0V; Set VOH 0.0V;
Set DPS1 0.0V;
End Program;


