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

技术编号:10418015 阅读:176 留言:0更新日期:2014-09-12 10:23
本发明专利技术为了应对测试数据量过大而提出了一种基于相邻位异或运算的测试数据压缩与解压缩方法。该方法通过相邻位异或的方法将连续01或者10序列在FDR码中分别作为一个游程的码字合并成为一个码字,这样不仅减少了划分数目,而且提高了最短游程长度,从实验结果看它能进一步提高压缩率。通过解码分析,该方法解码结构额外增加的硬件开销不大,并且与被测试电路无关。因此该方法具有极好的压缩率硬件开销比。

【技术实现步骤摘要】
基于相邻位异或运算的测试数据压缩与解压缩方法
本专利技术涉及机场电路测试方法,具体涉及一种测试数据压缩与解压缩方法。
技术介绍
伴随着集成电路技术蓬勃发展而来的是对SoC测试的数据量急剧增加,测试数据急剧增加会导致ATE的存储容量和传输带宽就会成为测试的瓶颈。测试数据压缩技术是通过对原始测试集进行压缩,减少了需要存储和传输的数据量,因此它是解决这一问题的非常有效的方法。基于游程的编码方法是测试数据压缩技术性价比非常高的一类,它以较小的硬件开销换来比较高的压缩率,Golomb编码、FDR编码及AFR编码等都是基于游程的编码,国内梁华国提出的交替和连续长度编码、韩银和等提出的Variable-Tail编码、彭喜元等提出的变游程编码、詹文法等提出的混合定变长码等也都是基于游程的编码。其中Golomb码和FDR码仅对0游程进行编码,并未对连续的1进行编码,因此对未差分的测试向量压缩率不高;AFR码同时对0游程和1游程编码,因此其压缩率比Golomb码和FDR码有所提高;交替和连续长度编码对交替序列和连续序列交替进行编码,若同时出现交替序列或者连续序列则在它们之间插入分隔符,因此编码方法不够灵活;混合定变长码编码前缀长度是参数k确定,一旦k确定了,所有组前缀长度即确定,而为了获取更好的压缩率就必须反复实验确定k的值。因此基于游程的编码技术中若充分考虑01或者10序列并给出可靠的解决方案,均能在不明显增加解码硬件开销的前提下进一步提高压缩率。
技术实现思路
本专利技术所要解决的技术问题在于提供一种基于相邻位异或运算的测试数据压缩与解压缩方法,可以减少需要编码的游程数量;可以增加最短可编码的游程长度,从而达到在不额外增加解码电路硬件开销的前提下进一步提高压缩率。为解决上述技术问题,本专利技术的基于相邻位异或运算的测试数据压缩与解压缩方法,包括以下步骤:A、构建码表;所述的码表包括以下字段:以L表示的游程长度、以k表示的组号、组前缀、组后缀、由组前缀和组后缀组合而成的游程长度对应的码字,码表中的记录按照游程长度递增排列并编组;第k组包括2k+1条记录;在第k组的前半组,组前缀以长度为k的0游程对应的编码表示;在第k组的前半组,组后缀由最小的k位二进制数至最大的k位二进制数依次排列;在第k组的后半组,组前缀以长度为k的1游程对应的编码表示;在第k组的后半组,组后缀同样由最小的k位二进制数至最大的k位二进制数依次排列。B、编码步骤(1)将所有测试立方首尾相连,形成数据流;(2)i=0;(3)以当前点i作为起点,获取最长能取得的0游程,将结果存储到res[0]中,并记录终点位置到pos[0]中;(4)以当前点i作为起点,获取最长能取得的1游程,将结果存储到res[1]中,并记录终点位置到pos[1]中;(5)以当前点i作为起点,获取最长能取得的01序列,将结果存储到res[2]中,并记录终点位置到pos[2]中;(6)以当前点i作为起点,获取最长能取得的10序列,将结果存储到res[3]中,并记录终点位置到pos[3]中;(7)取pos数组最大值所对应下标index;(8)异或运算:判定res[index]类型,若为10起始的序列或0游程,则在其前添加一位默认值0;若为01起始的序列或1游程则在其前添加一位默认值1;记录该默认值为c1;将res[index]相邻位异或得到0或者1游程,记录游程类型为c2并记录游程长度为L;(9)通过游程长度L査A步骤所构建的码表获取对应码字;(10)输出游程类型c2、添加的默认位c1和码字得到一字符串;(11)将i置为pos[index]+1;(12)重复3-11直到数据编码完成。C、将上述步骤所得数据编码输入被测电路。D、解码步骤:①被测芯片的解码器读取一个二进制数,作为游程类型代码c2;②继续读取一个二进制数,作为字符串类型代码c1;③读取一个0游程或1游程作为组前缀,根据得到的组前缀确定组后缀的位数,并读取组后缀,将1和组前缀起始位以及组后缀组成一个二进制数,将该二进制数转换为对应的十进制数,再减2后得到当前目标游程的长度L;④根据读取的c2、c1和L输出一段目标代码;步骤:若c2=0且c1=0,则输出一个长度为L的0游程;若c2=0且c1=1,则输出一个长度为L的1游程;若c2=1且c1=0,则输出一个长度为L的10序列;若c2=1且c1=1,则输出一个长度为L的01序列;⑤重复上述①-③步骤直到解码完成,还原得到完整的数据流。上述方法通过相邻位的异或运算,一方面可以减少需要编码的游程数量;另一方面可以增加最短可编码的游程长度,即可编码的游程长度由传统的0变成2,从而达到在不额外增加解码电路硬件开销的前提下进一步提高压缩率。实验结果也能说明本方法具有极高的数据压缩率。优选的,本专利技术提出了一种解码器的具体实现方法。所述的解码器由一个FSM(有限状态机)、一个k+2位计数器、一个log2(k+2)位计数器和一个异或门构成。解码步骤包括:(1)初始化en=1;(2)FSM读入1位,将其输出给f,表示游程类型;(3)FSM读入1位,将其输出给t;(4)FSM接收编码的组前缀并将组前缀首位移入到k+2位计数器;每接收1位组前缀,inc加1。(5)将组后缀移入至k+2位计数器,dec2=1,表示每进入一位log2(k+2)位计数器减1,直到log2(k+2)位计数器减为1;(6)k+2位计数器进行减1操作。k+2位计数器每减1,f值不变,输出t值为f与t异或结果,v=1,直到k+2位计数器减为2;(7)将t与f异或得到最终输出out;(8)t=0时输出非f,t=1时继续输出上一个f;(9)重复2-8直到解码结束。该解码器结构简单,独立于被测电路且大小可变,可以按照本专利技术的基本思路完成数据解码。附图说明图1演示了如何使用本专利技术的基于相邻位异或运算的测试数据压缩与解压缩方法对某个给定测试集编码。图1(a)给出了一个确定测试集,根据本专利技术给出的码方法进行编码后结果如图1(b)所示。图2是本专利技术的基于相邻位异或运算的测试数据压缩与解压缩方法所提供的解码器的解压电路框图。具体实施方式下面结合附图对本专利技术做进一步说明。定义:0游程指由若干个连续0组成并以一个1结尾的字符串,0的个数至少为1,该0游程的长度L指字符串中0的个数。1游程指由若干个连续1组成并以一个0结尾的字符串,1的个数至少为1,该1游程的长度L指字符串中1的个数。01序列是指起始为0且0/1交替出现并以最后两位相同的方式结尾的字符串序列;该01序列的长度L指不包含最后一位在内的字符串的长度;由上述对01序列的定义可知,01序列的长度L若为偶数,则其结尾必然是两个1,例如01011、0101011;01序列的长度L若为奇数,则其结尾必然是两个0,例如0100、010100;因而在知道01序列长度L的前提下,其编码是唯一的。10序列是指起始为1且0/1交替出现并以最后两位相同的方式结尾的字符串序列;该10序列的长度L指不包含最后一位在内的字符串的长度;由上述对10序列的定义可知,10序列的长度L若为偶数,则其结尾必然是两个0,例如100、10100;10序列的长度L若为奇数,则其结尾必然是两个1,例如1011、101011;因而在知道10序列长度本文档来自技高网...
基于相邻位异或运算的测试数据压缩与解压缩方法

【技术保护点】
一种基于相邻位异或运算的测试数据压缩与解压缩方法,包括以下步骤:A、构建码表;所述的码表包括以下字段:以L表示的游程长度、以k表示的组号、组前缀、组后缀、由组前缀和组后缀组合而成的游程长度对应的码字,码表中的记录按照游程长度递增排列并编组;第k组包括2k+1条记录;在第k组的前半组,组前缀以长度为k的0游程对应的编码表示;在第k组的前半组,组后缀由最小的k位二进制数至最大的k位二进制数依次排列;在第k组的后半组,组前缀以长度为k的1游程对应的编码表示;在第k组的后半组,组后缀同样由最小的k位二进制数至最大的k位二进制数依次排列;B、编码步骤(1)将所有测试立方首尾相连,形成数据流;(2)i=0;(3)以当前点i作为起点,获取最长能取得的0游程,将结果存储到res[0]中,并记录终点位置到pos[0]中;(4)以当前点i作为起点,获取最长能取得的1游程,将结果存储到res[1]中,并记录终点位置到pos[1]中;(5)以当前点i作为起点,获取最长能取得的01序列,将结果存储到res[2]中,并记录终点位置到pos[2]中;(6)以当前点i作为起点,获取最长能取得的10序列,将结果存储到res[3]中,并记录终点位置到pos[3]中;(7)取pos数组最大值所对应下标index;(8)异或运算:判定res[index]类型,若为10起始的序列或0游程,则在其前添加一位默认值0;若为01起始的序列或1游程则在其前添加一位默认值1;记录该默认值为c1;将res[index]相邻位异或得到0或者1游程,记录游程类型为c2并记录游程长度为L;(9)通过游程长度L査A步骤所构建的码表获取对应码字;(10)输出游程类型c2、添加的默认位c1和码字得到一字符串;(11)将i置为pos[index]+1;(12)重复3-11直到数据编码完成;C、将上述步骤所得数据编码输入被测电路;D、解码步骤:①被测芯片的解码器读取一个二进制数,作为游程类型代码c2;②继续读取一个二进制数,作为字符串类型代码c1;③读取一个0游程或1游程作为组前缀,根据得到的组前缀确定组后缀的位数,并读取组后缀,将1和组前缀起始位以及组后缀组成一个二进制数,将该二进制数转换为对应的十进制数,再减2后得到当前目标游程的长度L;④根据读取的c2 、c1和L输出一段目标代码;步骤:若c2=0且c1=0,则输出一个长度为L的0游程;若c2=0且c1=1,则输出一个长度为L的1游程;若c2=1且c1=0,则输出一个长度为L的10序列;若c2=1且c1=1,则输出一个长度为L的01序列;⑤重复上述①‑③步骤直到解码完成,还原得到完整的数据流。...

【技术特征摘要】
1.一种基于相邻位异或运算的测试数据压缩与解压缩方法,包括以下步骤:A、构建码表;所述的码表包括以下字段:以L表示的游程长度、以k表示的组号、组前缀、组后缀、由组前缀和组后缀组合而成的游程长度对应的码字,码表中的记录按照游程长度递增排列并编组;第k组包括2k+1条记录;在第k组的前半组,组前缀以长度为k的0游程对应的编码表示;在第k组的前半组,组后缀由最小的k位二进制数至最大的k位二进制数依次排列;在第k组的后半组,组前缀以长度为k的1游程对应的编码表示;在第k组的后半组,组后缀同样由最小的k位二进制数至最大的k位二进制数依次排列;B、编码步骤(1)将所有测试立方首尾相连,形成数据流;(2)i=0;(3)以当前点i作为起点,获取最长能取得的0游程,将结果存储到res[0]中,并记录终点位置到pos[0]中;(4)以当前点i作为起点,获取最长能取得的1游程,将结果存储到res[1]中,并记录终点位置到pos[1]中;(5)以当前点i作为起点,获取最长能取得的01序列,将结果存储到res[2]中,并记录终点位置到pos[2]中;01序列是指起始为0且0/1交替出现并以最后两位相同的方式结尾的字符串序列;该01序列的长度指不包含最后一位在内的字符串的长度;(6)以当前点i作为起点,获取最长能取得的10序列,将结果存储到res[3]中,并记录终点位置到pos[3]中;10序列是指起始为1且0/1交替出现并以最后两位相同的方式结尾的字符串序列;该10序列的长度指不包含最后一位在内的字符串的长度;(7)取pos数组最大值所对应下标index;(8)异或运算:判定res[index]类型,若为10起始的序列或0游程,则在其前添加一位默认值0;若为01起始的序列或1游程则在其前添加一位默认值1;记录该默认值为c1’;将res[index]相邻位异或得到0或者1游程,记录游程类型为c2并记录游程长度为L;(9)通过游程长度L査A步骤所构建的码表获取对应码字;(10)输出游程类型c2、添加的默认位c1’和码字得...

【专利技术属性】
技术研发人员:詹文法吴琼程一飞吴海峰朱世娟
申请(专利权)人:安庆师范学院
类型:发明
国别省市:安徽;34

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1