1、创建功能时序要正确创建测试时序,器件规格书中定义的时序参数必须清晰明了。为了缩减测试时间,需要根据器件的时序要求选择能力最合适的测试机,在一个高性能的测试机上,你也许可以在运行一个功能向量的时候测试所有的时序参数。如果目标测试系统资源有限而又必须执行多路测试,那么在运行每个功能测试的时候使用不同的时序条件,直到所有的时序参数都得以验证。创建时序的第一步通常是定义测试周期(test cycle or test period),也就是测试频率;更重要的一步则是花费必要的时间去完全地理解器件的时序。如果测试向量由仿真数据生成,一定要复查仿真时的时序,它需要和测试程序的时序完全一致。仿真时序应该反映器
2、件的真实时序,且需要兼容测试系统的性能。通过上一章节对 256x4 静态 RAM 时序图的理解,我们现在来建立它读、写周期的时序。从写周期开始,步骤如下:1 定义周期时间,画两条垂直的直线代表周期并显示此周期持续的时间;2 确定控制信号在周期内的行为(信号的样式及转换地点),画出它并标注跳变沿产生的时间;3 确定数据信号在周期内的行为(信号的样式及转换地点),画出它并标注跳变沿产生的时间;4 画好信号并标明时间后,在考虑控制信号有效状态和无效状态的基础上,需要为每个信号定义信号格式。写周期时序 根据 256x4 静态 RAM 的规格书,可以创建写周期的测试时序图形:1. 根据参数 tWC 确定
3、周期时间。2. 确定哪个信号控制“写”功能。可以看到,信号“WE”的上升沿控制输入数据何时被 RAM 读入,它就是控制信号;再仔细点你会发现其他所有信号时序均以“WE”作为参考。3. 确定输入信号保持装态。测试周期内“WE”信号有效沿位置取决于参考它的信号的建立和保持时间。地址信号(t AW)要求 13 纳秒的建立时间和 2 纳秒的保持时间,两者之和为周期时间,加上片选信号和输入数据时序,决定了“WE”信号的上升沿出现在周期内的 13 纳秒位置。另外,规格书中提到的数据输出(data out)信号时序在此可以忽略,因为它在写周期不会被测试。图 6-11. Write Cycle Timing绘
4、制时序图能显示所有信号之间真实的关系,因此我们能正确理解测试中的时序关系。图 6-11 中绘出的刻度(两条虚线)显示了信号状态正确变换的具体的纳秒级时间,而通常在器件规格书中显示的时序图不会标示这些具体参数。通过正确绘制时序图,我们可以很容易地知道每个 AC 测试做什么并相应地去调试,在调适环节,我们可以通过示波器抓到测试波形和时序图进行比较。读周期时序 下面来创建读周期的测试时序图形:1. 根据参数 tRC 确定周期时间,这一参数是取出数据并存入 RAM 所需的时间总和。测试过程中,数据首先需要被取出并验证,因此实际的测试时间会比规格书中定义的要长。2. 确定哪个信号控制“读”功能。可以看到
5、,信号“OE”的下降沿控制输出数据何时有效,当输出数据有效,存储于 RAM 的数据就可得到验证,且其他所有信号时序均以“OE”作为参考,故“OE”为控制信号。绘制时序图描述所有信号的实际关系,需要注意的是输入信号需要保持足够的时间以完成对输出的测试(比较)。图 6-12 中,在测试周期末端有 5 纳秒的额外附加,这就是完成输出比较的地方。图 6-12. Read Cycle Timing和图 6-11 一样,上图也有刻度线。在一个测试程序开发中,依据待测电路的复杂性,我们也许要描绘很多时序图。静态 RAM 的 AC 参数 图 6-8. 256x4 static RAM图 6-9. Read C
6、ycle Timing on Spec图 6-10. Write Cycle Timing on Spec下表显示了 256x4 静态 RAM 的 AC 参数,如读写周期等。最小脉宽Parameter Description Min. Max UnitstWL Minimum clock low time 20 nsectWH Minimum clock high time 25 nsec最小脉宽通常包括两个独立参数,如图 6-4 所示:图 6-4.最小脉冲宽度最小脉冲低时间(时钟低宽度),脉冲可以(或必需)保持在逻辑 0 状态的最小时间;最小脉冲高时间(时钟高宽度),脉冲可以(或必需)保持在
7、逻辑 1 状态的最小时间。 当执行测试需要移动或调整某个控制沿时,确保和它有关系的所有时序沿依然保持有效,即满足建立时间、保持时间以及传输延迟等要求。 目的:保证脉冲的逻辑低和逻辑高有效(能被其他信号识别)。 注意:改变控制沿时,应保证与之有关的信号沿不受影响,或者作相应改变。最高频率Parameter Description Min. Max UnitsfMAX Maximum clock frequency 22.2 MHz最高操作频率的测试,某些时候也被称为“全速测试”,包括测试器件在最高频率下其相关参数是否仍然符合器件规格书的要求。执行全速测试时,最短的建立和保持时间、最窄的脉冲宽度、
8、最大的传输延迟都需要在最快的测试频率下验证。因为所有最差的时序条件都同时施加于器件,可能引起导致器件“失效”的附加测试噪声,所以这项测试是相当难以实施的,因而我们实施它之前需要仔细阅读器件规格书,确保时序的正确。同样,当执行测试需要移动或调整某个控制沿时,例如时钟的上升沿,确保和它有关系的所有时序沿依然保持有效。图 6-5 显示的是最高频率测试的时序。图 6-5.最高频率测试 目的:保证器件的最大操作频率 注意:改变控制沿时,应保证与之有关的信号沿不受影响,或者作相应改变 全速测试可能会引起附加测试噪声输出使能时间Parameter Description Min. Max UnitstDOE
9、 OE Low to Data Valid 10 nsec输出使能时间指的是输出信号从高阻状态切换到驱动有效逻辑电平状态所需的时间,测量上,从控制信号的控制沿有效开始,到输出切换为有效逻辑的跳变沿结束。例如,tDOE(Output Enable to Data Out Valid)是从 OE 信号由高变低开始直到所有的 O0-O3 管脚上读到有效的逻辑电平的这段时间,如图 6-6。此项测试要求输出连接到参考电压设置为中间级逻辑电平(如 2.0V)的负载端。多数情况下,有效逻辑定义为 VOL/VOH,但最好还是查阅一下器件的规格书以确认参数正确。图 6-6.输出使能时间 目的:确保在一定时间内,
10、输出缓冲能正确地由高阻态转换为打开状态,并在控制信号起效的规定时间内,驱动输出有效的逻辑电平。 只针对高阻态输出管脚及双向 IO 口。 测试结果只能是正值。 输出失效时间Parameter Description Min. Max UnitstHZOE OE High to Data High Z 8 nsec输出失效时间与输出使能时间相反,指的是输出端从有效逻辑电平状态切换到高阻状态所需的时间,测量上,从控制信号的控制沿有效开始,到输出端停止驱动有效电平结束。例如,tHZOE(Output Enable High to Outputs High Z)是从 OE 信号由低变高开始直到所有的 O
11、0-O3 管脚上停止输出有效的逻辑电平的这段时间,如图 6-7。此项测试中,高阻态定义为独立的输出电平,指的是高于 VOL 而低于 VOH 的区段内的任何电平。输出必须连接到参考电压设置为中间级逻辑电平(如 2.0V)的负载端,输出负载会在输出缓冲关闭后将总线拉至无效电平状态。同样,参考器件规格书确定相关参数。6-7输出失效时间 目的:确保在控制信号起效的规定时间内,输出缓冲能正确地由打开状态转换为高阻态。 只针对高阻态输出管脚及双向 IO 口。 测试结果只能是正值。标准 AC 参数和标准 DC 参数一样,也有一些标准的 AC 参数需要测试,接下来我们就来看看通常需要测试的这些 AC 参数。建
12、立时间(Setup Time )Parameter Description Min. Max UnitstSD Data Set-up to Write End 11 nsec图 6-1. Setup Time建立时间指的是在参考信号达到一定电压点(即参考信号使能)前,数据准备好能保证被正确识别所需的最小时间。例如图 6-1 中,DataIn 数据对 WE信号的建立时间,参考 WE 信号到达 1.5V 电压点进行测量。 目的:保证输入数据在参考信号有效前的最少时间里可以达到被正确读取(read or latched)的状态。 只与输入信号有关。 建立时间可以为负数(发生在参考信号之后)。保持时
13、间Parameter Description Min. Max UnitstHD Data Hold from Write End 1 nsec图 6-2.Hold Time保持时间指的是参考信号到达一定电压点(使能)后,为了保证读取无误,数据保持当前状态所必需持续的最小时间。例如图 6-2 中,DataIn 数据对 WE信号的保持时间,参考 WE 信号到达 1.5V 电压点进行测量。 目的:保证输入数据在参考信号有效后的最少时间里维持可以被正确读取(read or latched)的状态。 只与输入信号有关。 保持时间可以为负数(发生在参考信号之前)。传输延迟Parameter Descri
14、ption Min. Max UnitstAA Address to Data Valid 15 nsec图 6-3. Output Propagation Time传输延迟指的是一个信号的传输和另一个相关信号的传输之间的时间间隔,测量上以特定电压点(如 1.5V)为参考坐标。多数传输延迟测试测量的都是输入信号变化到相应输出信号反应之间的时间间隔,列如图 6-3 中,显示的是地址线起效的时间点到最慢的数据输出管脚达到 1.5V 有效电压点这段时间的传输延迟。有时两个输出信号之间的传输延迟也要测量,这会要求搜寻这两个信号的相对位置。传输延迟测试也被称为“临界路径测量”。 目的:保证输出数据在参考
15、信号有效后的特定的时间里反应。 只与输出信号有关。 传输延迟只可以为正数(发生在参考信号之后)。为了保证器件满足时序规格,我们需要进行 AC 参数测试,按照规格书设定时序参数和信号格式来进行,通过运行一段功能测试的向量序列实现 AC 参数的测试。测试方法有二:一是在某个或多个功能测试时,将所有的 AC 时序参数设置为最差情形,和功能测试一并进行。它可以很快地保证器件满足设计规范,但是在有 fail 出现时无法直观地显示错误的来源或原因。另一方法则是单独地进行 AC 测试,逐一测试各个 AC 参数。比如测试数据总线建立时间(DBST ),就将它设置为规格书定义的数值,而将其他参数放宽,运行相应的
16、功能向量,如果测试 fail,则我们马上知道是数据总线建立时间导致。若结果 pass,下一步则是将 DBST 放宽,测试另一参数。明显,此方法可以为良率分析提供更多的信息,但是增加了测试时间。读取 /* 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;S
17、et 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 93nse
18、c; /* 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;功能测试首先我们需要
19、对一个基础的功能测试所涉及的器件规格、测试系统硬件和测试程序之间的关系做一个整体的了解,这里拿一款简单的器件时钟控制反向器为例,来说说相关内容。钟控反相器有两个输入端:时钟输入(CLK)和数据输入(DATAIN) ;一个输出端:反向信号输出(DATAOUT) 。它有如下功能特征:1 时钟是数据由输入到输出经过器件进行传输的同步控制信号;2 输入数据在时钟的上升沿由器件读入;3 输出数据在时钟的下降沿由器件输出;4 数据传输仅在时钟有效时进行;5 输出数据与输入数据逻辑相反。器件规格总的说来,规格书给出了器件需要满足的最差情况,测试工程师会根据它去建立测试计划(Test Plan) 、选择合适的
20、测试系统,并在测试系统上实现其测试。下面的数据是测试钟控反相器需要控制的电平及时序参数:VDD=5.0VVIH=2.0V VIL=0.8VVOH=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 信号时序和格式配置,包括输
21、入信号的生成和输出信号的比较;6 测试向量。测试资源规划测试系统内的资源有很多,我们要针对测试所需选取并配置相关的资源,实现性价比高的测试开发。首先肯定是 DPS 单元,我们需要它对器件供电。这里 VDD 为 5V,通过一路 DPS提供 5V 电压即可;Ground 已经由测试板和测试机的 Ground 连接。接着是输入电平,它们由 RVS 单元提供,VIL 设定为 0.8V,VIH 设定为 2.0V。输出比较的参考电平也是由 RVS 单元提供,这里 VOL 设定为 0.4V,VOH 设定为2.4V。测试系统的时序单元会给定输入信号的信号周期、信号格式及输出信号的比较沿位置。对于时钟信号,规格
22、书给出的是 10MHz,则时钟周期为 100nS;占空比要求是 50%,即一个周期内时钟信号一半为高一半为低,这里我们将上升沿设定在 25nS,下降沿设定在 75nS;信号格式我们选用 RZ 格式。 DATAIN 的时序则需要参考时钟信号。它的建立时间是 15nS,即在时钟的上升沿之前 15nS,它的状态必须是有效的;保持时间是 5nS,即上升沿只有的 5nS 它必须保持相同的状态。这样我们就知道周期内数据信号的脉宽最少是 20nS。为了能正确地验证建立时间和保持时间,我们选用 SBC 格式作为 DATAIN 的信号格式。最后一步是确定输出信号的相关时序。规格书给出的信号传输延迟为 8nS,加
23、上时钟的下降沿在 75nS,则我们可以确定输出信号比较沿的位置:75nS+8nS=83nS,测试系统在此位置上对输出采样并将电平值与 VOL/VOH 相比较,判断状态为 L、M 还是 H,再与 pattern 中的期望值比较以判断此周期的输出正确与否。当然还需要的资源是向量存储器,pattern 存储其中并由测试系统在功能测试器件运行。总功能测试(Gross Function Test)总功能测试指使用最宽松的条件去运行的功能测试,频率、时序、电压、电流负载等条件都被放宽,也成为基础功能测试(Basic Function test)或摆动测试( Wiggle Test) 。 实施理由总功能测试
24、相当于功能测试的前提测试,它检验器件是否能够进行功能测试,通俗地讲,就是器件能否“动”起来。当测试程序基本建立,常用总功能测试的相关条件验证全部向量集所需测试的功能是否基本正确。总功能测试常在程序中测试流程的前段运行,以保证后面贯穿整个测试程序的功能测试可以正确实施。 测试方法图 5-8.总功能测试时序图 5-8 显示的是 256x4 静态 RAM 总功能测试的时序。此 RAM 规格书的 AC 部分规定其工作频率为 66MHz,在总功能测试中,测试频率放宽到 1MHz,相应放宽的还有输入电平(VIL/VIH) 、输出电平(VOL/VOH)以及其他时序参数,包括建立时间、保持时间、何输出延迟。各
25、个信号的时序关系(时间沿位置)最好仍然保持不变。器件通过了总功能测试后,会运行更多更严格的测试以确保器件符合其规格书中的全部要求。当多数更严格的测试都是失败的时候,在它们之前按照一定的条件进行总测试也可以较早地发现这些失效,以提高提高测试吞吐量。在生产测试中,总功能测试通常就可以提供有价值的良率信息。时序变量在测试程序开发和调试过程中,功能测试中的时序参数便于修改是非常重要的,因此常用程序变量建立一个等式来代替具体的参数。举个例子,通过简单地改变时钟变量“SCALE”的值,整个程序的时序可以轻易地 “收紧”或“放宽” 。这一方法也可以用于在不同的测试项之间改变测试频率,比如降低总功能测试的主时
26、钟,或提高时钟以改变器件的最大工作速率。SCALE = 1;PERIOD = 150E-9 * SCALE; CLKDLY = 0E-9;CLKWIDTH = 50E-9 * SCALE; OE_DLY = 10E-9 * SCALE;OE_WIDTH = 60E-9 * SCALE; CS_DLY = 5E-9 * SCALE;CS_WIDTH = 30E-9 * SCALE; COLDLY = 15E-9 * SCALE;COLWIDTH = 40E-9 * SCALE; DATADLY = 7E-9;DATAWIDTH =25E-9 * SCALE; READDLY = 10E-9 *
27、SCALE;READWIDTH = PERIOD /2; OUT_VALID1 = PERIOD * 0.75;STROBEWINDOW1 = 10E-9; OUT_VALID2 = PERIOD * 0.85;STROBEWINDOW2 = 10E-9;功能测试参数定义验证器件的功能是否符合器件规格书通常有两种方法。第一种方法是将所有的输入、输出和时序参数都设置成最差(规格书中会定义)的情况,然后运行功能向量序列。这种方式能最快地判断器件是否符合其设计规范,缺点在于如果有 fail 发生,无法直观地知道是什么参数引起的。另一种方法是单独地设置各个参数,例如,开始只按照规格书定义的最差情形设置
28、 VIL/VIH,其他的参数则放宽。如果有 fail 发生在这个地方,则马上可以判断是 VIL 或 VIH 电平引起。然后再设置下一组参数,知道所有参数都被单独验证。如果良率出现问题,此方式可以让我们直观地获取更多具体的信息,代价是测试时间的增加。宽松的参数放宽某个参数意味着按照一定的方式调整其参数值使 DUT 更容易正确地满足功能要求。例如,如果规格书定义 VIL 为 0.8V,我们可以将它放宽到0.4V,通过降低 VIL 使得 DUT 判读输入信号为逻辑 0 更加不易出错。要放宽输入,可以降低 VIL,提高 VIH;要放宽输出,则可以提高 VOL,降低VOH,最宽松的情况是设置 VOL=V
29、OH=1.5V,此时比较器会将所有低于 1.5V的电平判为逻辑 0,而将所有高于 1.5V 的电平判为逻辑 1(注意:在测试 Z 态电平时,不能采用此情况);要方宽时序,降低测试频率,增加建立(setup)和保持(hold)时间并增加输出传输延迟。时序参数通过提供合适的信号波形给 DUT,可以实现 AC 时序参数的验证。建立时间、保持时间、最小脉宽、传输延迟都必须测试。在某些情况下,可以一次设定所有极限条件,以使器件通过一次测试就能满足所有参数要求,复杂的功能时序则需要在不同的条件下多次重复测试。最小/最大电压器件规格书通常定义 VDD 的工作电压范围。例如 VDD=5.010%表示对于VDD 为 5.0V 的器件,在 4.5V5.5V 之间它必须能正常工作。这个电压范围通常叫做 VDDMIN 和 VDDMAX。功能测试必须在器件参数的整个范围内测试,所以