基于分类码表和间隔划分的测试数据压缩与解压缩方法与流程

文档序号:14993262发布日期:2018-07-20 22:55阅读:202来源:国知局

本发明涉及计算机信息领域,具体涉及一种测试数据压缩与解压缩方法。



背景技术:

与同软件产品,硬件产品投入市场之前必须经过严格测试,集成电路芯片产品也不例外。测试在整个产品的生产制造过程中的地位起来越高,测试时间的长短影响产品投入市场的时间,同时也影响产品成本。产品测试时间过长,产品测试成本逐渐上升。因此如何缩短产品测试时间,降低测试成本成为工业界和科研工作者都广泛关注的问题。

集成电路功能越来越丰富、规模越来越大,内部电路结构相应地也越来越复杂,测试芯片需要的测试数据量同样逐渐增加。日益增加的庞大的测试数据量是造成测试成本上升的重要因素之一。在不降低测试效果的前提下减少测试数据的方法主要有测试紧缩、内建自测试以及外建自测试。测试紧缩虽然能够减少测试向量数目,但紧缩后的数据量仍然很庞大,需要进一步压缩。无论是内建自测试还是外建自测试都期望需要存储的测试数据量小,因此测试数据压缩技术成为芯片测试中普遍采用并且非常关键的技术之一。测试数据压缩技术在压缩效果、硬件开销、测试应用时间等方面都具有比较显著的优势,是近年来研究者充分研究的热点。而基于编码的测试数据压缩方法又是测试数据压缩中最主要的方法之一。近年来国内外研究都对其进行了广泛深入地研究。近年来关于测试数据压缩技术的代表性的工作有:golomb码、fdr码和交替码以及国内学者提出的variable-tail编码、交替与连续长度码、svic码、变游程码、和ptidr编码等。这些方法都能够在较小的硬件开销下取得较好的压缩率,尤其是国内学者提出的很多方法都能在对原始的测试集未进行差分处理的情况下,取得较好的压缩率。虽然国内外学者研究都取得了一定的进展,但提高压缩率、减小解压缩的硬件开销仍值得进一步研究。

将待测试的原始二进制数据划分为游程是一种基本方法,游程包括0游程和1游程两种类型,其中0游程是指一个由至少1位的连续的0及结尾的1个1组成的字符段,1游程是指一个由至少1位的连续的1及结尾的1个0组成的字符段。在所述0游程中,连续0的位数称为游程长度;在所述1游程中,连续1的位数称为游程长度。



技术实现要素:

本发明所要解决的技术问题在于提供一种基于分类码表和间隔划分的数据压缩与解压缩方法,其压缩效率高,硬件开销小。

为解决上述技术问题,本发明的基于分类码表和间隔划分的测试数据压缩与解压缩方法,包括以下步骤:

a、建立编码码字表

所述编码码字表由组号、划分长度、编码和码字组成,其中码字又由0游程码字和1游程码字2列组成;

所述编码码字表生成过程如下:

(a1)将记录划分长度的变量l初始化为1;

(a2)从1开始以递增的方式生成有限个组号g;

(a3)对于每个组号g,生成对应组的分隔符,所述第g组0游程码字的分隔符由g个0和1个1组成,而所述第g组1游程码字的分隔符由g个1和1个0组成;

(a4)对于每个组号g,分别从0到2g-1生成2g个编号,并将该编号转换成g位二进制代码,然后逐位插入第(a3)步生成的分隔符,使得每一位代码字均在码字中的偶数位位置上,每处理一个编号,变量l加1;

步骤a4中,十进制形式的编号直接转换为二进制时,所得二进制数的位数有可能不足g位,此时在所得二进制数的前端补0,使得其位数达到g位为止。

所得编码码字表如下:

b、压缩步骤:

(b1)依次按位读取二进制原始数据,得到一个0游程或1游程;记录该游程类型,同时将该游程记为一个划分;

(b2)若步骤(b1)所得划分的长度为奇数,则将所得划分的左边第1位去掉,得到间隔划分基础码;若步骤(b1)所得划分的长度为偶数,则将该划分记为间隔划分基础码;同时将步骤(b1)所得划分长度的奇偶性记为奇偶标志,奇偶标志用1bit表示,该位为1表示划分长度为奇数,该位为0表示划分长度为偶数;

(b3)对步骤(b2)所得间隔划分基础码,从第1位开始,每隔1位取1位组成间隔划分码,并将该间隔划分码的长度记为十进制数l;

(b4)查表;

以步骤(b1)所得游程类型、步骤(b3)所得十进制数l查步骤a所得编码码字表,得到对应的码字;

(b5)最终编码

将步骤(b2)所得奇偶标志位作为最终编码的第一位,再级联步骤(b4)所得码字,得到最终编码;

(b6)得到压缩数据流

重复步骤(b1)至步骤(b5),所得最终编码序列即为压缩后的数据。

c、读入步骤b所得压缩数据,进行解压缩。

所述步骤c具体包括:

a)初始化:置en=1;置v为1;置rs为1;置shift为0;置data为1表示解码准备好;

b)接收b_in的一位数据,若数据为1,则data输出一位0,若数据为0,则不做处理;

c)继续接收b_in的一位数据,并在fsm内部保存该数据,记为s,同时通过f输出该值;继续接收b_in的一位数据并从c_in移入(k+1)位计数器,shift置1;

d)若data为0,则data与f异或得到out输出,否则不处理;

e)继续接收b_in的一位数据,若其值与s相同,转f),若其值与s不相同,转g);

f)继续接收b_in的一位数据并从c_in移入(k+1)位计数器,shift保持不变;转e);

g)(k+1)位计数器进行减法操作。(k+1)位计数器每减一,data输出00,直到(k+1)位计数器值为2;最后data输出01;

h)data与f异或得到out;

i)重复a)到h)直到所有数据解码结束。

本发明提出一种基于分类码表和间隔划分的测试数据压缩与解压缩方法,该方法首先对测试数据集同时按0游程和1游程进行划分,然后间隔提取划分中的数位,最后对从划分中提取出来的间隔序列进行编码。由于仅对从划分中提取出来的间隔序列(后文中简述为间隔划分)进行编码,间隔划分长度比原划分长度的短,所以间隔划分对应的编码比原划分对应编码短;另外原始划分的最短长度为2,新划分最短长度为1,因此不存在长度为0的新划分,码表只需要从长度为1开始。编码时采用一种新的编码码表,该码表不同于由前缀和后缀两部分构成的传统码表,能够减少测试数据解压缩电路的硬件开销。因此本方法能够进一步提高压缩率,而且不需要对原始测试数据进行差分操作,直接压缩原始测试数据,同时采用新的编码方式能使解压硬件开销更小。

附图说明

图1是本发明中解压缩步骤所涉及的解码电路框图;

图2是本发明中解压缩步骤的流程图。

具体实施方式

以下结合附图对本发明的具体实施方式做进一步说明。

本发明的基于分类码表和间隔划分的数据压缩与解压缩方法,包括以下步骤:

a、建立编码码字表

所述编码码字表由组号、划分长度、编码和码字组成,其中码字又由0游程码字和1游程码字2列组成;

码表有以下特点:(1)码字分成奇数位部分和偶数位部分(假设最左位为第1位),奇数位是长度为组号的游程对应的划分,偶数位是划分长度所对应的编码。(2)若组号为g,则其内包含2g种长度。若划分长度是l,其所在的组号g可由g=计算得出,即的整数部分。

所述编码码字表生成过程如下:

(a1)将记录划分长度的变量l初始化为1;

(a2)从1开始以递增的方式生成有限个组号g;

(a3)对于每个组号g,生成对应组的分隔符,所述第g组0游程码字的分隔符由g个0和1个1组成,而所述第g组1游程码字的分隔符由g个1和1个0组成;

(a4)对于每个组号g,分别从0到2g-1生成2g个编号,并将该编号转换成g位二进制代码,然后逐位插入第(a3)步生成的分隔符,使得每一位代码字均在码字中的偶数位位置上,每处理一个编号,变量l加1;

步骤a4中,十进制形式的编号直接转换为二进制时,所得二进制数的位数有可能不足g位,此时在所得二进制数的前端补0,使得其位数达到g位为止。

所得编码码字表具体结构:

表1编码码字表

b、压缩步骤:

(b1)依次按位读取二进制原始数据,得到一个0游程或1游程;记录该游程类型,同时将该游程记为一个划分;

(b2)若步骤(b1)所得划分的长度为奇数,则将所得划分的左边第1位去掉,得到间隔划分基础码;若步骤(b1)所得划分的长度为偶数,则将该划分记为间隔划分基础码;同时将步骤(b1)所得划分长度的奇偶性记为奇偶标志,奇偶标志用1bit表示,该位为1表示划分长度为奇数,该位为0表示划分长度为偶数;

(b3)对步骤(b2)所得间隔划分基础码,从第1位开始,每隔1位取1位组成间隔划分码,并将该间隔划分码的长度记为十进制数l;

(b4)查表;

以步骤(b1)所得游程类型、步骤(b3)所得十进制数l查步骤a所得编码码字表,得到对应的码字;

(b5)最终编码

将步骤(b2)所得奇偶标志位作为最终编码的第一位,再级联步骤(b4)所得码字,得到最终编码;

(b6)得到压缩数据流

重复步骤(b1)至步骤(b5),所得最终编码序列即为压缩后的数据。

编码实例

下面通过一个实例来说明本编码方法,假设原始测试数据为00000000001111111100000010000010000000000000001101000000001,共59b。若采用fdr编码,其对应划分分别为:00000000001111111100000010000010000000000000001101000000001,编码为110100000000000000001100001011111000010001,共102b。

按照编码方法部分叙述的方法,可依次获得下面结果:

分析第(b5)步中的编码可知,最终经过本方法得到的编码总长度为46b。

需要说明的是,在本方法中,基于某一个游程所产生的划分,该划分的长度始终为该游程的长度加1。即:对于0游程,其末尾存在一个游程结束标志1,对于1游程,其末尾存在一个游程结束标志0;该游程结束标志不计入游程长度,但计入划分长度。

特殊情况的处理:对于原始数据的结尾,可能出现不能构成游程的情形,例如结尾为1个0、1个1、若干个连续的0、若干个连续的1等情形。出现此种情况,则在所获得的编码后面加上游程结束标志,让其结尾构成一个游程。例如最后得到的结果是111111,则在其后添加1位0,变成1111110;例如得到得到的结果是00000,则添加1位1,得到000001。经过处理后,本发明能够连续工作完成压缩编码。在后续的解码步骤,能够解码得到原始的结尾数据以及附加的游程结束标志,而在芯片测试过程中,对测试集数据长度是有要求的,因而在读取测试数据时,最后附加的游程结束标志不被读入,因而不影响测试结果。

解压设计

由编码码字表(表1)可知,划分长度l等于1+所有偶数位部分组成的二进制数换算为十进制再减1,即l=(1t)2-1。如划分长度l=6的0游程编码为01011,提取偶数位部分得到11,则(111)2-1=7-1=6,又如l=8的1游程编码为1010110,提取偶数位部分得到001,则(1001)2-1=9-1=8。因此可以使用一个特殊的k+1位计数器控制输出序列的长度。该计数器的初值置为1,当编码输入时,将1和编码偶数位部分依次向高位移位得到一个k+1位二进制数。通过该计数器减1操作控制输出序列的长度,直到该计数器的值为十进制1(二进制01时)输出结束。

输入编码的第1位决定输出游程的类型,其值为0表示需要输出的是0游程,其值为1表示需要输出的是1游程。

此于上述分析,我们设计一个由一个fsm(有限状态机)、一个k+1位计数器、和一个异或门构成的解码器,该解码器结构简单,独立于被测电路和测试数据集并且大小可变,解码器结构框图见图1,其中的信号名称及其对应功能描述见表2。

下面结合图1、图2及解码器中信号及功能表(表2)介绍本方法解码基本过程。

a)初始化:置en=1;置v为1;置rs为1;置shift为0;置data为1表示解码准备好;

b)接收b_in的一位数据(奇偶标志),若数据为1,则data输出一位0,若数据为0,则不做处理;

c)继续接收b_in的一位数据,并在fsm内部保存该数据,记为s,同时通过f输出该值;继续接收b_in的一位数据并从c_in移入(k+1)位计数器,shift置1;

d)若data为0,则data与f异或得到out输出,否则不处理;

e)继续接收b_in的一位数据,若其值与s相同,转f),若其值与s不相同,转g);

f)继续接收b_in的一位数据并从c_in移入(k+1)位计数器,shift保持不变;转e);

g)(k+1)位计数器进行减法操作。(k+1)位计数器每减一,data输出00,直到(k+1)位计数器值为2。最后data输出01;

h)data与f异或得到out;

i)重复a)到h)直到所有数据解码结束。

步骤a)到h)用流程图表示见图2.

表2解码器中信号及其对应功能

实验结果

理论方法均可以通过实验结果来验证其有效性。我们将本编码方法应用到iscas89标准电路中,与其它文献中方法一样,我们也采用mintestatpg预先计算的测试集。

比较直接压缩原始测试集的结果,如表3所示。表3第1列为电路名称,第2列为原始测试数据长度,第3-7列分别对应golomb码、fdr码、交替连续长度码、混合定变长码、bm码的压缩率,第8列为本文编码方法压缩结果。

设原始数据长度为td,压缩后的数据长度为te,则压缩率=(td-te)/td*100。从表3可以看出本文编码方法压缩率平均值为所列各种方法中最好的,说明本方法压缩效果比较稳定。和bm码相比较,本方法能取得的压缩效率优势不明显,但本方法所需要的解码器硬件开销要小得多。本方法的硬件开销比其它各种几种方法更小,但压缩效率更好。

表3各种方法压缩效果比较

需要说明的是,本领域技术人员可依据本发明所提供的压缩方法自行设计多种解压缩方法,本发明的具体实施方式包括但不局限于上述实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明作出各种相应的改变和变形,但仍然落入本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1