基于二次异或运算的测试数据压缩与解压缩方法

文档序号:7545743阅读:223来源:国知局
基于二次异或运算的测试数据压缩与解压缩方法
【专利摘要】本发明提供了一种基于二次异或运算的测试数据压缩与解压缩方法,能够减少划分数目,提高最短游程长度,从而进一步提高压缩率。本发明所提供的方法通过相邻位异或将连续01或者10序列合并成为一个码字,这样不仅减少了划分数目,而且提高了最短游程长度,从而能进一步提高压缩率。通过解码分析,该方法解码结构额外增加的硬件开销不大,并且与被测试电路无关。因此该方法具有极好的压缩率硬件开销比。
【专利说明】基于二次异或运算的测试数据压缩与解压缩方法
【技术领域】
[0001]本发明涉及集成电路测试方法,具体涉及一种集成电路测试数据压缩与解压缩方法。
【背景技术】
[0002]因集成电路技术的飞速发展,系统芯片的功能越来越强大,但同时用于测试芯片的测试数据量也快速增加。急速增长的测试数据量对昂贵的自动测试设备ATE存储空间和传输通道性能都提出了更高的要求,同时也增加了测试芯片所需的时间,增加了测试所需的成本。
[0003]测试数据压缩技术是缓解测试数据量过大的一种非常有效的方法。目前国内外学者对其进行了充分研究。测试数据编码方法是测试数据压缩技术中的一大类。编码方法首先对测试集按照某种规则进行划分,然后分别用较短的码字来表示一个个划分。例如Golomb码和FDR码、国内学者詹文法等提出的混合定变长码以及韩银和等提出的Variable-Tail编码都是基于O游程进行划分的,而AFR码以及国内学者彭喜元等提出的变游程编码都是同时基于O游程和I游程进行划分的。这些方法都能够在较小的硬件开销下取得较好的压缩率,尤其是国内学者提出的很多方法都能在对原始的测试集未进行差分处理的情况下,取得较好的压缩率。但用这些方法进行划分时,仍有两个问题值得进一步研究。两个问题是:(1)划分数能否进一步减少,(2)划分的最短长度能否进一步提高。

【发明内容】

[0004]本发明所要解决的技术问题在于提供一种基于二次异或运算的测试数据压缩与解压缩方法,能够减少划分数目,提高最短游程长度,从而进一步提高压缩率。
[0005]为解决上述技术问题,本发明的基于二次异或运算的测试数据压缩与解压缩方法,包括以下步骤:
A、构建码表;
所述的码表包括以下字段:以L表示的游程长度、以k表示的组号、组前缀、组后缀、由组前缀和组后缀组合而成的游程长度对应的码字,码表中的记录按照游程长度递增排列并编组,组号k升序排序;
第k组包括2k+1条记录;
在第k组的前半组,组前缀以长度为k的O游程对应的编码表示;在第k组的前半组,组后缀由最小的k位二进制数至最大的k位二进制数依次排列;在第k组的后半组,组前缀以长度为k的I游程对应的编码表示;在第k组的后半组,组后缀同样由最小的k位二进制数至最大的k位二进制数依次排列。
[0006]所述的O游程指由若干个连续的O加上I个I组成的二进制代码,其长度以O的数目计算;所述的I游程指由若干个连续的I加上I个O组成的二进制代码,其长度以I的数目计算。本发明中,每一个O游程或I游程根据其长度L可以得到一个唯一的编码;该编码可以根据计算得到。而构建码表的目的在于以低成本的数据存储取代高消耗的计算,从而减少压缩与解压缩时的计算开销,码表的规模可以根据芯片测试规模而定。
[0007]B、编码步骤;
(1)将所有测试立方首尾相连,形成数据流;
(2)i=0;
(3)以当前点i作为起点,获取最长能取得的O游程,将结果存储到res[0]中,并记录终点位置到pos [O]中;
(4)以当前点i作为起点,获取最长能取得的I游程,将结果存储到res[l]中,并记录终点位置到pos [I]中;
(5)以当前点i作为起点,获取最长能取得的01序列,将结果存储到res[2]中,并记录终点位置到pos[2]中;所述的01序列是指起始为O且0/1交替出现并以最后两位相同的方式结尾的字符串序列;
由上述对01序列的定义可知,01序列的长度若为奇数,则其结尾必然是两个1,例如
01011,0101011;0 1序列的长度若为偶数,则其结尾必然是两个0,例如0100,010100 ;因而在知道01序列长度L的前提下,其编码是唯一的;
(6)以当前点i作为起点,获取最长能取得的10序列,将结果存储到res[3]中,并记录终点位置到pos[3]中;10序列是指起始为I且0/1交替出现并以最后两位相同的方式结尾的字符串序列;
(7)取pos数组最大值所对应下标index;
(8)第一次异或运算;
判断res [index]类型:若res [index]为O游程,则cl为O ;若为I游程,则cl为I ;若为01序列,则Cl为I ;若为10序列,则Cl为O ;将Cl与res [index]组成字符串,相邻位异或得到O或者I游程,结果保存在res [index]中;
(9)第二次异或运算;
对第(8)步处理的res [index]进行类型判断:若res [index]为O游程,则c2为O;若为I游程,则c2为I ;将c2与res [index]组成字符串,相邻位异或得到O游程,记录c2及游程长度L ;
(10)通过游程长度L查A步骤所得的码表获取对应的码字;
(11)输出c2、cl和码字;
(12)将i 置为 pos [index]+1 ;
(13)重复(3)— (12)直到数据编码完成。
[0008]C、将B步骤所得数据编码传送至被测芯片。
[0009]D、解码步骤;
①被测芯片的解码器读取一个二进制数,作为游程类型代码c2;
②继续读取一个二进制数,作为字符串类型代码Cl;
③读取一个连续的O游程或I游程作为组前缀,根据得到的组前缀确定组后缀的位数,并读取组后缀,取二进制数I和组前缀起始位以及组后缀组成一个二进制数,转换为十进制,再减2得到当前目标数据流长度L ;
④若c2=0且cl=0,则输出一个长度为L的O游程; 若c2=0且cl=l,则输出一个长度为L的I游程;
若c2=l且cl=0,则输出一个长度为L的10序列;
若c2=l且cl=l,则输出一个长度为L的01序列;
根据前面的表述,该O游程或I游程的长度L确定以后,其二进制代码具备唯一性;
根据前面的表述,该01序列或10序列的长度L确定以后,其二进制代码也具备唯一性;本领域技术人员可以根据L的奇偶属性,以各种算法来输出01序列或10序列的原始代码,但仍然落入本发明的保护范围;
⑤重复上述①-④步骤直到解码完成,还原得到完整的数据流。
[0010]以下给出解码设计的一种优选算法:
所述的D步骤所述的解码器包括一个FSM(有限状态机)、一个k+2位计数器、一个1g2 (k+2)位计数器和一个异或门。
[0011 ] 所述的解码步骤包括:
(O初始化en=l ;
(2)FSM读入I位,将其输出给f,表示游程类型;
(3)FSM读入I位,将其输出给t ;
(4)FSM接收编码的组前缀并将组前缀首位移入到k+2位计数器;每接收I位组前缀,inc 力口 I ;
(5 )将组后缀移入至k+2位计数器,dec2=l,表示每进入一位1g2 (k+2)位计数器减I,直到1g2 (k+2)位计数器减为I;
(6)k+2位计数器进行减I操作。k+2位计数器每减l,f值不变,输出t值为f与t异或结果,v=l,直到k+2位计数器减为2 ;
(7)将t与f异或得到最终输出out;
(8)t = O时输出非f,t=l时继续输出上一个f ;
(9)重复2-8直到解码结束。
[0012]本发明所提供的方法通过相邻位异或将连续01或者10序列合并成为一个码字,这样不仅减少了划分数目,而且提高了最短游程长度,从而能进一步提高压缩率。通过解码分析,该方法解码结构额外增加的硬件开销不大,并且与被测试电路无关。因此该方法具有极好的压缩率硬件开销比。
【专利附图】

【附图说明】
[0013]图1是使用本发明对数据流进行二次异或运算的运算方式示意图;
图1a表示对数据进行第一次异或运算,图1b表示对数据进行第二次异或运算;
图2给出了使用本发明的基于二次异或运算的测试数据压缩与解压缩方法对某个给定测试集进行编码的示例;图2 (a)给出了一个确定测试集,图2 (b)演示了如何对其进行编码的实例;
图3是本发明的基于二次异或运算的测试数据压缩与解压缩方法所提供的解码器的解压电路框图。
【具体实施方式】[0014]下面结合附图对本发明做进一步说明。
[0015]定义:
O游程指由若干个连续O组成并以一个I结尾的字符串,O的个数至少为1,该O游程的长度L指字符串中O的个数。
[0016]I游程指由若干个连续I组成并以一个O结尾的字符串,I的个数至少为1,该I游程的长度L指字符串中I的个数。
[0017]01序列是指起始为O且0/1交替出现并以最后两位相同的方式结尾的字符串序列;该01序列的长度L指不包含最后一位在内的字符串的长度;
由上述对01序列的定义可知,01序列的长度L若为偶数,则其结尾必然是两个1,例如01011,0101011 ;01序列的长度L若为奇数,则其结尾必然是两个0,例如0100,010100 ;因而在知道01序列长度L的前提下,其编码是唯一的。
[0018]10序列是指起始为I且0/1交替出现并以最后两位相同的方式结尾的字符串序列;该10序列的长度L指不包含最后一位在内的字符串的长度;
由上述对10序列的定义可知,10序列的长度L若为偶数,则其结尾必然是两个0,例如100、10100; 10序列的长度L若为奇数,则其结尾必然是两个1,例如1011、101011 ;因而在知道10序列长度L的前提下,其编码是唯一的。
[0019]如图1所示,本发明中,通过对这四种类型的序列相邻位分别进行异或运算,都能将它们转变成O游程。
[0020]图1 (a)是对四种类型划分相邻位进行第一次异或变换,图1 (b)是对第一次异或变换结果相邻位进行异或变换,其中灰色底纹部分在本发明中称为添加的默认位,它的作用是与划分中的第一位进行异或需要添加的一位。默认位添加规则是:在O游程前添加0,I游程前添加1,01序列前添加1,10序列前添加O。
[0021]通过对划分中相邻位进行两次异或运算,即可把原始测试集转换成长度至少为2的O游程。这样一来:(I)减少了划分的数目,划分数目减少了,需要编码的代码字就会减少;(2)将游程的长度提高2,消除了长度为O以及长度为I的游程,这样可以提高码字的压缩增益;(3)仅包含O游程更易于压缩。
[0022]两次异或后运算后最终仅包含O游程,因此编码时不需要区分是O游程还是I游程。两次变换时为了让每一位都能与它的前一位进行异或运算,所以需要在起始位之前添加一位(我们称之为默认位)。默认位只有两种可能:0或者1,因此需要加标记来区分。通过分析可知最终编码一个划分的码字一般形式:第二次默认位+第一次默认位+游程长度对应代码字。
[0023]两两异或运算所得到的结果其长度与原始字符串长度相同。
[0024]游程长度对应码字表按如下规则构建:(1)码字由前缀和后缀组成,前缀表示代码字所在的组,后缀表示代码字在同组前缀内序号;(2)码字前缀有
M1和两种形式,其中k表示组号;(3)后缀长度等于组号k。
Jth
[0025]A、构建码表
第k组包括2k+1条记录;在第k组的前半组,组前缀以长度为k的O游程对应的编码表示;在第k组的前半组,组后缀由最小的k位二进制数至最大的k位二进制数依次排列;在第k组的后半组,组前缀以长度为k的I游程对应的编码表示;在第k组的后半组,组后缀同样由最小的k位二进制数至最大的k位二进制数依次排列;也就是说,根据游程长度L,可以通过简单计算得到组前缀与组后缀并得到编码;而本发明中以码表的形式来将计算结果存储,其目的是减少芯片测试过程中的计算开销。依此方法构建码表,码表所需组数K可
由表示游程最长长度L计算得到,具体计算公式:
【权利要求】
1.一种基于二次异或运算的测试数据压缩与解压缩方法,包括以下步骤: A、构建码表; 所述的码表包括以下字段:以L表示的游程长度、以k表示的组号、组前缀、组后缀、由组前缀和组后缀组合而成的游程长度对应的码字,码表中的记录按照游程长度L递增排列并编组; 第k组包括2k+1条记录; 在第k组的前半组,组前缀以长度为k的O游程对应的编码表示;在第k组的前半组,组后缀由最小的k位二进制数至最大的k位二进制数依次排列;在第k组的后半组,组前缀以长度为k的I游程对应的编码表示;在第k组的后半组,组后缀同样由最小的k位二进制数至最大的k位二进制数依次排列; B、编码步骤; (1)将所有测试立方首尾相连,形成数据流;
(2)i=0 ; (3)以当前点i作为起点,获取最长能取得的O游程,将结果存储到res[0]中,并记录终点位置到pos [O]中; (4)以当前点i作为起点,获取最长能取得的I游程,将结果存储到res[l]中,并记录终点位置到pos [I]中 ; (5)以当前点i作为起点,获取最长能取得的01序列,将结果存储到res[2]中,并记录终点位置到pos [2]中;所述的01序列是指起始为O且0/1交替的序列,序列最后两位相同; (6)以当前点i作为起点,获取最长能取得的10序列,将结果存储到res[3]中,并记录终点位置到pos[3]中;所述的10序列是指起始为I且0/1交替的序列,序列最后两位相同; (7)取pos数组最大值所对应下标index; (8)第一次异或运算; 判断res [index]类型:若res [index]为O游程,则cl为O ;若为I游程,则cl为I ;若为01序列,则Cl为I ;若为10序列,则Cl为O ;将Cl与res [index]组成字符串,相邻位异或得到O或者I游程,结果保存在res [index]中; (9)第二次异或运算; 对第(8)步处理的res [index]进行类型判断:若res [index]为O游程,则c2为O ;若为I游程,则c2为I ;将c2与res [index]组成字符串,相邻位异或得到O游程,记录c2及游程长度; (10)通过游程长度查A步骤所得的码表获取对应的码字; (11)输出c2、cl和码字;
(12)将i 置为 pos [index]+1 ; (13)重复(3)— (12)直到数据编码完成; C、将B步骤所得数据编码传送至被测芯片; D、解码步骤; ①被测芯片的解码器读取一个二进制数,作为游程类型代码c2 ;②继续读取一个二进制数,作为字符串类型代码Cl; ③读取一个连续的O游程或I游程作为组前缀,根据得到的组前缀确定组后缀的位数,并读取组后缀,取二进制数I和组前缀起始位以及组后缀组成一个二进制数,转换为十进制,再减2得到当前目标数据流长度L ; ④若c2=0且cl=0,则输出一个长度为L的O游程; 若c2=0且cl=l,则输出一个长度为L的I游程; 若c2=l且cl=0,则输出一个长度为L的10序列; 若c2=l且cl=l,则输出一个长度为L的01序列; ⑤重复上述①-④步骤直到解码完成,还原得到完整的数据流。
2.如权利要求1所述的基于二次异或运算的测试数据压缩与解压缩方法,其特征在于:D步骤所述的解码器包括一个FSM(有限状态机)、一个k+2位计数器、一个1g2 (k+2)位计数器和一个异或门。
3.如权利要求2所述的所述的基于二次异或运算的测试数据压缩与解压缩方法,其特征在于:所述的解码步骤包括: (O初始化en=l ; (2)FSM读入I位,将 其输出给f,表示游程类型; (3)FSM读入I位,将其输出给t ; (4)FSM接收编码的组前缀并将组前缀首位移入到k+2位计数器;每接收I位组前缀,inc 加 I ; (5 )将组后缀移入至k+2位计数器,dec2=l,表示每进入一位1g2 (k+2)位计数器减I,直到1g2 (k+2)位计数器减为I; (6)k+2位计数器进行减I操作; k+2位计数器每减I,f值不变,输出t值为f与t异或结果,V=I,直到k+2位计数器减为2 ; (7)将t与f异或得到最终输出out; (8)t= O时输出非f,t=l时继续输出上一个f ; (9)重复2-8直到解码结束。
【文档编号】H03M7/30GK104038232SQ201410195188
【公开日】2014年9月10日 申请日期:2014年5月9日 优先权日:2014年5月9日
【发明者】程一飞, 吴琼, 詹文法, 吴海峰, 朱世娟 申请人:安庆师范学院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1