[0028] 下面对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
[0029] 本发明提供了一种二分区间的数据压缩方法,将若干个测试向量甚至整个测试集映射到区间(0,1),再通过多次二分区间的方法找到该位置,存储该二分区间的规律即可存储该若干个测试向量甚至整个测试集。
[0030] 具体步骤为:
[0031] 步骤1:统计原始测试数据的游程长度Y1、Y2、……,Yn,其中,Yn表示为第n个测试向量的游程长度,n为正整数,将该测试向量按0类型游程统计游程长度,直到无关位结束,若无关位与前一游程可以组成同一游程,舍弃最后一游程长度,只记前若干游程长度;否则记前所有游程长度。
[0032] 若无关位与前一游程可以组成同一游程,舍弃最后一游程长度,只记前若干游程长度;否则记前所有游程长度。以0000100110XXX为例,前三个游程是确定的,是4、2、0,后面一个游程可以3,即最后4位是0001;如对于0000100101XXX,前3个游程分别是4、2和1,后面的无关位不能直接与前一游程拼成同一游程,此时只记前3个游程。此过程主要是将无关位尽可能的往前一游程填充。
[0033] 不失一般性,设原始测试数据为:00000001000100001000100000001000001,则游程长度分别为7、3、4、3、7和5;
[0034] 步骤2:转化成小数,默认小数的整数部分为0,步骤1所统计的游程长度依次组成小数部分,转化的小数为0.Y1Y2……Yn,0.Y1Y2……Yn属于区间(0,1),如步骤1所统计的游程长度依次为7、3、4、3、7和5,转化后的小数为0.734375,记为t,有t∈(0,1);t是代表了转化后的小数;
[0035] 步骤3:初始化区间和原始编码,记t0=0,t1=1,原始编码为空;t0是代表了初始化区间转化后的小数,t1代表了原始编码转化后的小数;
[0036] 步骤4:二分区间,令 t′代表了t0、t1之和的一半,比较t′与t大小并编码,规则为:若t≤t′,编码增加1位数据0,令t1=t′;若t>t′,编码增加1位数据1,令t0=t′,重复执行该步骤直到t=t′,例如,上述步骤2中小数t=0.734375,步骤3中初始时t0=0,t1=1,原始编码为空,首先 此时t>t′,编码在原始编码为空的基础上增加
1位数据1,即此时编码为1;重复t′与t并编码有, t≤t′,此时编码结果为
10,重复该过程,最终t的编码为101110。
[0037] 从上面可以看出原始的测试数据为00000001000100001000100000001000001,压缩后的数据为101110,压缩前35位,压缩后6位。
[0038] 通过以上压缩方法,提高了测试效率,由于将若干个测试向量甚至整个测试集映射到区间(0,1),再通过多次二分区间的方法找到该位置,存储该二分区间的规律即可存储该若干个测试向量甚至整个测试集,占用空间较小,并且运算简单,非常实用。
[0039] 该二分区间的数据压缩方法可以应用在测试集成电路的测试中,其测试方法包括如下步骤:
[0040] a、根据待测试集成电路的电路结构生成包含若干故障的故障列表;
[0041] b、选择任一故障,运行自动测试向量生成工具(如:Synopsys公司的TetraMAX,开源的Atalanta,等)以此生成该故障的测试向量,同时将该故障点从故障列表中删除,最终形成级联后原始测试数据即测试向量序列S;
[0042] c、游程长度统计,统计级联后原始测试数据的游程长度Y1、Y2、……,Yn,其中,Yn表示为第n个测试向量的游程长度,n为正整数,将该测试向量按0类型游程统计游程长度,直到无关位结束。若无关位与前一游程可以组成同一游程,舍弃最后一游程长度,只记前若干游程长度;否则记前所有游程长度;
[0043] d、转化成小数,默认小数的整数部分为0,步骤c所统计的游程长度依次组成小数部分,转化的小数为0.Y1Y2……Yn,0.Y1Y2……Yn属于区间(0,1);
[0044] e、初始化区间和原始编码,记t0=0,t1=1,原始编码为空;
[0045] f、二分区间,令 比较t′与t大小并编码,规则为:若t≤t′,编码增加1位数据0,令t1=t′;若t>t′,编码增加1位数据1,令t0=t′,重复步骤f直到t=t′。
[0046] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。