集成电路测试的压缩测试计划生成、测试序列生成和测试 【技术领域】
本发明涉及生成用于集成电路测试的压缩测试计划(compacted test plan)的方法,生成测试序列的方法,测试方法,实现所述方法的装置,和实现所述方法的程序。背景技术
近年来,随着LSI中装配的电路数量的增加,LSI测试变得越来越重要,为了顺应这种趋势,LSI测试设计的自动化就成为基本要求。为了实现LSI测试设计的自动化,必须实现较高的故障检测率,为此需要进行可测性设计(DFT,易测化设计)。扫描设计是一种广泛用于LSI测试的DFT技术,但是这种技术具有以下问题。
(1)由于改变了逻辑合成之后的电路,损失了例如定时等的合成时的限制。
(2)测试序列较长。
(3)难以进行实际工作速度测试。
为了解决上述问题,提出了在逻辑合成之前对RTL设计电路应用DFT的DFT方法。RTL设计电路通常包括两个部件,即用于处理数据的数据路径和用于控制数据路径的操作的控制器。从数据路径传送到控制器地信号被称作状态信号,从控制器传送到数据路径的信号被称作控制信号。在本说明书中,主要对RTL数据路径电路进行描述。首先,由于对RTL电路应用DFT,所以不需要在逻辑合成之后对电路应用DFT,这解决了问题(1)。针对以解决问题(2)和(3)为目标的DFT方法,提出了强可测性设计(design-for-strong-testability)方法,其中测试模式通过通常由数据路径使用的数据传送线从外部输入传送到被测电路元件的输入,并且电路元件的响应输出被传送到外部输出(Wada等人,“具有彻底故障检测率的数据路径非扫描DFT方法”,IEICE技术报告,J82-D-I,pp.843-851,1999年7月)。
根据上述文献,如果每个电路元件均可以满足下面两个条件.。则数据路径电路是强可测的:1)任意数值均可以被从外部输入传送到其输入端(强可控性),并且2)其输出端可以具有的任意数值均可被传送到外部输出(强可观察性)。在数据路径电路是强可测的情况下,由于每个电路元件均有测试计划,因而使用对每个电路元件具有彻底故障检测效率的测试模式集合,可以实现达到彻底故障检测率的层次测试。这里,电路元件包含组合模块和寄存器,并且在许多情况下,对组合模块进行层次测试。
在上述文献提到的方法中,由于分别地和顺序地测试强可测数据路径电路中的组合模块,强可测数据路径电路的测试序列长度L如下面的等式(1)表示。L=Σj=1n(Li+Nj)---(1)]]>
其中n是电路中组合模块的数量,Lj(j=1,2,...,n)是每个组合模块的测试计划长度,Nj(j=1,2,...,n)是每个组合模块的测试模式数量。
通过等式(1)可以发现,随着组合模块数量或各个组合模块的电路数量的增加,强可测数据路径电路的测试序列长度迅速增加。发明内容
因此,本发明的一个目标是减少数据路径的整个测试序列长度,从而减少需要测试的电路数量和执行测试所需的时间。
在本说明书中,为了以尽可能多地并行测试组合模块的方式缩短强可测数据路径电路的测试序列长度,提出了强可测数据路径电路的测试生成方法,所述方法使用了压缩测试计划表(或压缩测试计划),其中以针对各个组合模块排定测试计划的时间并且压缩所述测试计划的方式产生所述压缩测试计划表。还提出了用于产生具有最短长度的压缩测试计划的试探式算法。
基于本发明的压缩测试计划生成方法包括的步骤有:生成多个测试计划,其中RTL数据路径电路包含的多个电路元件中的每一个电路元件对应一个测试计划;以及压缩生成的多个测试计划,从而生成压缩测试计划。
测试计划压缩步骤最好包含以下子步骤:(a)从测试计划集合中选择并提取一个第一测试计划;(b)在子步骤(a)之后,进一步从测试计划集合中选择并提取零或更多个第二测试计划;(c)压缩第一和第二测试计划,从而生成一个部分压缩测试计划;(d)重复子步骤(a)到(c),直到测试计划集合变成空集合;以及(e)把生成的部分压缩测试计划的集合当作新的测试计划集合,重复子步骤(a)到(d),直到部分压缩测试计划的数量变成1。
测试计划压缩步骤最好还包含以下子步骤:(f)在通过改变初始条件复子步骤(a)到(e)一个指定的次数;(g)在通过执行重复子步骤(f)获得的压缩测试计划中选用具有最短长度的压缩测试计划。
可选地,测试计划压缩步骤可以包含以下子步骤:(a)从多个测试计划中选择一对测试计划,所述一对测试计划在被压缩时会产生具有最短长度的部分压缩测试计划;(b)压缩选择的测试计划对,从而生成部分压缩测试计划;(c)从多个仍未压缩的测试计划中选择这样的一个测试计划,即所述测试计划在与部分压缩测试计划一起被压缩时会生成具有最短长度的部分压缩测试计划;(d)压缩选择的测试计划和部分压缩测试计划,从而生成一个部分压缩测试计划;(e)重复子步骤(c)和(d),直到不存在仍未压缩的测试计划。
根据本发明的测试序列生成方法包括以下步骤:通过上述方法生成一个压缩测试计划;针对RTL数据路径电路中包含的多个电路元件的每一个生成必要数量的测试模式;通过向压缩测试计划插入测试模式生成测试序列。
根据本发明的测试方法向数据路径电路顺序提供通过上述方法生成的测试序列。附图说明
图1示出了电路在被转换成门级(gate level)之前的结构;
图2图示了作为以RTL级描述的电路的一个示例的GCD电路的数据路径;
图3示出了具有DFT的GCD电路中的数据路径;
图4是示出DFT处理的图;
图5是示出测试序列生成处理的图;
图6是示出压缩测试计划生成处理的图;
图7是图解用于压缩测试计划生成的第一试探式算法的流程图;
图8示出了测试计划可压缩性图表的一个例子;
图9是图解用于压缩测试计划生成的第二试探式算法的流程图;
图10是示出测试序列生成处理的图;
图11是详细图解测试序列生成处理的流程图;
图12示出了基于现有技术的测试控制器;
图13示出了图12的测试控制器的详细情况;
图14是图13所示时序电路TPG的状态转换图;
图15示出了根据本发明的测试控制器的详细情况;
图16是图15所示时序电路TPG的状态转换图;
图17是示出根据成组测试计划生成压缩测试计划的图;
图18是图解测试计划分组处理的流程图;
图19是说明下降点的图;
图20是示出引入分组处理的测试控制器的详细情况的图;
图21是图20所示时序电路TPG的状态转换图;
图22是表示层次结构电路的一个例子的电路模块图;
图23是表示应用了DFT的图22的电路的电路模块图;和
图24是示出层次结构电路的测试控制器的电路模块图。具体实施方式
如图1所示,被转换到门级(gate level)之前的电路包括处理数据的数据路径100和控制数据路径100的操作的控制器102,其中在寄存器传送级(此后称作RTL,register transfer level)上描述数据路径100。
作为RTL描述数据路径的一个例子,图2示出了用于计算最大公约数(GCD)的电路中的数据路径。在图2中,电路元件1和2是外部输入xin和yin,电路元件3是外部输出,电路元件4到6是比较器,电路元件7是减法器,电路元件8到10是寄存器,电路元件11到14是多路复用器(或选择器)。外部输入xin和yin均对应于图1中的PI,外部输出对应于PO,L1到L3和m1到m4均对应于控制输入(信号线)101,每个比较器4到6的输出对应于状态信号线103。
如图3所示,当加入多路复用器用于把电路元件7的右侧输入上的数值传递到输出端时,图2的数据路径电路变成强可测的(易测化后的)。T1表示该用于测试的多路复用器的控制输入。表格1中示出了图3中具有DFT的数据路径电路的各电路元件(仅包括组合模块)的测试计划。在表格1中,b表示单个位或多位数值,X表示无关。表格1电路元件11 时间 xin yin L1 L2 L3 m1 m2 m3 m4 T1 0 b X 1 X X 0 0 X X X 1 X X X X 1 X X X b X 2 X X X X X X X X X X电路元件12 时间 xin yin L1 L2 L3 m1 m2 m3 m4 T1 0 b X 1 X X 0 0 X X X 1 X b X 1 X X X b X X 2 X X 1 X X 1 0 X X 1 3 X X X X 1 X X X 0 X 4 X X X X X X X X X X电路元件13 时间 xin yin L1 L2 L3 m1 m2 m3 m4 T1 0 X b X 1 X X X 0 X X 1 b X 1 X X 0 b X X X 2 X X X X 1 X X X 0 X 3 X X X X X X X X X X电路元件14 时间 xin yin L1 L2 L3 m1 m2 m3 m4 T1 0 X b X 1 X X X 0 X X 1 b X 1 X X b 0 X X 1 2 X X X X 1 X X X 0 X 3 X X X X X X X X X X电路元件7 时间 xin yin L1 L2 L3 m1 m2 m3 m4 T1 0 b b 1 1 X 0 0 0 X X 1 X X 1 X X 1 0 X X b 2 X X X X 1 X X X 0 X 3 X X X X X X X X X X电路元件6 时间 xin yin L1 L2 L3 m1 m2 m3 m4 T1 0 b X 1 X X 0 0 X X X 1 X X X X X X X X X X电路元件5 时间 xin yin L1 L2 L3 m1 m2 m3 m4 T1 0 X b X 1 X X X 0 X X 1 X X X X X X X X X X电路元件4 时间 xin yin L1 L2 L3 m1 m2 m3 m4 T1 0 b b 1 1 X 0 0 0 X X 1 X X X X X X X X X X
测试计划是用于从外部输入向具体电路元件的输入传送数值并且向外部输出传送该电路元件的输出数值的外部输入的时间序列。以用于电路元件13的测试计划为例,在时间0测试输入值被提供到外部输入yin上,由于m3为0并且L2为1,数值被载入电路元件9,并且被提供到电路元件13中标记为“1”的一侧输入上,其中电路元件9是寄存器,而电路元件13是选择器。在时间1,另一个测试输入数值被提供到外部输入xin上,由于ml为0,该数值被提供到选择器13中标记为“0”的一侧输入上。如果在选择器13中及其附近没有故障,则根据被提供到m2的数值0或1选择一个输入数值用于输出,由于L1为1,输出数值被载入电路元件10,该电路元件10是一个寄存器。在时间2,由于m4为0并且L3为1,测试结果被载入电路元件8并且被输出到外部,其中电路元件8是寄存器。
如图4所示,在应用DFT(例如图3示出的选择器的增加)来将RTL描述转换为具有DFT的RTL描述的同时产生测试计划(步骤1000)。接着如图5所示,针对各个电路元件(组合模块)产生用于检测经过逻辑合成之后的门级电路中的单一固定型故障的测试模式(测试计划中b的具体数值)(步骤1002),并且根据现有技术,通过向各个电路元件的测试计划插入测试模式来生成数据路径电路的测试序列(步骤1004)。
另一方面,在本发明中,在向各个电路元件的测试计划插入测试模式之前,通过压缩多个测试计划来生成压缩测试计划,并且通过用测试模式替换压缩测试计划中的“b”来生成测试序列。
下面将举例说明这种情况,其中通过压缩表格2中示出的两个测试计划来生成压缩测试计划。
表2 (a) (b) 时间 Pl0 Pl1 Pl2 Pl3 Pl4 0 X b 0 1 X 1 X 0 1 X X 2 X X X X X 时间 Pl0 Pl1 Pl2 Pl3 Pl4 0 X b 0 1 X 1 X 0 1 X X 2 X X X X X
在表格3中示出了用于生成压缩测试计划的压缩运算∩f。
表3 ∩f b X 0 1 b φ b φ φ X b X 0 1 0 φ 0 0 φ 1 φ 1 φ 1
在表格3中,计算结果中的φ表示不可压缩。
当排定第二测试计划相对于第一测试计划的时间使得第二测试计划在第一测试计划中的时间k开始时,如果在两个测试计划发生重叠的任意时刻各个输入的压缩运算结果中没有φ,则可以按照时间偏移(skew)k压缩第二测试计划和第一测试计划。在表格2示出的例子中,可以按照如下面的等式(2)所示的时间偏移2压缩测试计划(b)和测试计划(a),结果生成了如等式(2)右边所示的压缩测试计划。
如图6所示,在本发明中,对RTL描述应用DFT以生成数据路径中各电路元件的测试计划(步骤1000),根据该测试计划生成压缩测试计划(步骤1006),并且使用压缩测试计划而不是在图5中针对相应电路元件生成的测试计划生成测试序列。
通常存在不止一个执行压缩的可能顺序;因此,应当按生成具有最短测试计划长度的压缩测试计划的顺序执行压缩。然而当所涉及的测试计划数量较大时,难以发现提供最短长度的压缩测试计划的压缩顺序。图7示出了第一试探式算法,所述第一试探式算法用于以生成被认为具有最短长度的压缩测试计划的顺序执行测试计划压缩。
在图7中,首先生成陈列FVA(i)(步骤1100)。如下所述,通过在所有时间所有测试计划中根据准则1(以后描述)对元件集合进行排序,生成FVA(i)。在设置i=0(步骤1102)之后,当在压缩之前第一次从多个测试计划中选择测试计划时,选择对应于FVA(i)的测试计划(步骤1106);否则根据准则2选择一个测试计划(步骤1108)。接着,根据准则3选择出将与所选择的测试计划一起压缩的一个或多个测试计划(步骤1110),压缩所选择的测试计划以生成部分压缩测试计划(步骤1112)。
从步骤1104到步骤1112重复该处理,直到没有仍未压缩的测试计划(步骤1114);当该处理结束时,如果生成的部分压缩测试计划的数量为2或更大,则将部分压缩测试计划的集合当作测试计划的集合(步骤1118),并且从步骤1104到步骤1116重复该处理。
当部分压缩测试计划的数量变成1时,递增i(步骤1120),并且如果i不为N(步骤1122),则从步骤1104到步骤1120重复该处理。
在这样获得的N个压缩测试计划中,采用具有最短长度的压缩测试计划(步骤1124)。
在上述流程中,步骤1116的部分压缩测试计划的数量可能不会降低到1。对此,如果步骤1116中的部分压缩测试计划的数量与前面处理循环的结果相同,这将被看作是异常,并且连接多个部分压缩测试计划以形成压缩测试计划,此后处理前进到步骤1120。
在说明上述FVA(i)和准则1到3之前,首先说明测试计划可压缩性图表。
当如表格4所示提供了四个测试计划T1到T4时,针对四个测试计划生成如图8所示的测试计划可压缩性图表。
表格4 (a)T1 (b)T2 时间 P0 P1 P2 P3 P4 0 X b X X X 1 b X X b X 2 X X X 0 X 时间 P0 P1 P2 P3 P4 0 b X X X X 1 X X b X 0
(c)T3 (b)T3 时间 P0 P1 P2 P3 P4 0 X b 0 1 X 1 X 0 1 X X 2 X X X X X 时间 P0 P1 P2 P3 P4 0 b 0 0 1 X 1 X X X X X
为测试计划可压缩性图表的各个顶点分配的标记(i,j)表示测试计划i中的时间j,顶点(i,j)和顶点(k,m)之间的边表示测试计划k可以按照时间偏移j-m(≥0)与测试计划i压缩。在图8的例子中,顶点(2,0)和(1,0)以及顶点(2,1)和(1,1)之间存在的边表示测试计划T1可以按照偏移0与测试计划T2压缩。顶点(2,1)和(1,0)之间边的存在表示测试计划T1也可以按照偏移1与测试计划T2压缩。反之,顶点(1,2)和(2,0)之间的边表示测试计划T2可以按照偏移2与测试计划T1压缩。
在图8的可压缩性图表中,存在由比如顶点(1,0),(2,1)和(3,2)构成的集团(cligue);这意味着当测试计划T1和T2分别按照偏移2和1与测试计划T3压缩时,如下面等式(3)所示,可以按照使所有三个测试计划具有公共重叠部分的方式压缩这些测试计划。
在本发明的第一试探式算法中,根据规定准则从可压缩性图表中顺序提取出最大的集团。提取最大集团对应于通过压缩测试计划生成部分压缩测试计划(图7中的步骤1104到1114)。当部分压缩测试计划的数量为2或更大时,通过把部分压缩测试计划的集合用作压缩测试计划的集合再次生成可压缩性图表,并且重复上述处理。
接着,当第一次从部分可压缩性图表中提取一集团时,通过改变首先放入集团的顶点来生成N个压缩测试计划(图7中的步骤1120和1122),并且采用N个压缩测试计划中最短的压缩测试计划(步骤1124)。陈列FVA(图7中的步骤1100)是表示首先提取的顶点的优先级的陈列,通过根据下面的要素对测试计划可压缩性图表的顶点进行排序来生成FVA。
(排序要素1)按照∑nbr(u)的降序对所有顶点进行排序,其中u是nbr(v)中的元素,nbr(v)表示各个顶点v的相邻顶点集合。
(排序要素2)按照nbr(v)的降序对具有相同的∑nbr(u)数值的顶点v进行排序。
(排序要素3)按照∑W(v,u)(u∈nbr(v))的升序对nbr(v)的值相同的顶点v进行排序。
在表格5中使用伪C语言详细示出了本发明的第一试探式算法,并且在表格6中示出了该算法中使用的函数。
表格5 Gen_CTPT(T,N)/*生成压缩测试计划表*/ 1 { 生成第一顶点阵列FVA; for(i=0;i<N;i++){ CT=T; 5 do{ SC=φ; while(CT!=φ){ 由CT生成测试计划可压缩性图表G; if(CT==T){ 10 C=Extract_first_clique(G,FVA[i]); } else { C=Extract_clique(G); } 15 ST=Schedule_test_plan(C); SC=SC∪{ST}; CT=CT·C; } CT=SC; 20 }while(|SC|>1); if(i==0){ Min_CTPT=ST; } else if(|ST|<|Min_CTPT|){ 25 Min_CTPT=ST; } } return Min_CTPT;} 30
表格6
在表格5中,在行3生成FVA(i),并且通过在行4将i的数值顺序替代为0到N-1,重复行6到行21的处理(下面详细描述)。在针对i的相应数值生成的压缩测试计划中,在行22到28采用最短的压缩测试计划作为Min_CTPT。
在行6到21的处理中,首先将通过压缩若干测试计划获得的部分压缩测试计划的集合SC初始化成空集合(行7)。接着,重复下面的处理,直到测试计划集合CT变成空集合(行8)。
首先,根据T生成测试计划可压缩性图表G=(V,E,j,t)(行9)。
使用函数Extract_first_clique()或Extract_clique()(以后描述)从测试计划可压缩性图表G中提取一个最大的集团(行10到15)。
接着,使用函数Schedule_test_plan()并根据时间安排信息将各个测试计划当作集团C中的元素安排在测试计划压缩时间表中的适当时间上,并且生成部分压缩测试计划ST(行16)。
ST被加入部分压缩测试计划集合SC(行17)。
接着,从测试计划集合T中删除测试计划,即集团C中的元素(行18)。
当CT变成空集合时,退出上述处理循环(行8到19),部分压缩测试计划集合SC被当作新的CT(行20),并且重复行6到21的处理,直到部分压缩测试计划集合中的元素数量降低到1。即,这里生成的每个部分压缩测试计划均被认为是新测试计划。当部分压缩测试计划集合中仅剩余一个元素时,所剩余的元素ST提供针对i的每个数值的压缩测试计划。
在行10到15的处理中,当CT等于T时,即在从图表G中提取第一个集团时,使用Extract_first_clique();否则使用Extract_clique()。这二者之间的差别在于,在前一种情况下,所提取的首先放入集团的顶点是FVA(i),而在后一种情况下,由函数Best_first_vertex()确定该顶点。函数Best_first_vertex()根据下面的准则确定顶点。这个准则对应于图7的步骤1108中使用的准则2。
(H1)选择总和∑|nbr(u)|最大的顶点(顶点集合V1,表格6中第12行),即顶点V的相邻顶点集合nbv(v)中包含的全部顶点u的相邻顶点数的总和最大。
通过选择其相邻顶点的相邻顶点的总和最大的顶点,增加了有机会被加入C的顶点的数量,结果提高了提取最大集团的概率。
(H2)在顶点集合V1中,选择具有最大数量的相邻顶点的顶点(顶点集合V2,第13行)。
通过向C中加入具有最大数量相邻顶点的顶点,可以象在(H1)中那样提高提取最大集团的概率。
(H3)在顶点集合V2中,选择这样的顶点v(顶点集合V3,行14),即对于顶点v和顶点v的相邻顶点集合nbr(v)中包含的所有顶点u之间的边(u,v),为该边(u,v)分配的权重v1(u,v)的总和最小。
通过选择权重总和最小的顶点,可以象在(H1)中那样提高提取最大集团的概率。
如果V3中存在不止一个顶点,则为了确定一个顶点,选择具有最小模数(module number)的顶点并插入C中(第15行),然后返回C(第16行)。
当这样确定一个顶点时,使用函数Candidate()获得集团集合C中包含的顶点u的相邻顶点集合的乘积集合,并且将该集合设置成新的S(第4或34行)。搜索S(第4或34行),从S中选择一个顶点v(第5或35行)并且插入C中(第6或36行);重复这个处理,直到S变成空集合。当S变成空集合时,返回C。当选择″S中的一个顶点v″时,针对候选顶点集合S中的各个顶点使用下面三个试探式算法(函数Best_vertex())。这对应于图7中的准则3。
H1':选择相邻顶点的数量最大的顶点。
在顶点集合S中,选择S中顶点v的相邻顶点数最大的顶点(顶点集合V4)。
这被用来提高提取最大集团的概率。
H2':选择在压缩运算之后会提供最短测试计划长度的顶点。
在顶点集合V4中,选择这样的顶点,即在通过对顶点v和C中包含的所有顶点执行压缩运算以生成测试计划时,提供最短测试计划长度的顶点(顶点集合V5)。
当通过在提取集团之后对集团中的元素执行压缩运算以生成测试计划时,这被用来提高使测试计划长度最小的概率。
H3':选择压缩运算后的测试计划中的X的数量(或X所占的比例)最大(最高)的顶点。
在顶点集合V5中,选择这样的顶点,即在通过对顶点v和C中包含的所有顶点执行压缩运算以生成测试计划时,测试计划中包含的X的数量(或X所占的比例)最大(顶点集合V6)的顶点。这提高了通过提取集团并对集团的元素执行压缩运算生成的测试计划中包含的X的数量(或X所占的比例),并且被用来提高其能够与其它压缩测试计划一起压缩的概率。
H1',H2'和H3'的顺序可以互换。
图9示出了基于本发明、用于获得最优压缩测试计划的第二试探式算法。在步骤S1中,当尝试对任意选择的测试计划对的压缩运算之后,选择一对具有最短部分压缩测试计划长度的测试计划。在步骤S2中,通过把两个测试计划安排在测试计划时间表中的适当时间上,生成部分压缩测试计划。在步骤S3中,确定是否所有测试计划已经在测试计划时间表中排好时间。如果所有测试计划已经排好,则将该部分压缩测试计划当作压缩测试计划,并且方法终止。否则,方法前进到步骤S4。在步骤S4中,当尝试对每一对由部分压缩测试计划和尚未排好时间的测试计划构成的测试计划对的压缩运算之后,选择一对具有最短部分压缩测试计划长度的测试计划。在步骤S5中,更新部分压缩测试计划,同时还更新时间安排结果。
下面使用表格1中示出的GCD测试计划例子描述图9的算法的操作。当在S1中从测试计划中间选择压缩时会产生最短测试计划长度的一对测试计划时,由于可以按照时间偏移0压缩电路元件6的测试计划T6和电路元件5的测试计划T5,并且压缩之后的长度为2,即最短长度(选择T5和T6构成的测试计划对),于是在S2,T5和T6被安排在表格7所示的测试计划时间表中的时间0上,并且执行压缩运算∩f以生成部分压缩测试计划(表示成PT1)。在S3中,由于测试计划T4,T7,T11,T12,T13和T14仍然没有排定时间,处理前进到S4。
表格7
接着,在S4中,由于可以按照偏移1压缩PT1和T11,并且压缩之后的长度为3,即最短长度,所以选择T11。接着在步骤S5中,T11被排定在如表格8所示的测试计划时间表中的时间0上,而T5和T6被排定在时间1上,并且执行压缩运算∩f以生成部分压缩测试计划(作为PT2)。在S3中,由于测试计划T4,T7,T12,T13和T14仍然没有排定时间,处理前进到S4。
表格8
接着,在S4中,由于可以按照偏移1压缩PT2和T4,并且压缩之后的长度为4,即最短长度,所以选择T4。接着在步骤S5中,在如表格9所示的测试计划时间表中T4被排定在时间1上,T11在时间1上,而T5和T6被排定在时间2上,并且执行压缩运算∩f以生成部分压缩测试计划(作为PT3)。在S3中,由于测试计划T7,T12,T13和T14仍然没有排定时间,处理前进到S4。
表格9
接着,在S4中,由于可以按照偏移1压缩PT3和T12,并且压缩之后的长度为7,即最短长度,所以选择T12。接着在步骤S5中,T12被排定在如表格10所示的测试计划时间表中的时间0上,T4被排定在时间3上,T11被排定在时间4上,而T5和T6被排定在时间5上,并且执行压缩运算∩f以生成部分压缩测试计划(作为PT4)。在S3中,由于测试计划T7,T13和T14仍然没有排定时间,处理前进到S4。
表格10
接着,在S4中,由于可以按照偏移0压缩PT4和T13,并且压缩之后的长度为7,即最短长度,所以选择T13。接着在步骤S5中,T13和T12被排定在如表格11所示的测试计划时间表中的时间0上,T4被排定在时间3上,T11被排定在时间4上,而T5和T6被排定在时间5上,并且执行压缩运算∩f以生成部分压缩测试计划(作为PT5)。在S3中,由于测试计划T7和T14仍然没有排定时间,处理前进到S4。
表格11
接着,在S4中,由于可以按照偏移2压缩PT5和T14,并且压缩之后的长度为9,即最短长度,所以选择T14。接着在步骤S5中,T14被排定在如表格12所示的测试计划时间表中的时间0上,T13和T12被排定在时间2上,T4被排定在时间5上,T11被排定在时间6上,而T5和T6被排定在时间7上,并且执行压缩运算∩f以生成部分压缩测试计划(作为PT6)。在S3中,由于测试计划T7仍然没有排定时间,处理前进到S4。
表格12
接着,在S4中,由于可以按照偏移1压缩PT6和T7,并且压缩之后的长度为10,即最短长度,所以选择T7。接着在步骤S5中,T7被排定在如表格13所示的测试计划时间表中的时间0上,T14被排定在时间1上,T13和T12被排定在时间3上,T4被排定在时间6上,T11被排定在时间7上,而T5和T6被排定在时间8上,并且执行压缩运算∩f以生成部分压缩测试计划(作为PT7)。在S3中,由于所有测试计划均被排定时间,所以PT7被确定为压缩测试计划表,并且处理终止。
表格13
如图10所示,在为使用压缩测试计划的数据路径电路生成测试序列的测试序列生成处理中,输入通过针对每个模块执行测试生成所产生的测试模式文件(文件数量与模块数量一样多)和压缩测试计划,并且把数据路径电路的测试序列当作结果输出。图11示出了数据路径电路的测试序列生成流程。在S1中,表示模块数量的变量i被初始化成0。在S2中,按照测试模式数量的降序对各模块的测试模式文件排序。在S3中,为第0个模块生成与测试模式一样多的压缩测试计划。在S4中,确定是否已经完成所有模块的处理,并且在已经完成所有处理的情况下,处理前进到S12;否则处理前进到S5。在S5中,选择第i个模块。在S6中,表示第i个模块的测试模式数量的变量j被初始化成1。在S7中,确定是否已经完成第i个模块的所有测试模式的处理,并且在已经完成所有处理的情况下,处理前进到S8;否则处理前进到S9。在S8中,变量i被递增。在S9中,选择第i个模块的第j个测试模式。在S10中,变量j被递增。在S11中,用第i个模块的第j个测试模式替换第j个压缩测试计划表中的bi。在S12中,连结所有压缩测试计划表以生成数据路径的测试序列。在S13中,为数据路径的测试序列中任何剩余的b和X随机分配0或1。
根据表格4中示出的四个测试计划生成如表格14所示的压缩测试计划(在表格14中,bi表示测试计划Ti中的b)。
表格14时间 P0 P1 P2 P3 P4 0 b4 0 0 1 X 1 X b3 0 1 X 2 b2 0 1 X X 3 X b1 b2 X 0 4 b1 X X b1 X 5 X x X 0 X
在这个例子,假定模块1的测试模式是下面示出的V11到V14。
V11=(P0,P1,P3)=(1,0,1)
V12=(P0,P1,P3)=(0,0,0)
V13=(P0,P1,P3)=(1,1,0)
V14=(P0,P1,P3)=(0,1,0)
假定模块2的测试模式是下面示出的V21到V24。
V21=(P0,P2)=(0,0)
V22=(P0,P2)=(1,0)
V23=(P0,P2)=(0,1)
V24=(P0,P2)=(1,1)
假定模块3的测试模式是下面示出的V31和V32。
V31=(P1)=(0)
V32=(P1)=(1)
假定模块4的测试模式是下面示出的V41和V42。
V41=(P0)=(1)
V42=(P0)=(1)
通过向表格14的压缩测试计划插入上述测试模式,执行数据路径的测试生成。首先,由于模块的测试模式的最大数量为4,生成四个压缩测试计划。表格15示出了当测试模式V11到V42被插入四个压缩测试计划时得到的结果。表格16中示出了通过连接四个压缩测试计划产生的数据路径的测试序列。在表格16中剩余的bi和X的位置上随机输入数值0或1。
表格15 时间 P0 P1 P2 P3 P4 0 0 0 0 1 X 1 X 0 0 1 X 2 0 0 1 X X 3 X 0 0 X 0 4 1 X X 1 X 5 X X X 0 X 时间 P0 P1 P2 P3 P4 0 1 0 0 1 X 1 X 1 0 1 X 2 1 0 1 X X 3 X 0 0 X 0 4 0 X X 0 X 5 X X X 0 X时间 P0 P1 P2 P3 P4 0 b4 0 0 1 X 1 X b3 0 1 X 2 0 0 1 X X 3 X 1 1 X 0 4 1 X X 0 X 5 X X X 0 X时间 P0 P1 P2 P3 P4 0 b4 0 0 1 X 1 X b3 0 1 X 2 1 0 1 X X 3 X 1 1 X 0 4 0 X X 0 X 5 X X X 0 X表格16时间 P0 P1 P2 P3 P4 0 0 0 0 1 X 1 X 0 0 1 X 2 0 0 1 X X 3 X 0 0 X 0 4 1 X X 1 X 5 X X X 0 X 6 1 0 0 1 X 7 X 1 0 1 X 8 1 0 1 X X 9 X 0 0 X 0 10 0 X X 0 X 11 X X X 0 X 12 b4 0 0 1 X 13 X b3 0 1 X 14 0 0 1 X X 15 X 1 1 X 0 16 1 X X 0 X 17 X X X 0 X 18 b4 0 0 1 X 19 X b3 0 1 X 20 1 0 1 X X 21 X 1 1 X 0 22 0 X X 0 X 23 X X X 0 X
图12图示了一个GCD电路,该GCD电路具有测试控制器104,该测试控制器104通过用未经压缩的测试计划替换表格1示出的GCD电路测试计划中的b,为具有DFT 100'的数据路径电路提供根据现有技术方法生成的测试序列,图13是详细示出测试控制器104的图。图14是测试控制器104的状态转换图。
在图12中,测试控制器104把测试模式信号t1,控制器复位信号和来自数据路径的外部输入的四个位当作输入,并且生成数据路径控制信号(针对现有模块的控制信号和为了实现DFT而加入的控制信号)。
在图13中,TMR是用于存储要测试的模块的ID的测试计划ID寄存器。在GCD中,由于存在八个要测试的模块,所以需要log28=3位寄存器。TPR是为每个模块的控制信号提供b的数值的测试模式寄存器,其中对于每个目标故障,b的值不同。在GCD中,由于每个模块所需的控制信号不超过1位,所以只需要1位长的寄存器。如果存在这样的外部输入,即当b在所有的测试计划中以控制输入的形式出现,则此时该外部输入的数值总是为X,则可以在不通过TPR的情况下从该外部输入将该数值直接输入到控制信号中。TPR和TMR具有载入/保持功能,并且被控制电路的复位输入控制。当它为ON时,寄存器处于载入模式,当复位输入为OFF时,寄存器处于保持模式。
在图14中,由于状态数量等于每个模块的测试计划长度的最大数值,所以需要五个状态,并且状态寄存器的位宽为[log25]=3。(这里,[x]表示x被下舍入到最接近的整数。此后也是如此。)以电路元件11的测试为例。对于T11,必须在时间1以控制输入m4的形式输入b(表格1)。假定测试T11的测试模式数量为4,其中有两个测试模式的b值为0,有两个测试模式的b值为1。首先在时间0上,R被设置成ON,t1被设置成0,从xin将电路元件11的ID(例如000)载入TMR,并且将0载入TPR。在时间1上,R被设置成OFF,t被设置成1,将时间0上T11的数值当作控制信号输出(S0)。在时间2上,将时间1上T11的数值(m4的数值为0)当作控制信号输出(S1)。在时间3上,将时间2上T11的数值当作控制信号输出(S2)。在时间4上,将时间0上T11的数值当作控制信号输出(S0)。在时间5上,将时间1上T11的数值(m4的数值为0)当作控制信号输出(S1)。在时间6上,将时间2上T11的数值当作控制信号输出(S2)。在时间7上,R被设置成ON,t1被设置成0,从xin将电路元件11的ID(000)载入TMR,并且将0载TPR。在时间8上,R被设置成OFF,t被设置成1,将时间0上T11的数值当作控制信号输出(S0)。在时间9上,将时间1上T11的数值(m4的数值为1)当作控制信号输出(S1)。在时间10上,将时间2上T11的数值当作控制信号输出(S2)。在时间11上,将时间0上T11的数值当作控制信号输出(S0)。在时间12上,将时间1上T11的数值(m4的数值为1)当作控制信号输出(S1)。在时间6上,将时间2上T11的数值当作控制信号输出(S2)。在这个现有技术的测试控制器中,标识所有模块所需的TMR数量接近等于log2n(n是模块数量)。此外,在每个状态转换中,最多存在n个条件分支,并且这需要数量很多的电路。
图15示出了使用本发明的测试生成方法的GCD测试控制器,所述测试生成方法使用了压缩测试计划。由于在压缩测试计划中有5个b被当作控制输入(参见表格13中的PT7),所以需要一个5位TPR。可选地,如果没有使用TPR,由于同时在压缩测试计划中最多有两个b被当作控制输入,所以两个用于测试的外部输入可以被直接输入到TPG。
图16是图15的测试计划生成电路的状态转换图。在图16中,GCD压缩测试计划的长度为10,因此状态数量为10。对于[log210],状态寄存器的位宽为4。当t1=1时,发生状态转换,并且输出不需要if语句,而是只输出一组控制输入。由于输出不需要if语句,与现有技术方法相比,在测试具有大量模块的大规模电路的情况下可以大大减少TPG组合电路所占的面积。
在表格16的测试序列中,存在若干尚未填充实际测试模式数值的bi。由于所有模块(电路元件)的测试模式数量不相等,所以会出现这种情况。因此,如果根据各个模块的测试模式的估测数量将多个测试计划分成多个分组,并且如果针对每个分组生成压缩测试计划,插入测试模式,并且连结所生成的压缩测试计划,于是就可以缩短整个测试序列的长度。
图17示出了通过对测试计划进行分组来生成多个压缩测试计划的处理流程。除图6的流程之外,输入各个电路元件的测试模式的估测数量,并且根据测试模式的数量对测试计划进行分组(步骤1200);接着针对每个分组生成压缩测试计划。
图18示出了测试计划分组的处理流程。在S1中,按照电路模块的测试模式数量的降序对测试计划进行排序。在S2中,当测试计划被排序时测试模式数量在测试计划之间发生改变的点被定义成下降点,并且针对下降点的所有可能组合计算无效面积值,其中下降点的数量等于指定分组数量减1。无效面积值被定义成Σi=1n((max_N-Ni)×Li)]]>
其中n是测试计划数量,max_N是各个模块所属的分组内的测试模式的最大数量,Ni是模块i的测试模式的数量,Li是模块i的测试计划长度。无效面积值表示被致使无效的测试序列长度。在S3中,选择使无效面积值最小的下降点组合,并且为生成压缩测试计划对测试计划进行分组。
图19示出了GCD测试计划分组的例子。如图所示,T4、T5和T6的测试模式数量为20,T7的测试模式数量为16,T14、T13和T12的测试模式数量为5,T11的测试模式数量为4。在S1中,如图19所示对测试计划进行排序。如图所示形成三个下降点P1,P2,和P3。这里,如果测试计划被分成三个分组,则必须选择两个下降点。对于3C2,存在三个可能的下降点组合。在S2中,针对三个组合中的每一个计算无效面积值。当选择下降点P1和P2时,无效面积值为3;当选择下降点P1和P3时,无效面积值为143;当选择下降点P2和P3时,无效面积值为16。在S3中,选择无效面积值最小,即无效面积值为3的下降点组合P1和P2。T4,T5和T6被分组在一起(G1),T7自身形成一个分组(G2),而T14,T13,T12和T11被分组在一起(G3)。表格17中示出了针对各分组生成的压缩测试计划。整个数据路径的测试序列长度为159。
表格17
基于P1和P2的分组所生成的压缩测试计划
(a)G1(T4,T5,T6) 时间 Xin yin L1 L2 L3 m1 m2 m3 m4 T1 0 b b 1 1 X 0 0 0 X X 1 b b 1 1 X 0 0 0 X X 2 X X X X X X X X X X
(b)G2(T7) 时间 Xin yin L1 L2 L3 m1 m2 m3 m4 T1 0 b b 1 1 X 0 0 0 X X 1 X X 1 X X 1 0 X X b 2 X X X X 1 X X X 0 X 3 X X X X X X X X X X
(c)G3(T11,T12,T13,T14) 时间 Xin yin L1 L2 L3 m1 m2 m3 m4 T1 0 b X 1 X X 0 0 X X X 1 b b 1 1 X 0 0 b X X 2 X b 1 1 1 1 0 0 b 1 3 b b 1 1 1 0 b 0 0 X 4 b X 1 X 1 b 0 X 0 1 5 X X X X 1 X X X 0 X 6 X X X X X X X X X X
图20示出了使用三个压缩测试计划(表格17)的情况下的GCD测试控制器。在表格17(c)中作为控制输入的b的数量为4,这在表格17中为最大值,因而TPR的位宽为4位。此外,为了标识三个压缩测试计划,CTPT-IDR的位宽为[log23]=2位。
图21示出了使用三个压缩测试计划表时GCD测试控制器的状态转换图。表格17(c)的压缩测试计划的长度为7,即最长的长度;因此状态数量为7,并且状态寄存器的位宽为[log27]=3位。在每个状态中,最多有三种控制输入。
通过图19的例子可以发现,选择器或多路复用器(在图19的例子中,图3中的电路元件11到14)的测试模式数量相对较少。此外,如果其它电路元件的测试结果表明他们工作正常,则在多数情况下上述电路元件也应当工作正常。因此,如果通过排除选择器或多路复用器的测试计划来生成压缩测试计划,则可以进一步缩短测试序列长度。在上述GCD电路的例子中,通过根据测试计划T4到T7生成压缩测试计划来获得表格18中示出的压缩测试计划,并且所得到的测试序列长度为100。
表格18
T4,T5,T6,T7 时间 Xin yin L1 L2 L3 m1 m2 m3 m4 T1 0 b b 1 1 X 0 0 0 X X 1 X X 1 X X 1 0 X X b 2 b b 1 1 1 0 0 0 0 X 3 b b 1 1 X 0 0 0 X X 4 X X X X X X X X X X
在生成压缩测试计划时,如果已知每个电路元件所需的测试模式数量,则产生数量等于测试模式数量的测试计划(均被称作测试),并且所述测试计划被压缩(此后被称作压缩测试);接着可以通过在压缩测试中插入测试模式来生成测试序列。例如,当提供如表格19到21所示的电路元件1到3的测试计划T1到T3,并且电路元件1到3的测试模式数量分别为1、2和1时,生成测试T11、T21、T22和T31并且如表格22所示的那样排定其时间,然后生成如表格23所示的压缩测试。
表格19
T1 时间 P0 P1 P2 P3 0 b X X 0 1 X b X 1 2 X X 0 X 3 X 0 X b
表格20
T2时间 P0 P1 P2 P3 0 b X X 0 1 X X X X 2 X b 1 X 3 X X X X
表格21
T3时间 P0 P1 P2 P3 0 b b X X 1 X X 1 0 2 b X 0 1 3 X b X b 4 X X 0 X 5 X X X X
表格22 Test T11 T21 T22 T31时间P0 P1 P2 P3 P0 P1 P2 P3 P0 P1 P2 P3 P0 P1 P2 P3 0 b X X 0 1 X X X X b b X X 2 b X X 0 X b 1 X X X 1 0 3 X b X 1 X X X X b X 0 1 4 X X 0 X X b X b 5 X 0 X b X X 0 X 6 b X X 0 X X X X 7 X X X X 8 X b 1 X 9 X X X X 10 - 11 12 13 14 15 16 17
表格23 时间 P0 P1 P2 P3 0 b X X 0 1 b b X X 2 b b 1 0 3 b b 0 1 4 X b 0 b 5 X 0 0 1 6 b X X 0 7 X X X X 8 X b 1 X 9 X X X X
图22示出了层次结构电路,其中高层块Z包含两个GCD电路块A和B。如果从块外部观察每个块A和B均是强可测的,则通过加入两个如图23所示的选择器,从高层块外部观察所述块也是强可测的,并且其管脚分配表如表格24所示。
表格24
(a)块A的管脚分配表 决管脚Xin Yin 输出端口 高层管脚PI1 PI2 PO 条件无 无t1=1
(b)块B的管脚分配表 块管脚xin Yin 输出端口 高层管脚PI1 PI3 PO 条件t2=1 无 t1=0
当根据上述管脚分配表将表格1中的测试计划转换成从高层块Z的管脚施加的测试计划时,针对各电路块A和B获得如表格25和26所示的测试计划。
表格25块A中的电路元件11块A中的电路元件12块A中的电路元件13块A中的电路元件14块A中的电路元件7块A中的电路元件6块A中的电路元件5块A中的电路元件4表格26块B中的电路元件11块B中的电路元件12块B中的电路元件13块B中的电路元件14块B中的电路元件7块B中的电路元件6块B中的电路元件5块B中的电路元件4 时间P11P12P13 L1 L2 L3 m1 m2 m3 m4 T1L1' L2' L3' m1' m2' m3' m4'T1' t1 t2 0 b x b x x x x x x x x 1 1 x 0 0 0 x x x 1 1 x x x x x x x x x x x x x x x x x x x 0 x
在测试计划时间表中排定这16个测试计划的时间,并且根据结果执行压缩运算以生成如表格27所示的压缩测试计划。由于压缩测试计划的长度为15,并且测试模式最大数量为20(参见图19),所以块A和B中数据路径的测试序列长度为300。另一方面,在使用分别针对相应模块A和B生成的压缩测试计划顺序测试模块A和B的情况下,由于每个压缩测试计划的长度为10,所以整个测试序列长度为400;这表明如果并行测试模块A和B可以大大减少测试序列长度。
表格27 时间 R1 R2 R3 L1 L2 L3 m1 m2 m3 m4 T1 L1 L2 L3 m1 m2 m3 m4 T1 t1 t2 0 b x x 1 x x 0 0 x x x x x x x x x x x x x 1 b b x x 1 x x x b x x 1 x x 0 0 x x x x 1 2 b x b 1 x x 1 0 x x 1 1 1 1 0 0 0 b x x 1 3 b b b 1 1 1 0 0 0 0 x x 1 x x x 0 x x 0 x 4 b b x x 1 1 x x 0 b x 1 x x 0 b x x x 1 1 5 b b x 1 1 x 0 b 0 x x x x 1 x x x 0 x 1 x 6 b x b 1 x 1 b 0 x 0 1 x 1 x x x 0 x x 0 x 7 b x x x x 1 x x x 0 x 1 x x b 0 x x 1 1 1 8 b x x x x x x x x x x 1 x 1 0 0 x 0 x 1 1 9 b b b 1 1 x 0 0 0 x x x 1 x x x b x x 0 x 10 b b x 1 1 x 0 0 0 x x 1 x x 1 0 x x 1 1 x 11 b x b 1 x x 1 0 x x b 1 1 1 0 0 0 0 x x 1 12 b x x 1 x 1 0 0 x 0 x 1 x x 1 0 x x b 0 x 13 b x b x x x x x x x x 1 1 1 0 0 0 0 x 1 1 14 x x x x x x x x x x x x x x x x x x x 0 x
图24是示出整个电路的图,其中插入了测试控制器。测试控制器向每个块中的数据路径提供控制输入。由表格27可以发现,需要一个10位TPR,并且状态数量为15;因此状态寄存器是[1og215]=4位宽。
至此所描述的压缩测试计划生成方法和测试序列生成方法均被使用使计算机执行规定处理的程序实现。所述程序可以被存储在连接到计算机的硬盘上,也可以被存储在诸如CD-ROM的存储介质上并且根据需要通过把CD-ROM插入到CD-ROM驱动器中将程序读取到计算机的内部存储装置中;可选地,该程序可以被存储在连接到网络的存储装置中并且可以根据需要通过网络被读取到计算机的内部存储装置中。于是实现了本发明的方法和装置。
如上所述,根据本发明,以能够压缩的形式并行排定构成RTL数据路径电路的电路元件的测试计划的时间,并且压缩所述测试计划以生成压缩测试计划;结果,可以大大减少测试序列长度,并且可以减少为此测试目的而增加的电路的数量。