基于相邻位异或运算的测试数据压缩与解压缩方法

文档序号:7545744阅读:231来源:国知局
基于相邻位异或运算的测试数据压缩与解压缩方法
【专利摘要】本发明为了应对测试数据量过大而提出了一种基于相邻位异或运算的测试数据压缩与解压缩方法。该方法通过相邻位异或的方法将连续01或者10序列在FDR码中分别作为一个游程的码字合并成为一个码字,这样不仅减少了划分数目,而且提高了最短游程长度,从实验结果看它能进一步提高压缩率。通过解码分析,该方法解码结构额外增加的硬件开销不大,并且与被测试电路无关。因此该方法具有极好的压缩率硬件开销比。
【专利说明】基于相邻位异或运算的测试数据压缩与解压缩方法
【技术领域】
[0001]本发明涉及机场电路测试方法,具体涉及一种测试数据压缩与解压缩方法。
【背景技术】
[0002]伴随着集成电路技术蓬勃发展而来的是对SoC测试的数据量急剧增加,测试数据急剧增加会导致ATE的存储容量和传输带宽就会成为测试的瓶颈。测试数据压缩技术是通过对原始测试集进行压缩,减少了需要存储和传输的数据量,因此它是解决这一问题的非常有效的方法。
[0003]基于游程的编码方法是测试数据压缩技术性价比非常高的一类,它以较小的硬件开销换来比较高的压缩率,Golomb编码、FDR编码及AFR编码等都是基于游程的编码,国内梁华国提出的交替和连续长度编码、韩银和等提出的Variable-Tail编码、彭喜元等提出的变游程编码、詹文法等提出的混合定变长码等也都是基于游程的编码。其中Golomb码和FDR码仅对O游程进行编码,并未对连续的I进行编码,因此对未差分的测试向量压缩率不高;AFR码同时对O游程和I游程编码,因此其压缩率比Golomb码和FDR码有所提高;交替和连续长度编码对交替序列和连续序列交替进行编码,若同时出现交替序列或者连续序列则在它们之间插入分隔符,因此编码方法不够灵活;混合定变长码编码前缀长度是参数k确定,一旦k确定了,所有组前缀长度即确定,而为了获取更好的压缩率就必须反复实验确定k的值。因此基于游程的编码技术中若充分考虑01或者10序列并给出可靠的解决方案,均能在不明显增加解码硬件开销的前提下进一步提高压缩率。

【发明内容】

[0004]本发明所要解决的技术问题在于提供一种基于相邻位异或运算的测试数据压缩与解压缩方法,可以减少需要编码的游程数量;可以增加最短可编码的游程长度,从而达到在不额外增加解码电路硬件开销的前提下进一步提高压缩率。
[0005]为解决上述技术问题,本发明的基于相邻位异或运算的测试数据压缩与解压缩方法,包括以下步骤:
A、构建码表;
所述的码表包括以下字段:以L表示的游程长度、以k表示的组号、组前缀、组后缀、由组前缀和组后缀组合而成的游程长度对应的码字,码表中的记录按照游程长度递增排列并编组;
第k组包括2k+1条记录;
在第k组的前半组,组前缀以长度为k的O游程对应的编码表示;在第k组的前半组,组后缀由最小的k位二进制数至最大的k位二进制数依次排列;在第k组的后半组,组前缀以长度为k的I游程对应的编码表示;在第k组的后半组,组后缀同样由最小的k位二进制数至最大的k位二进制数依次排列。
[0006]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]中;
(6)以当前点i作为起点,获取最长能取得的10序列,将结果存储到res[3]中,并记录终点位置到pos [3]中;
(7)取pos数组最大值所对应下标index;
(8)异或运算:
判定res [index]类型,若为10起始的序列或O游程,则在其前添加一位默认值O ;若为01起始的序列或I游程则在其前添加一位默认值I ;记录该默认值为Cl ;
将res [index]相邻位异或得到O或者I游程,记录游程类型为c2并记录游程长度为
L ;
(9)通过游程长度L查A步骤所构建的码表获取对应码字;
(10)输出游程类型c2、添加的默认位Cl和码字得到一字符串;
(11)将i 置为 pos [index]+1 ;
(12)重复3— 11直到数据编码完成。
[0007]C、将上述步骤所得数据编码输入被测电路。
[0008]D、解码步骤:
①被测芯片的解码器读取一个二进制数,作为游程类型代码c2;
②继续读取一个二进制数,作为字符串类型代码Cl;
③读取一个O游程或I游程作为组前缀,根据得到的组前缀确定组后缀的位数,并读取组后缀,将I和组前缀起始位以及组后缀组成一个二进制数,将该二进制数转换为对应的十进制数,再减2后得到当前目标游程的长度L ;
④根据读取的c2、Cl和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序列;
⑤重复上述①-③步骤直到解码完成,还原得到完整的数据流。
[0009]上述方法通过相邻位的异或运算,一方面可以减少需要编码的游程数量;另一方面可以增加最短可编码的游程长度,即可编码的游程长度由传统的O变成2,从而达到在不额外增加解码电路硬件开销的前提下进一步提高压缩率。实验结果也能说明本方法具有极高的数据压缩率。
[0010]优选的,本发明提出了一种解码器的具体实现方法。
[0011]所述的解码器由一个FSM(有限状态机)、一个k+2位计数器、一个1g2 (k+2)位计数器和一个异或门构成。
[0012]解码步骤包括:
(O初始化en=l ;
(2)FSM读入I位,将其输出给f,表示游程类型;
(3)FSM读入I位,将其输出给t ;
(4)FSM接收编码的组前缀并将组前缀首位移入到k+2位计数器;每接收I位组前缀,inc 加 I。
[0013](5)将组后缀移入至k+2位计数器,dec2=l,表示每进入一位1g2 (k+2)位计数器减1,直到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直到解码结束。
[0014]该解码器结构简单,独立于被测电路且大小可变,可以按照本发明的基本思路完成数据解码。
【专利附图】

【附图说明】
[0015]图1演示了如何使用本发明的基于相邻位异或运算的测试数据压缩与解压缩方法对某个给定测试集编码。
[0016]图1 (a)给出了一个确定测试集,根据本发明给出的码方法进行编码后结果如图1(b)所示。
[0017]图2是本发明的基于相邻位异或运算的测试数据压缩与解压缩方法所提供的解码器的解压电路框图。
【具体实施方式】
[0018]下面结合附图对本发明做进一步说明。
[0019]定义:
O游程指由若干个连续O组成并以一个I结尾的字符串,O的个数至少为1,该O游程的长度L指字符串中O的个数。
[0020]I游程指由若干个连续I组成并以一个O结尾的字符串,I的个数至少为1,该I游程的长度L指字符串中I的个数。
[0021]01序列是指起始为O且0/1交替出现并以最后两位相同的方式结尾的字符串序列;该01序列的长度L指不 包含最后一位在内的字符串的长度;
由上述对01序列的定义可知,01序列的长度L若为偶数,则其结尾必然是两个1,例如
01011,0101011;01序列的长度L若为奇数,则其结尾必然是两个0,例如0100、010100 ;因而在知道01序列长度L的前提下,其编码是唯一的。
[0022]10序列是指起始为I且0/1交替出现并以最后两位相同的方式结尾的字符串序列;该10序列的长度L指不包含最后一位在内的字符串的长度;由上述对10序列的定义可知,10序列的长度L若为偶数,则其结尾必然是两个0,例如100、10100; 10序列的长度L若为奇数,则其结尾必然是两个1,例如1011、101011 ;因而在知道10序列长度L的前提下,其编码是唯一的。
[0023]本发明的基于相邻位异或运算的测试数据压缩与解压缩方法,包括以下步骤:
A、构建码表;
所述的码表包括以下字段:以L表示的游程长度、以k表示的组号、组前缀、组后缀、由组前缀和组后缀组合而成的游程长度对应的码字,码表中的记录按照游程长度递增排列并编组;
第k组包括2k+1条记录;
在第k组的前半组,组前缀以长度为k的O游程对应的编码表示;在第k组的前半组,组后缀由最小的k位二进制数至最大的k位二进制数依次排列;在第k组的后半组,组前缀以长度为k的I游程对应的编码表示;在第k组的后半组,组后缀同样由最小的k位二进制数至最大的k位二进制数依次排列。
[0024]依照上述方法所构建的码表如下表所示:
【权利要求】
1.一种基于相邻位异或运算的测试数据压缩与解压缩方法,包括以下步骤: A、构建码表; 所述的码表包括以下字段:以L表示的游程长度、以k表示的组号、组前缀、组后缀、由组前缀和组后缀组合而成的游程长度对应的码字,码表中的记录按照游程长度递增排列并编组; 第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]中; (6)以当前点i作为起点,获取最长能取得的10序列,将结果存储到res[3]中,并记录终点位置到pos [3]中; (7)取pos数组最大值所对应下标index; (8)异或运算: 判定res [index]类型,若为10起始的序列或O游程,则在其前添加一位默认值O ;若为01起始的序列或I游程则在其前添加一位默认值I ;记录该默认值为Cl ; 将res [index]相邻位异或得到O或者I游程,记录游程类型为c2并记录游程长度为L ; (9)通过游程长度L查A步骤所构建的码表获取对应码字; (10)输出游程类型c2、添加的默认位Cl和码字得到一字符串;
(11)将i 置为 pos [index]+1 ; (12)重复3— 11直到数据编码完成; C、将上述步骤所得数据编码输入被测电路; D、解码步骤: ①被测芯片的解码器读取一个二进制数,作为游程类型代码c2; ②继续读取一个二进制数,作为字符串类型代码Cl; ③读取一个O游程或I游程作为组前缀,根据得到的组前缀确定组后缀的位数,并读取组后缀,将I和组前缀起始位以及组后缀组成一个二进制数,将该二进制数转换为对应的十进制数,再减2后得到当前目标游程的长度L ; ④根据读取的c2、Cl和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所述的基于相邻位异或运算的测试数据压缩与解压缩方法,其特征在于:所述的解码器由一个FSM(有限状态机)、一个k+2位计数器、一个1g2(k+2)位计数器和一个异或门构成。
3.如权利要求1所述的基于相邻位异或运算的测试数据压缩与解压缩方法,其特征在于:解码步骤包括: (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/30GK104038233SQ201410195190
【公开日】2014年9月10日 申请日期:2014年5月9日 优先权日:2014年5月9日
【发明者】詹文法, 吴琼, 程一飞, 吴海峰, 朱世娟 申请人:安庆师范学院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1