专利摘要
专利摘要
本发明公开了一种数据压缩方法,所述方法包括:A:获取待压缩的数据对应的每一位码值,得到码值序列;B:统计所述码值序列中包含的各个游程的游程长度;C:按照预设顺序,将各个游程的游程长度排列在一起,得到待编码值m;D:计算所述待编码值m与预设数值2的商m1,并判断所述商m1是否为整数;E:若是,将编码值设为0,并返回执行所述D步骤,直至所述所述商m1的值小于2;F:若否,将当前编码设为1,将所述商m1向左取整,将所述商m1作为待编码值,并返回执行所述D步骤,直至所述所述商m1的值小于2;G:将所述编码值作为压缩后的数据。本发明实施例提供了一种数据压缩装置。应用本发明实施例,不需要额外的硬件成本。
权利要求
1.一种数据压缩方法,其特征在于,所述方法包括:
A:获取待压缩的数据对应的每一位码值,得到码值序列;
B:统计所述码值序列中包含的各个游程的游程长度;
C:按照预设顺序,将各个游程的游程长度排列在一起,得到待编码值m;
D:计算所述待编码值m与预设数值2的商m1,并判断所述商m1是否为整数;
E:若是,将编码值设为0,并返回执行所述D步骤,直至所述所述商m1的值小于2;
F:若否,将当前编码设为1,将所述商m1向左取整,将所述商m1作为待编码值,并返回执行所述D步骤,直至所述所述商m1的值小于2;
G:将所述编码值作为压缩后的数据。
2.根据权利要求1所述的一种数据压缩方法,其特征在于,所述A步骤,包括:
A1:生成待测试集成电路的电路结构对应的故障列表;
A2:针对所述故障列表中的每一故障,生成该故障的测试向量并将所述测试向量级联,得到当前故障对应的待压缩的数据;
A3:获取所述待压缩的数据对应的每一位二进制码值,得到码值序列。
3.根据权利要求1所述的一种数据压缩方法,其特征在于,所述B步骤,包括:
B1:统计所述码值序列中的每一个码值段中含有的码值的数量;
B2:并将每一个码值段中包含的码值的数量作为所述码值段的游程长度,其中,所述码值段为,所述码值序列中相同类型的码值相连形成的字符段。
4.根据权利要求3所述的一种数据压缩方法,其特征在于,所述B1步骤,包括:
基于十进制统计方法,统计所述码值序列中的每一个码值段中含有的码值的数量。
5.根据权利要求3所述的一种数据压缩方法,其特征在于,所述B1步骤,包括:
针对所述码值序列中的每一个码值段,若当前码值段中的码值的数量大于第一预设阈值,将所述当前码值段切分为至少两个子码值段,分别统计所述子码值段中码值的数量,其中,每一个子码值段中包含的码值的数量均小于第一预设阈值。
6.根据权利要求3所述的一种数据压缩方法,其特征在于,所述B1步骤,包括:
针对所述码值序列中的每一个码值段,若当前码值段中包含的码值的数量为第二预设阈值,将当前码值段对应的游程长度与当前码值段的下一个游程长度之间插入标志码。
7.一种数据压缩装置,其特征在于,所述装置包括:
获取模块,用于获取待压缩的数据对应的每一位码值,得到码值序列;
统计模块,用于统计所述码值序列中包含的各个游程的游程长度;
排列模块,用于按照预设顺序,将各个游程的游程长度排列在一起,得到待编码值m;
计算模块,用于计算所述待编码值m与预设数值2的商m1,并判断所述商m1是否为整数;
第一设置模块,用于在所述计算模块的计算结果为是的情况下,将编码值设为0,并返回执行所述D步骤,直至所述所述商m1的值小于2;
第二设置模块,用于在所述计算模块的计算结果为否的情况下,将当前编码设为1,将所述商m1向左取整,将所述商m1作为待编码值,并返回执行所述D步骤,直至所述所述商m1的值小于2;
第三设置模块,用于将所述编码值作为压缩后的数据。
8.根据权利要求7所述的一种数据压缩装置,其特征在于,所述获取模块,还用于:
A1:生成待测试集成电路的电路结构对应的故障列表;
A2:针对所述故障列表中的每一故障,生成该故障的测试向量并将所述测试向量级联,得到当前故障对应的待压缩的数据;
A3:获取所述待压缩的数据对应的每一位二进制码值,得到码值序列。
9.根据权利要求7所述的一种数据压缩装置,其特征在于,所述统计模块,还用于:
B1:统计所述码值序列中的每一个码值段中含有的码值的数量;
B2:并将每一个码值段中包含的码值的数量作为所述码值段的游程长度,其中,所述码值段为,所述码值序列中相同类型的码值相连形成的字符段。
10.根据权利要求7所述的一种数据压缩装置,其特征在于,所述统计模块,还用于:
基于十进制统计方法,统计所述码值序列中的每一个码值段中含有的码值的数量。
说明书
技术领域
本发明涉及一种数据处理方法及装置,更具体涉及一种数据压缩方法及装置。
背景技术
微电子和半导体制造工艺的进步,使得集成电路芯片的复杂度不断提高,集成的晶体管数量大量增加,特征尺寸日益缩小,迅速增加了测试的成本和难度,然而,测试芯片的传输带宽、I/O通道数目、存储能力和所用自动测试仪的工作频率等的增长却十分有限。二者之间的矛盾导致了测试成本的上升、测试时间的增加,这是目前集成电路设计制造中存在的主要问题。
经过实践,设法减少测试数据量可以有效的解决电路设计中的这些主要问题。目前降低测试数据量的研究方法可以通过对测试数据进行压缩,压缩方法通常采用无损压缩方法预先计算的测试数据,并利用片上解压器进行解压。当前比较常用的编码有很多,如Golomb编码、FDR码(false discovery rate,伪发现率码)、EFDR码(Extended FrequencyDirected Run lengt,扩展频率定向游程码)、交替连续码和混合游程码等。该技术具体流程是预先将原测试集压缩,压缩预先计算的测试集TD以得到比TD小得多的TE,并将TE存储在自动测试设备的存储器中。其使用片上解码器进行解码,在测试应用时片上解码器解码TE而得到TD,数据通过片上解码电路还原成原始测试向量再加载至被测电路。可见该方法把一部分测试资源从测试设备转移到芯片中,无需了解被测设计的内部电路结构,也不需要进行故障模拟或测试产生,非常适用于嵌入有IP核电路的测试数据压缩,同时很好的保护了知识产权。
但是,现有技术中的数据压缩方法在解码器较复杂时,会增加额外的硬件成本。
发明内容
本发明所要解决的技术问题在于提供了一种数据压缩方法及装置,以解决现有技术中增加额外的硬件成本的技术问题。
本发明是通过以下技术方案解决上述技术问题的:
本发明实施例提供了一种数据压缩方法,所述方法包括:
A:获取待压缩的数据对应的每一位码值,得到码值序列;
B:统计所述码值序列中包含的各个游程的游程长度;
C:按照预设顺序,将各个游程的游程长度排列在一起,得到待编码值m;
D:计算所述待编码值m与预设数值2的商m1,并判断所述商m1是否为整数;
E:若是,将编码值设为0,并返回执行所述D步骤,直至所述所述商m1的值小于2;
F:若否,将当前编码设为1,将所述商m1向左取整,将所述商m1作为待编码值,并返回执行所述D步骤,直至所述所述商m1的值小于2;
G:将所述编码值作为压缩后的数据。
可选的,所述A步骤,包括:
A1:生成待测试集成电路的电路结构对应的故障列表;
A2:针对所述故障列表中的每一故障,生成该故障的测试向量并将所述测试向量级联,得到当前故障对应的待压缩的数据;
A3:获取所述待压缩的数据对应的每一位二进制码值,得到码值序列。
可选的,所述B步骤,包括:
B1:统计所述码值序列中的每一个码值段中含有的码值的数量;
B2:并将每一个码值段中包含的码值的数量作为所述码值段的游程长度,其中,所述码值段为,所述码值序列中相同类型的码值相连形成的字符段。
可选的,所述B1步骤,包括:
基于十进制统计方法,统计所述码值序列中的每一个码值段中含有的码值的数量。
可选的,所述B1步骤,包括:
针对所述码值序列中的每一个码值段,若当前码值段中的码值的数量大于第一预设阈值,将所述当前码值段切分为至少两个子码值段,分别统计所述子码值段中码值的数量,其中,每一个子码值段中包含的码值的数量均小于第一预设阈值。
可选的,所述B1步骤,包括:
针对所述码值序列中的每一个码值段,若当前码值段中包含的码值的数量为第二预设阈值,将当前码值段对应的游程长度与当前码值段的下一个游程长度之间插入标志码。
本发明实施例提供了一种数据压缩装置,所述装置包括:
获取模块,用于获取待压缩的数据对应的每一位码值,得到码值序列;
统计模块,用于统计所述码值序列中包含的各个游程的游程长度;
排列模块,用于按照预设顺序,将各个游程的游程长度排列在一起,得到待编码值m;
计算模块,用于计算所述待编码值m与预设数值2的商m1,并判断所述商m1是否为整数;
第一设置模块,用于在所述计算模块的计算结果为是的情况下,将编码值设为0,并返回执行所述D步骤,直至所述所述商m1的值小于2;
第二设置模块,用于在所述计算模块的计算结果为否的情况下,将当前编码设为1,将所述商m1向左取整,将所述商m1作为待编码值,并返回执行所述D步骤,直至所述所述商m1的值小于2;
第三设置模块,用于将所述编码值作为压缩后的数据。
可选的,所述获取模块,还用于:
A1:生成待测试集成电路的电路结构对应的故障列表;
A2:针对所述故障列表中的每一故障,生成该故障的测试向量并将所述测试向量级联,得到当前故障对应的待压缩的数据;
A3:获取所述待压缩的数据对应的每一位二进制码值,得到码值序列。
可选的,所述统计模块,还用于:
B1:统计所述码值序列中的每一个码值段中含有的码值的数量;
B2:并将每一个码值段中包含的码值的数量作为所述码值段的游程长度,其中,所述码值段为,所述码值序列中相同类型的码值相连形成的字符段。
可选的,所述统计模块,还用于:
基于十进制统计方法,统计所述码值序列中的每一个码值段中含有的码值的数量。
可选的,所述统计模块,还用于:
针对所述码值序列中的每一个码值段,若当前码值段中的码值的数量大于第一预设阈值,将所述当前码值段切分为至少两个子码值段,分别统计所述子码值段中码值的数量,其中,每一个子码值段中包含的码值的数量均小于第一预设阈值。
可选的,所述统计模块,还用于:
针对所述码值序列中的每一个码值段,若当前码值段中包含的码值的数量为第二预设阈值,将当前码值段对应的游程长度与当前码值段的下一个游程长度之间插入标志码。
本发明相比现有技术具有以下优点:
应用本发明实施例,通过将待编码值m与预设数值2的商m1对应的是否为整数的特征值作为压缩后的码值,可以将压缩后的码值的数据量减少至压缩前的1/2,进而实现了数据的压缩,由于本发明实施例方法相对于现有技术更加简单,进而在进行数据解压时候,不需要额外的硬件成本。
附图说明
图1为本发明实施例提供的一种数据压缩方法的流程示意图;
图2为本发明实施例提供的一种数据压缩装置的结构示意图。
具体实施方式
下面对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
为解决现有技术问题,本发明实施例提供了一种数据压缩方法及装置,下面首先就本发明实施例提供的一种数据压缩方法进行介绍。
图1为本发明实施例提供的一种数据压缩方法的流程示意图,如图1所示,所述方法包括:
S101:获取待压缩的数据对应的每一位码值,得到码值序列;
具体的,S101步骤可以包括:A1:生成待测试集成电路的电路结构对应的故障列表;A2:针对所述故障列表中的每一故障,生成该故障的测试向量并将所述测试向量级联,得到当前故障对应的待压缩的数据;A3:获取所述待压缩的数据对应的每一位二进制码值,得到码值序列。
示例性的,待测试集成电路的电路结构对应的故障列表中包含有故障-1、故障-2、故障-3、故障-4;针对故障-1,利用自动测试向量生成工具生成与故障-1对应的测试向量,同时将该故障从故障列表中删除,以避免重复生成测试向量;然后针对故障-2执行以上操作,依此类推,进而得到与故障列表中故障-1对应的测试向量S-1、故障-2对应的测试向量S-2、故障-3对应的测试向量S-3、故障-4对应的测试向量S-4。
将得到的各个测试向量级联后得到待压缩的数据,也就是测试向量序列S。
在实际应用中,可以按照故障在故障列表中的顺序对各个测试向量进行级联,以避免顺序发生变化带来的额外的编码开销和错误。
然后获取测试向量序列S的每一位编码位对应的二进制码值,例如,测试向量序列S中含有34个编码位,其二进制码值序列为:
0000000 11111111 000 1111111 00000。
S102:统计所述码值序列中包含的各个游程的游程长度;
具体的,S102步骤可以包括:B1:统计所述码值序列中的每一个码值段中含有的码值的数量;B2:并将每一个码值段中包含的码值的数量作为所述码值段的游程长度,其中,所述码值段为,所述码值序列中相同类型的码值相连形成的字符段。
具体的,可以针对所述码值序列中的每一个码值段,若当前码值段中的码值的数量大于第一预设阈值,将所述当前码值段切分为至少两个子码值段,分别统计所述子码值段中码值的数量,其中,每一个子码值段中包含的码值的数量均小于第一预设阈值。
具体的,可以针对所述码值序列中的每一个码值段,若当前码值段中包含的码值的数量为第二预设阈值,将当前码值段对应的游程长度与当前码值段的下一个游程长度之间插入标志码。
示例性的,对S101步骤中的二进制码值序列进行游程长度统计。按照二进制码值序列中含有的0和1进行游程长度统计,其中游程长度统计过程是基于十进制的统计方法进行游程长度统计的。
按照从左到右的顺序,二进制码值序列包含了5个码值段,分别为7个0码值的码值段、8个1码值的码值段、3个0码值的码值段、7个1码值的码值段和5个0码值的码值段。则S101步骤中的二进制码值序列包含的各个码值的数量分别为:7、8、3、7和5。
在实际应用中,以基于十进制进行游程长度统计为例,当连续的1码值或者0码值的数量超过9时,将该段码值切分成多段码值数量小于9的码值段,如,码值段为:
111111111111111,该码值段中包含了15个码值,将该码值段切按照顺序分成2个码值段,前一段为7个码值,后一段为8个码值;也可以切分成三段,一般会切分成尽量少的码值段。
另外,当前一个码值段中的码值的数量达到了9个时,在该码值段中的码值的数量后面插入o,例如,码值序列为:
1111111110000,前一码值段中有9个1码值,后一码值段中有4个0码值;又称统计结果为94,通常会在9和4之间插入标志码0,以1区分码值段的交替情况。
可以理解的是,在进行游程长度统计时,还可以采用16进制进行游程长度统计,本发明实施例在此并不对进行游程长度统计时所采用的进制进行限定。
S103:按照预设顺序,将各个游程的游程长度排列在一起,得到待编码值m;
示例性的,将各个码值段的游程长度,也就是各个码值段中含有的码值的数量排列在一起,得到的待编码值为78375,记为m。
需要说明的是,可以按照码值段的先后顺序将各个游程长度排列在一起,得到待编码值。
S104:计算所述待编码值m与预设数值2的商m1,并判断所述商m1是否为整数;若是,执行S105步骤;若否,执行S106步骤;
示例性的,将S103步骤中得到的待编码值除以2,得到的商m1为39367.5;判断m1不为整数,执行S106步骤。
另外,还可以设置用于存储编码后的结果的编码结果序列m0。在编码前,m0中的内容为空。
S105:将编码值设为0,并返回执行所述S104步骤,直至所述所述商m1的值小于2;
示例性的,如果m1的值为整数,将m0中的与该次编码对应设置的值设为0;并返回执行S104步骤,直至m1的值小于2。
S106:将当前编码设为1,将所述商m1向左取整,将所述商m1作为待编码值,并返回执行所述S104步骤,直至所述所述商m1的值小于2;
示例性的,m1的值不为整数,将m0中的与该次编码对应设置的值设为1即m1对应该次编码的第一位的码值为1;然后将m1向左取整得到39367。
然后返回执行S104步骤,将39367除以2得到19683.5,得到第二位的码值为1,向左取整得到19683。
然后返回执行S104步骤,将19683除以2得到9841.5,得到第三位的码值为1,向左取整得到9841。
然后返回执行S104步骤,将9841除以2得到4920.5,得到第四位的码值为1,向左取整得到4920。
然后返回执行S104步骤,将4920除以2得到2460,得到第五位的码值为0。
然后返回执行S104步骤,将2460除以2得到1230,得到第六位的码值为0。
然后返回执行S104步骤,将1230除以2得到615,得到第七位的码值为0。
然后返回执行S104步骤,将615除以2得到307.5,得到第八位的码值为1,向左取整得到307。
然后返回执行S104步骤,将307除以2得到153.5,得到第九位的码值为1,向左取整得到153。
然后返回执行S104步骤,将153除以2得到76.5,得到第十位的码值为1,向左取整得到76。
然后返回执行S104步骤,将76除以2得到38,得到第十一位的码值为0。
然后返回执行S104步骤,将38除以2得到19,得到第十二位的码值为0。
然后返回执行S104步骤,将19除以2得到9.5,得到第十三位的码值为1,向左取整得到9。
然后返回执行S104步骤,将9除以2得到4.5,得到第十四位的码值为1,向左取整得到4。
然后返回执行S104步骤,将4除以2得到2,得到第十五位的码值为0。
然后返回执行S104步骤,将2除以2得到1,得到第十六位的码值为0。
然后返回执行S104步骤,将1除以2得到0.5,得到第十七位的码值为1。
S107:将所述编码值作为压缩后的数据。
示例性的,S106步骤中得到的压缩后的数据的码值序列为:
11110001110011001。
待压缩数据压缩前的码值序列长度为34位,压缩后的码值序列的长度为17位,为压缩前的1/2。
应用本发明图1所示实施例,通过将待编码值m与预设数值2的商m1对应的是否为整数的特征值作为压缩后的码值,可以将压缩后的码值的数据量减少至压缩前的1/2,进而实现了数据的压缩,由于本发明实施例方法相对于现有技术更加简单,进而在进行数据解压时候,不需要额外的硬件成本。
与本发明图1所示实施例相对应,本发明实施例还提供了一种数据压缩装置。
图2为本发明实施例提供的一种数据压缩装置的结构示意图,如图2所示,所述装置包括:
获取模块201,用于获取待压缩的数据对应的每一位码值,得到码值序列;
统计模块202,用于统计所述码值序列中包含的各个游程的游程长度;
排列模块203,用于按照预设顺序,将各个游程的游程长度排列在一起,得到待编码值m;
计算模块204,用于计算所述待编码值m与预设数值2的商m1,并判断所述商m1是否为整数;
第一设置模块205,用于在所述计算模块204的计算结果为是的情况下,将编码值设为0,并返回执行所述D步骤,直至所述所述商m1的值小于2;
第二设置模块206,用于在所述计算模块的计算结果204为否的情况下,将当前编码设为1,将所述商m1向左取整,将所述商m1作为待编码值,并返回执行所述D步骤,直至所述所述商m1的值小于2;
第三设置模块207,用于将所述编码值作为压缩后的数据。
应用本发明图2所示实施例,通过将待编码值m与预设数值2的商m1对应的是否为整数的特征值作为压缩后的码值,可以将压缩后的码值的数据量减少至压缩前的1/2,进而实现了数据的压缩,由于本发明实施例方法相对于现有技术更加简单,进而在进行数据解压时候,不需要额外的硬件成本。
在本发明实施例的一种具体实施方式中,所述获取模块201,还用于:
A1:生成待测试集成电路的电路结构对应的故障列表;
A2:针对所述故障列表中的每一故障,生成该故障的测试向量并将所述测试向量级联,得到当前故障对应的待压缩的数据;
A3:获取所述待压缩的数据对应的每一位二进制码值,得到码值序列。
在本发明实施例的一种具体实施方式中,所述统计模块202,还用于:
B1:统计所述码值序列中的每一个码值段中含有的码值的数量;
B2:并将每一个码值段中包含的码值的数量作为所述码值段的游程长度,其中,所述码值段为,所述码值序列中相同类型的码值相连形成的字符段。
在本发明实施例的一种具体实施方式中,所述统计模块202,还用于:
基于十进制统计方法,统计所述码值序列中的每一个码值段中含有的码值的数量。
在本发明实施例的一种具体实施方式中,所述统计模块202,还用于:
针对所述码值序列中的每一个码值段,若当前码值段中的码值的数量大于第一预设阈值,将所述当前码值段切分为至少两个子码值段,分别统计所述子码值段中码值的数量,其中,每一个子码值段中包含的码值的数量均小于第一预设阈值。
在本发明实施例的一种具体实施方式中,所述统计模块202,还用于:
针对所述码值序列中的每一个码值段,若当前码值段中包含的码值的数量为第二预设阈值,将当前码值段对应的游程长度与当前码值段的下一个游程长度之间插入标志码。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
一种数据压缩方法及装置专利购买费用说明
Q:办理专利转让的流程及所需资料
A:专利权人变更需要办理著录项目变更手续,有代理机构的,变更手续应当由代理机构办理。
1:专利变更应当使用专利局统一制作的“著录项目变更申报书”提出。
2:按规定缴纳著录项目变更手续费。
3:同时提交相关证明文件原件。
4:专利权转移的,变更后的专利权人委托新专利代理机构的,应当提交变更后的全体专利申请人签字或者盖章的委托书。
Q:专利著录项目变更费用如何缴交
A:(1)直接到国家知识产权局受理大厅收费窗口缴纳,(2)通过代办处缴纳,(3)通过邮局或者银行汇款,更多缴纳方式
Q:专利转让变更,多久能出结果
A:著录项目变更请求书递交后,一般1-2个月左右就会收到通知,国家知识产权局会下达《转让手续合格通知书》。
动态评分
0.0