自适应游程编码的测试数据压缩及解压方法与流程

文档序号:30383378发布日期:2022-06-11 05:29阅读:169来源:国知局
自适应游程编码的测试数据压缩及解压方法与流程

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


背景技术:

2.测试是计算机信息领域必不可少的流程,集成电路芯片也不例外。测试在集成电路芯片生产过程中的地位越来越高,测试时间过长会提高测试成本,因此如何减少测试时间,降低测试成本是芯片行业从业者和科研人员都十分关注的问题。
3.随着集成电路的发展,芯片的集成度越来越高,这大大增加了测试难度和测试成本。为了减少测试成本,采用编码的方式来无损压缩测试数据是一种常见的手段,常见的编码压缩方法有golomb,哈夫曼编码,fdr,efdr,afdr,交替和连续长度编码,variable-tail编码,9值码,变游程编码,混合定变长码,双游程交替编码,混合编码方案等。以上方法大多采用固定的编码来一一对应不同的游程长度,只考虑单个游程长度如何编码,没有分析游程长度之间的关系。从fdr编码、efdr编码、变游程编码等方法的编码表中可以看出,表中编码的长度是随着游程长度增加而呈阶梯式上升趋势,游程长度越长,编码长度越长。因此是否能够通过一个特殊编码代替多个具有一定规律的游程长度,从而提高压缩率。


技术实现要素:

4.本发明所要解决的技术问题在于提供一种自适应游程编码的测试数据压缩及解压方法,能提高压缩效率,降低测试成本。
5.为解决上述技术问题,本发明的自适应游程编码的测试数据压缩及解压方法,包括:a.压缩步骤:(a1)构建训练用编码表:(1.1)所述训练用编码表包含以下字段:组号:以一个十进制数k表示;游程长度:以一个十进制数l表示;0游程前缀:以一组由若干个0和1个1组成的二进制代码表示;1游程前缀:以一组由若干个1和1个0组成的二进制代码表示;后缀:以一组二进制代码表示;0游程码字:以一组二进制代码表示;所述0游程码字由0游程前缀和后缀连续排列而成;1游程码字:以一组二进制代码表示;所述1游程码字由1游程前缀和后缀连续排列而成;所述训练用编码表中的记录按照游程长度l递增排列,并编组,组号k升序排列,游程长度最小为1,组号最小为1;(1.2)在所述码表中,第k组包含2k条记录,第k组0游程前缀由k个0和一个1组成,
第k组1游程前缀由k个1和一个0组成,第k组后缀由最小的k位二进制数至最大的k位二进制数依次排序;(a2)对原始测试数据进行预处理,填充无关位,得到双游程序列;(a3)通过步骤(a2)所得双游程序列,获得对应游程长度序列,依次用后一个游程长度减去前一个游程长度得到一个差值序列,找出差值序列中出现频率最高的差值m,将差值m设为最优值;(a4)构建压缩用编码表将训练用编码表中每条记录的游程长度全部减1,其余部分保持不变,获得压缩用编码表;(a5)对步骤(a2)所得数据按位进行读取,得到第一个游程,记录其游程类型、游程长度;查压缩用编码表得到一个码字并加入压缩后数据队列;(a6)继续读取数据得到当前游程,若当前游程与前一游程的长度差值为m,则根据当前游程类型得到特殊码字并加入压缩后数据队列;若当前游程与前一游程的长度差值不为m,则根据当前游程长度、游程类型查压缩用编码表得到码字并加入压缩后数据队列;若当前游程长度减去前一游程长度差值为m,且当前游程为0游程,则当前游程记为特殊码字010;若当前游程长度减去前一游程长度差值为m,且当前游程为1游程,则当前游程记为特殊码字100;(a7)重复步骤(a6),直到所有游程编码完成,编码后的数据即为压缩后的数据。
6.本发明的自适应游程编码的测试数据压缩及解压方法,还包括:b.解压步骤:(b1)按位读取待解压数据,直至得到一个0游程或1游程,所得游程即为前缀,记录游程类型和前缀长度,按所记录的前缀长度计算后缀长度并读取相应位数的数据为后缀;(b2)判定步骤(b1)所得后缀是否为特殊码字的后缀;若否,则在步骤(b1)所得后缀的高位添加一个1,得到一个新的二进制数,将其转换为十进制数,再减去2,得到当前游程长度,步骤(b1)所得游程类型为当前游程类型,依据当前游程类型、当前游程长度还原出一个游程作为解压后游程,记录其长度为lx;若是,则,当前解压后游程长度依据前一个解压后游程的长度和差值m确定,具体当前游程长度=前一游程长度lx+m;当前解压后游程类型与步骤(b1)所得游程类型相同;依据所得游程类型、游程长度还原出一组游程作为解压后游程;将所得解压后游程加入解压数据;(b3)重复步骤(b1)(b2)直至解压缩完成,得到完整的解压数据用于芯片测试。
7.作为实现方式之一,所述解压步骤的程序实现方法包括:(c1)配置解码器,解码器包括一个有限状态机(fsm)、一个k+1位计数器、一个log2(k+1)位计数器、1个m位寄存器和一个异或门;(c2)解压流程:a)令en=1,fsm接收bit_in的数据。inc2置为高电平。bit_in的首位发送给flag,log2(k+1)位计数器加1,此时v为低电平,输出无效;b)fsm继续从bit_in接收数据,inc2为高电平,每传入一位log2(k+1)位计数器加
1,同时与flag值同或,当bit_in与 flag同或值为0时,前缀输入结束;c)将后缀部分从counter_in移入k+1位计数器,shift和dec2置为高电平,即每移入一位数据,log2(k+1)位计数器减1,直到log2(k+1)位计数器为空,rs2为1,后缀输入结束;d)若此时k+1位计数器中的值为10(二进制),v置为低电平,输出无效,c置为高电平,控制m位寄存器输入输出,再根据差值m的值,fsm向m位寄存器移入/移出m个0,再执行步骤(f);e)m位寄存器重置,fsm通过d输出0到m位寄存器。dec1置为高电平,k+1位计数器每次减1,输出一个0,直到k+1位计数器值为2,rs1为1。最后输出一个1;f)将v置为高电平,表示输出有效,将m位寄存器的数据依次与flag进行异或的结果输出;g)重复步骤a)至f),直到解压完毕。
8.本方法的技术优点体现在:(1)对测试数据的无关位进行填充后,将较长的0游程或1游程编码为较短的码字,实现第一级压缩功能;码字具备可还原性,解压后不影响芯片测试。(2)填充后的测试数据相邻游程长度差值为出现次数最多的差值m时,使用较短的特殊编码代替较长的码字,差值m根据测试数据确定,在实际应用时更加灵活,可以进一步提高压缩效率。(3)相邻游程长度差值为m时不论游程类型是否相同均可使用特殊码字,其使用频次高,进一步提高了压缩效果。使用本方法,由于数据压缩效率提高,能明显降低芯片测试成本。
附图说明
9.图1 是本发明中压缩步骤所涉及的编码流程图;图2 是本发明中解压步骤所涉及的解码电路图。
具体实施方式
10.以下结合附图对本发明的具体实施方式做进一步说明。
11.本发明的自适应游程编码测试数据压缩及解压方法具体包括:a.压缩步骤:(a1)构建训练用编码表:(1.1)所述训练用编码表包含以下字段:组号:以一个十进制数k表示;游程长度:以一个十进制数l表示;0游程前缀:以一组由若干个0和1个1组成的二进制代码表示;1游程前缀:以一组由若干个1和1个0组成的二进制代码表示;后缀:以一组二进制代码表示;0游程码字:以一组二进制代码表示;所述0游程码字由0游程前缀和后缀连续排列而成;1游程码字:以一组二进制代码表示;所述1游程码字由1游程前缀和后缀连续排列而成;所述训练用编码表中的记录按照游程长度l递增排列,并编组,组号k升序排列,游
程长度最小为1,组号最小为1;(1.2)在所述码表中,第k组包含2k条记录,第k组0游程前缀由k个0和一个1组成,第k组1游程前缀由k个1和一个0组成,第k组后缀由最小的k位二进制数至最大的k位二进制数依次排序;此时得到表1——训练用编码表:表1 训练用编码表定义与说明:(1.3)游程包括0游程和1游程;0游程指由若干个连续的0加上1个1组成的二进制代码,1是0游程结束标志,其游程长度l指0的个数;1游程指由若干个连续的1加上1个0组成的二进制代码,0是1游程结束标志,其游程长度l指1的个数;(a2)对原始测试数据进行预处理,填充无关位,得到双游程序列;(a3)通过步骤(a2)所得双游程序列,获得对应游程长度序列,依次用后一个游程长度减去前一个游程长度得到一个差值序列,找出差值序列中出现频率最高的差值m,将差值m设为最优值;步骤(a3)中,所述获得对应游程长度序列是指,依次读取步骤(a2)所得双游程序列,每读取完一个游程,记录该游程长度,并加入序列。
12.(a4)构建压缩用编码表将训练用编码表中每条记录的游程长度全部减1,其余部分保持不变,获得表2——压缩用编码表。
13.表2 压缩用编码表
根据本压缩用编码表,待压缩数据中每一个长度不同的0游程都能唯一对应一个0游程码字,待压缩数据中每一个长度不同的1游程都能唯一对应一个1游程码字;本压缩用编码表中,游程长度等于2的k次方减2加转化为十进制的后缀。依据该公式,010和100两个码字对应的游程长度均为0,但测试数据中不可能出现此种游程长度为0的情况。故将010和100两个码字作为特殊码字并在压缩、解压缩过程中使用。
14.(a5)对步骤(a2)所得数据按位进行读取,得到第一个游程,记录其游程类型、游程长度;查表2得到码字,并加入压缩后数据队列;(a6)继续读取数据得到当前游程,若当前游程与前一游程的长度差值为m,则根据当前游程类型得到特殊码字并加入压缩后数据队列;若当前游程与前一游程的长度差值不为m,则根据当前游程长度、游程类型查表2得到码字并加入压缩后数据队列;特殊码字的使用规则:若当前游程长度减去前一游程长度差值为m,且当前游程为0游程,则当前游程记为010;若当前游程长度减去前一游程长度差值为m,且当前游程为1游程,则当前游程记为100;(a7)重复步骤(a6),直到所有游程编码完成,编码后的数据即为压缩后的数据。
15.依据以上规则,本领域技术人员可以通过多种途径实现数据压缩。参见图1,以下示出步骤(a5)到步骤(a7)的程序实现方法之一:(a5)对步骤(a2)所得数据按位进行读取,每读取到一个游程,记录其类型至游程类型队列t[i]、记录其长度至游程长度队列l[i],游程总数量记为n,通过步骤(a3)得到差值m;定义循环参数i=0,定义压缩后数据队列ans;
根据t[i]、l[i]查表2得到首个游程的码字,并加入压缩后数据队列ans;(a6)i=i+1;若l[i]-l[i-1]==m且t[i]==0,则得到码字010;若l[i]-l[i-1]==m且t[i]==1,则得到码字100;若l[i]-l[i-1]《》m,则查表2得到码字;本步骤所得码字继续加入压缩后数据队列ans;(a7)重复步骤(a6)直至i=n-1。
[0016]
下面通过两个实例来说明本编码方法:实例1、设按照步骤(a2)预处理后的测试数据为d
1 = 11111110 000000001 111110 000001 1111110 11111110 (44 bits) ,游程类型队列为{1,0,1,0,1,1},游程长度队列为{7,8,5,5,6,7},游程长度差值序列为{7,1,-3,0,1,1},差值1出现3次,所以m = 1。
[0017]
第一个游程为11111110,游程类型为1游程,游程长度为7,查表2得到编码为1110001;第二个游程为000000001,游程长度为8,与前一游程长度差值为1,等于m,0游程,因此编码为010;第三个游程为111110,游程长度为5,与前一个游程长度差值不为m,类型为1游程,查表2得到编码为11011;第四个游程为000001,游程长度为5,与前一游程长度差值不为m,类型为0游程,因此查表2得到编码为00111;第五个游程为1111110,游程长度为6,与前一游程长度差值为1,等于m,1游程,因此编码为100;第六个游程为11111110,游程长度为7,与前一游程长度差值为1,等于m,1游程,因此编码为100;最终编码完成得到d
e1 = 1110001 010 11011 00111 100 100 (26 bits),比d1减少了18bits。
[0018]
实例2、设按照步骤(a2)预处理后的测试数据为d
2 = 1110 000000001 00000000000001 000001 11111111110 (44 bits) ,游程类型队列为{1,0,0,0,1},游程长度队列为{3,8,13,5,10},游程长度差值序列为{3,5,5,-8,5},差值5出现3次,所以m = 5。
[0019]
第一个游程为1110,类型为1游程,长度为3,按表2编码为11001;第二个游程为000000001,长度为8,与前一游程长度差值为5,等于m,0游程,因此编码为010;第三个游程为00000000000001,长度为13,与前一个游程长度差值为5,等于m,类型为0游程,因此编码为010;第四个游程为000001,长度为5,与前一游程长度差值不为m,类型为0游程,因此查表2得到编码为00111;第五个游程为11111111110,长度为10,与前一游程长度差值为5,等于m,1游程,因此编码为100;最终编码完成得到d
e2 = 11001 010 010 00111 100 (19 bits),比d2减少了
25bits。
[0020]
特殊情况处理:当原始数据划分游程到末尾时,可能出现不能构成游程的情况,例如,剩下未划分的数据仅包含1或仅包含0。若原始数据的末尾不能构成游程,则向其末尾添加1位二进制数0或1作为游程结束标识。例如最后未划分数据是11,则在其后添加1位0,变成110;例如未划分数据是00,则添加1位1,得到001。经过处理后,本发明能够连续工作完成压缩编码。在后续的解码步骤,能够解码得到原始的结尾数据以及附加的游程结束标志,而在芯片测试中,对测试数据长度是有要求的,因此在读取测试数据时,最后附加的游程结束标志不会被读入,因此不影响测试结果。
[0021]
b.解压步骤:根据前述方法和表2可知,步骤(a7)所得压缩后数据队列由若干组0游程码字、1游程码字组成;每一组码字都包括前缀和后缀,且其前缀是0游程或1游程,故前缀可读可判别,在前缀读取完成后,按其位数减一可继续读取后缀;依据前缀、后缀可知压缩前的游程长度和类型,即可根据前缀、后缀解压缩还原;010、100两个特殊码字不会出现在压缩数据头部,故在读取到特殊码字时,依据特殊码字和前一游程长度,可还原对应的原始数据。具体步骤如下:(b1)按位读取待解压数据,直至得到一个0游程或1游程,所得游程即为前缀,记录游程类型和前缀长度,按所记录的前缀长度计算后缀长度并读取相应位数的数据为后缀,所述后缀长度=前缀长度-1;(b2)判定步骤(b1)所得后缀是否为特殊码字的后缀;本发明中,有两个特殊码字“010”、“100”,其后缀均为“0”,依据步骤(b1),特殊码字及其前缀、后缀均可读取可判断。
[0022]
若否,则在步骤(b1)所得后缀的高位添加一个1,得到一个新的二进制数,将其转换为十进制数,再减去2,得到当前游程长度,步骤(b1)所得游程类型为当前游程类型,依据当前游程类型、当前游程长度还原出一个游程作为解压后游程,记录其长度为lx;需要说明的是,本步骤所得解压后游程不等同于码表中的前缀、后缀或码字,其虽然也体现为游程形式,但在码表中仅记录了其类型和十进制长度。
[0023]
若是,则,当前解压后游程长度依据前一个解压后游程的长度和差值m确定,具体当前游程长度=前一游程长度lx+m;当前解压后游程类型与步骤(b1)所得游程类型相同;依据所得游程类型、游程长度还原出一组游程作为解压后游程;具体而言,当后缀是0时,若游程类型为0,则还原一个0游程;若游程类型为1,则还原一个1游程;将所得解压后游程加入解压数据;(b3)重复步骤(b1)(b2)直至解压缩完成,得到完整的解压数据用于芯片测试。
[0024]
程序实现方法如下:当读到待解码的二进制数时,可以获得当前待解码游程的游程类型和前缀结束标志,然后根据前缀的结束标志,可以获得当前待解码游程的后缀长度,因此可以获得游程码字的后缀,此时可以求出当前游程长度lx,具体而言:在后缀二进制数的高位添加一个1,获得新的二进制数,转换为十进制数,当前游程长度lx等于该十进制数新的二进制数减2。最后将该游程存入m位寄存器中。当读到后缀为“0”时,直接从m位寄存器中读取游程然后根据游程类型和差值m输出游程。例如,m=5,对于“11001 010”, 第一个待解压游程编码为
11001,首位为1,1游程,前缀为110,后缀为01,在后缀高位添加1,得到101,(101)2=(5)
10
,5-2=3,游程长度为3,解压后该游程为1110,下一个待解压游程编码为010,后缀为“0”,为特殊码字后缀,依据前缀01知该游程为0游程,该游程长度减去前一个游程长度为m,该游程长度为8,所以解压后该游程为000000001。即,m=5的前提下,8位压缩数据“11001 010”,解压后为13位数据“1110000000001”。
[0025]
(c1)配置解码器该解压电路是一个基于有限状态机的设计,其电路规模较小不会有较大的硬件成本。解码器主要由一个有限状态机(fsm)、一个k+1位计数器、一个log2(k+1)位计数器、1个m位寄存器和一个异或门组成。该解码器结构简单,独立于被测电路和测试数据集并,解码器结构框图见图2,其中的信号名称及其对应功能描述见表3。
[0026]
表3 解码器中的信号及其对应功能信号功能bit_in测试数据输入en使能端,置为1,表示接受数据counter_infsm向k+1位计数器输入测试数据的通道shiftk+1位计数器的移入控制位dec1控制k+1位计数器减1rs1k+1位计数器复位标志位inc2控制log2(k+1)位计数器加1dec2log2(k+1)位计数器减1标志位rs2log2(k+1)位计数器复位标志位flag表示当前是哪个类型的游程dfsm向m位寄存器输入数据的通道v表示解码器输出数据是否有效c控制m位寄存器输入输出下面将结合图2介绍本方法的解码过程。
[0027]
(c2)解压流程:a)令en=1,fsm接收bit_in的数据。inc2置为高电平。bit_in的首位发送给flag,log2(k+1)位计数器加1,此时v为低电平,输出无效;b)fsm继续从bit_in接收数据,inc2为高电平,每传入一位log2(k+1)位计数器加1,同时与flag值同或,当bit_in与 flag同或值为0时,前缀输入结束;c)将后缀部分从counter_in移入k+1位计数器,shift和dec2置为高电平,即每移入一位数据,log2(k+1)位计数器减1,直到log2(k+1)位计数器为空,rs2为1,后缀输入结束;d)若此时k+1位计数器中的值为10(二进制),v置为低电平,输出无效,c置为高电平,控制m位寄存器输入输出,再根据差值m的值,fsm向m位寄存器移入/移出m个0,再执行步骤(f);e)m位寄存器重置,fsm通过d输出0到m位寄存器。dec1置为高电平,k+1位计数器每次减1,输出一个0,直到k+1位计数器值为2,rs1为1。最后输出一个1;f)将v置为高电平,表示输出有效,将m位寄存器的数据依次与flag进行异或的结
果输出;g)重复步骤a)至f),直到解压完毕。
[0028]
需要说明的是,本领域技术人员可依据本发明所提供的压缩方法自行设计多种解压缩方法,本发明的具体实施方式包括但不局限于上述实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明作出各种相应的改变和变形,但仍然落入本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1