吴德清
(长沙航空职业技术学院,湖南 长沙 410014)
随着信息技术的飞速发展,电子产品的功能越来越强大,而体积则越来越小巧,从而推进半导体技术不断演进。SOC芯片的功能和复杂度日益提高,其芯片规模不断增加,同时,在芯片测试过程中,故障模型的增加也导致测试数据大幅增加,而自动测试仪器并没有相应地进行改进,其带宽和内存都难以承受急剧增加的测试数据,由此可见,如何对测试数据进行可靠有效的压缩,从而尽可能地减少测试时间,降低测试成本,已经成为SOC芯片测试的关键技术。
目前,常用的芯片测试方法主要包括三种类型,分别是内建自测试技术、测试紧缩技术以及测试数据压缩技术,其中,测试数据压缩技术应用最为普遍,其基本原理是将需要测试的数据经过压缩后存储在自动测试仪器中,芯片中使用解码电路对需要测试的数据先进行解码,然后再进行测试,从而减少自动测试仪器中的测试数据数量,代表性的编码方式包括统计码、霍夫曼码、Golomb码、MTC码、游程码、FDR码等。
通过实验统计可以发现,测试向量中与参考数据块相容的数据块数量越多,其在测试数据中出现的频率就会越小,反之,则出现的概率会越大。本文在这种现象基础上,利用FDR码变体的特点,提出一种基于数据块混合相容性统计的压缩算法,实验证明,该算法能有效地提高测试数据的压缩率。
在对本文所提出的算法进行说明之前,首先对相关的重要概念进行阐述,分别是数据块相容、连续位。数据块相容是指不同的两组数据存在相同的位,并且这些位均位于同一位置,或者是指两组数据中至少有一位是无关位,例如,数据“0X11”和“01X1”,这两组数据符合上述定义,因此,可以称这两组数据是数据块相容。连续位则是表示除了无关位以外的数据块不能包含多于一种的确定位,例如,可以认为数据“X1X11”是连续的1位,数据“00XX0X”是连续的0位。
数据块相容性统计码是指将需要进行测试的测试向量作为一个串行的数据流,如果这些测试数据流中对数据位进行统计后,其位数和k不存在倍数关系,则将该数据尾部进行无关位补充操作,从而使该测试数据流和k成倍数关系,然后,从测试数据流的第一位开始选择参考数据块,选择的标准是其数据块的长度必须为k,并将该选择的数据块作为自己的编码。接下来,判断和该数据块相邻等长的数据块是否和该数据块存在相容的关系,如果判断后发现两者存在相容关系,就对存在相容关系的个数进行统计,直到遇到不相容的数据块,同时,利用FDR码的变体对与参考数据块存在相容关系的数据块数量进行编码,并将不存在相容关系的数据块作为下一轮的参考数据块,依次进行相同的处理,直到最终完成整个测试数据块的统计。在整个统计的过程中,对于存在连续位关系的数据块,可以进行“一位压缩编码”,从而尽可能减少整个测试数据的长度,该编码方案可以表示为表1所示。
表1 编码方案
从上述编码方案中可以总结出本文所提出算法包括以下几个方面的特点:
(1)A1组的前缀长度为1,A2组的前缀长度为2,以此类推,An组的前缀长度为n;
(2)A1组的前缀和尾部长度均为1,A2组的前缀和尾部长度均为2,以此类推,所有的代码字,其前缀和尾部长度均相等;
(3)A2组的代码字长度比A1组的代码字长度多2位,以此类推,An+1组比An组代码字长度也多2位;
(4)测试数据中,与参考的数据块相容的数据块数量为a,那么a和An存在以下关系:n=[lb(a+3)]-1。
常用的识别每个码字的方法是:首先对前缀码进行读取,通常先对其中连续的1进行读操作,在读的过程中,一旦遇到0,就表示前缀已经读取完毕,由于上述分析中已经支持,前缀和尾部的位数是相同的,因此,整个前缀的位数可以决定后面的尾部位数,当将整个码字识别完毕时,码字所代表的与参考数据块相容的数据块数量就和前缀与尾部的位数之和相等。图1表示了在s5378电路中,假设数据块长度为4的情况下,参考数据块相容的相邻数据块数量的频率分布情况,显然,从该图中可以发现,当相容数据块数目较大时,频率较低,反之,则频率较高。
图1 分布情况示意图
本文所提出的算法较为简单,直接对需要测试的数据进行编码后,就可以使测试数据得到压缩,为了方便描述,假设数据块的长度为k,不足k位的数据块用无关位补充,算法可以用图2所示的流程图表示。
图2 算法流程图
在上述算法中,如果遇到测试数据是最后一个k位的数据块,则表示编码结束。
测试过程中还需对压缩的数据进行解码操作,本文所设计的解码器如图3所示,该解码器包括一个FSM(有限状态机)、lbn位计数器、lbk位计数器、k位CSR以及n位计数器和二路选择器。各个参数的含义如表2所示。
图3 解码器电路结构
表2 解码器电路各参数含义
shift2 del1 del2 rs1 rs2 inc1 lbk dec3 rs3控制“data_in”是否移入k位的CSR控制计数器减1控制计数器减1计数器复位信号计数器复位信号控制lbn位计数器加1控制数据块长度控制计数器减1指示计数器的复位状态
在该解码器电路中,n的值是由与参考数据块相容最多的数据块数目Nmax来决定的,它们之间的关系为:n=[l b(Nmax+3)]-1,当sel为低电平时,有限状态机的输出通过MUX的0通道后就可以成为scan_in,即扫描输入,从而实现对参考数据块的解码操作,具体的解压过程可以描述为以下5个步骤:
(1)FSM发出使能信号en为1时,“shift2”和“dec3”获得高电平,控制扫描链的输出,同时,将数据移入CSR,并对lbk的计数器进行减1,当rs3为高电平时,表示参考数据块的译码输出完毕;
(2)FSM将前缀移入n位计数器。当FSM接收到0时,结束该操作;
(3)当dec2为高电平时,对n位计数器进行减1操作,直到rs2为高电平时,表示和前缀对应数目的数据块完成解压操作;
(4)码字尾部移入n位计数器,当rs1为高电平时,尾部移入完毕;
(5)dec2为高电平时,将n位计数器进行减1操作,dec3为高电平时,利用MUX对相容数据块进行解压操作,直到rs2成为高电平,表示和尾部对应数目的数据块完成解压操作。重复前面的操作,直到完成所有数据的译码输出。
为了验证本文提出的压缩算法的有效性,本文采用Mintest生成测试向量,利用VC++6.0进行编程开发,在ISCAS89的标准电路基础上进行仿真实验,压缩率的计算方法如公式1所示。
公式1中的TD表示原始测试集,TE表示进行压缩后的测试集。
在进行压缩处理过程中,k的大小选择非常重要,k的位数不同,经过压缩处理后所获得的效果差别很大,如果k的值太少,则数据块的长度较小,数据块的数量就会增加,可以进行压缩的数据就会减少,从而降低压缩率;如果k的值太大,又会导致每个代码字的长度增加,同样也不利于压缩处理。由此可见,k值的选择对压缩率有着关键的影响。为了验证不同的k值情况下压缩率的异同,可以选取不同位数的k进行验证,以电路S5378为例,可以得到如图4所示的结果,从该图中可以看出,不同的k值会得到不同的压缩率,其中,当k的值为3时,该电路的压缩率最大,大于3或则小于3,压缩率反而降低。
图4 不同k值下的压缩率对比
为了验证本文所提出的编码算法的有效性,将本文算法和同类算法进行对比,表3显示了本算法与其它多种编码方法比较的结果,从该表中可以看出,本文所提出的算法其压缩效果比其它的方法更好。
表3 本文所提出算法与其他编码方法比较结果
信息技术的发展对芯片的测试技术提出了更高的要求,对测试数据进行有效的压缩,可以更好地降低开发成本,提高生产效率。本文主要针对测试数据具有相容性的特点,通过实验统计发现,测试向量中与参考数据块相容的数据块数量越多,其在测试数据中出现的频率就会越小,反之,出现的概率会越大,根据这一规律提出利用FDR码变体来对测试数据进行压缩处理的算法,通过仿真实验,证明该算法比其它编码方式更能提高压缩率。