1.一种基于连分数存储的集成电路测试数据压缩方法,包括以下步骤:
a、采用自动测试模式生成工具ATPG,生成确定的完全测试集T,所述的完全测试集T由有限个固定宽度的测试向量组成,记录该测试向量的宽度;
b、将所有测试向量级联,得到测试数据包,记为S;
c、依次按位从测试数据包S中读取数据;调用游程计算程序,得到第一个游程R1,所述的游程计算程序根据相邻确定位向无关位填充0或1,以使得第一个游程R1的长度达到最大;
记录所得游程的类型为C1、长度为L1;
d、继续从S中读取数据,调用游程计算程序,得到第二个游程R2,所述的游程计算程序根据相邻确定位向无关位填充0或1,以使得第二个游程R2的长度达到最大;记录所得游程的类型为C2、长度为L2;
e、依据步骤c所得到的第一个游程R1、步骤d所得到的第二个游程R2,调用编码程序,得到一组压缩编码,并将该压缩编码加入压缩数据包;本步骤中,所述的压缩编码依次由3部分组成:第一部分为双游程代码,第二部分为公约数代码,第三部分为连分数代码,所述编码程序包括:e1、计算双游程代码,所述双游程代码为3位二进制代码,第一位为0,第二位以0或1表示第一个游程R1的类型C1,第三位以0或1表示第二个游程R2的类型C2;
e2、计算公约数代码:首先计算L1、L2的最大公约数为gcd,然后将该十进制数gcd转换为二进制形式的公约数代码,所述公约数代码包括前缀和后缀,所述的前缀和后缀为位数相同的二进制数,其编码方法:前缀由i个1和1个0构成,其中, ;后缀为gcd+4转换成对应的二进制数后去掉最高位1的剩余部分;
e3、计算连分数代码:依据该最大公约数gcd,将L1/L2转化为最简分数,再将所得最简分数转换为一个有限简单连分数表示,所述的有限简单连分数包括由若干个正整数构成的部分商序列,记为L1/L2 = [a0/a1/a2/.../an];依次将单个十进制形式的部分商转换为二进制形式的部分商代码并级联,即得到当前第一个游程和第二个游程对应的连分数代码;
所述部分商代码包括前缀和后缀,所述的前缀和后缀为位数相同的二进制数,其编码方法:前缀由i个1和1个0构成,其中, ;后缀为an+4转换成对应的二进制数后去掉最高位1的剩余部分;
f、判定测试数据包S是否读完,如否转步骤c继续编码,如是转步骤g;
g、得到完整的压缩数据包,程序结束。
2.如权利要求1所述的基于连分数存储的集成电路测试数据压缩方法,其特征在于:所述步骤c、步骤d中的游程计算程序包括以下步骤:步骤cd-0、当前数据流清零;
步骤cd-1、从测试数据包S中按顺序逐位读入数据并加入当前数据流;记录读到的首个确定位数据为qd1;
步骤cd-2、继续从测试数据包S中按位读入数据并加入当前数据流,直至读取到一个不等于qd1的确定位,记录该第二个确定位为qd2;
步骤cd-3、将当前数据流中所有的无关位填充为qd1,将所得的以qd2结尾的数据流记录为一个游程,记录该游程的类型、长度。
3.如权利要求1所述的基于连分数存储的集成电路测试数据压缩方法,其特征在于:所述步骤c、步骤d中的游程计算程序包括以下步骤:步骤cd0、当前数据流清零;
步骤cd1、从测试数据包S中按顺序向当前数据流读入1位数据;
步骤cd2、判断所读入的当前数据是否为无关位,如是转步骤cd3;如否,转步骤cd4;
步骤cd3、判断当前数据流长度是否为1,如是,从测试数据包S中向后寻找最接近的一个确定位,并将当前无关位填充为与该最接近的一个确定位相同的数据,将填充后的数据更新至当前数据流,然后转步骤cd1;如否,将当前无关位填充为与当前数据流中前一位相同的数据,将填充后的数据更新至当前数据流,然后转步骤cd1;
步骤cd4、判定当前数据与前一位是否相同,如是,则当前数据流不能构成游程,转步骤cd1;如否,则当前数据流构成一个游程,记录该游程的类型、长度。