二分区间法的集成电路数据解压电路及方法与流程

文档序号:11731882阅读:250来源:国知局
二分区间法的集成电路数据解压电路及方法与流程

本发明涉及一种集成电路测试技术,更具体涉及一种集成电路测试中的数据存储技术。



背景技术:

随着集成电路的发展,如何处理越来越庞大的测试数据已成为集成电路测试的关键难题之一。根据itrs在2010年的报告数据,测试一个芯片,在2009年,仅仅需要85个测试模式数,也只需要压缩比为80;而到2019年,对测试模式数的要求则需要达到20370个,对压缩比的要求则需要达到12000。仅仅十年,模式数增加到240倍,压缩比增加到150倍。

关于减少测试数据量的研究,一直是研究的热点,主要可以分为三类:测试集压缩(testsetcompaction)方法、内建自测试(built-inself-test,bist)方法和静态编码压缩方法。(1)测试集压缩方法。其特点是确保在不降低故障覆盖率的情况下,有选择性尝试使用不同的敏化路径,通过算法调整测试立方体(testtubes)中无关位(don’tcarebits)的位置,或者将相容的两个或多个测试向量合并成单一测试向量的方法来减少总的测试向量的个数,以期达到测试集最小化或最优化。其优势是所有工作由软件实现,不会增加额外的硬件成本。但其缺点也非常明显,测试向量的个数的减少造成了对非模型故障的覆盖率的降低。本方法另一缺点是压缩后测试集的测试数据量仍然非常庞大,很难一次性完全直接存储在ate的存储器中。因此,需要与其它方法结合使用。(2)内建自测试方法。其在被测电路中新增一部分电路,该电路专门用于测试,能够完成测试模式生成、测试控制、测试调度和测试结果分析,这样可以不依赖外部的自动测试设备独立进行测试。能够通过减少昂贵的自动测试设备的成本费来达到节约测试成本的目的,还可以支持测试重用和全速测试。其缺点在生成测试模式时,产生了大量的对测试毫无贡献的测试模式,既增加了测试功耗,又浪费了测试时间;另外,有部分未设计bist方法的ip核也限制其应用。(3)静态编码压缩方法。其通过编码技术用一个较小的测试集te去编码测试集td,将存储和传输时对td的操作变换成对te的操作,即存储te在ate的存储器中,测试时,也仅传输te而不是td到被测芯片,最终te到td的还原由被测芯片上的解压电路来完成。静态编码方法采用的是无损压缩方法,还原后的测试集的确定位跟原始测试集的确定位完全一一对应,还原后的无关位都被程序填充成了特定的值,因此其只会增加而不会降低被测电路的故障覆盖率。该方法的另一优势是可以不需要提供被测电路的内部结构,能够很好地保护ip核的知识产权。因此,该技术在集成电路测试领域中得到了广泛应用。当前比较成熟的编码有很多,如golomb编码、fdr码、vihc码、交替连续码、variable-tail码、混合游程码、svic码、变游程码、efdr、mfvlc、mfvrcvb、afdr、共游程码和整数存储无理数的方法等。

在静态编码压缩方法中,利用整数存储无理数的方法,理论上可以将整个测试集转换成若干个整数表示的无理数存储。该方法的优势是不需要直接存储代码字,而是存储代码字的规律。其缺点是如果期望其压缩效果好,无理数所表示的测试数据量就比较大,可能是若干个测试向量,甚至是整个测试集,此时无理数对应的整数表示就比较大。一方面,该大整数在存储时占用较大的空间;另一方面,在测试数据解压过程中,大整数给数据运算带来了复杂性,有时甚至不能直接运算。



技术实现要素:

本发明所要解决的技术问题在于提供了一种针对提高测试效率、占用空间较小并且运算简单的二分区间的压缩数据进行解压的电路和解压的方法。

本发明是通过以下技术方案解决上述技术问题的:一种二分区间法的集成电路数据解压电路,包含3个寄存器a、寄存器b和寄存器c的寄存器组、1个计数器、第一三态门t1、第二三态门t2、1个加法器和1个控制器;

第一三态门t1和第二三态门t2的输入端连接,寄存器c的输出端连接到第一三态门t1和第二三态门t2的输入端。第一三态门t1的输出端连接到寄存器b的输入端,第二三态门t2的输出端连接到寄存器a的输入端,第一三态门t1和第二三态门t2的控制端连接到控制器的第一信号端c1,寄存器a和寄存器b的输出端连接到加法器,加法器的输出端连接到寄存器c,寄存器c的输出端连接到计数器,计数器的输出端作为解压电路的输出端。寄存器c的置位端和移位端分别连接到控制器的第三信号端c3和第四信号端c4,控制器的第二信号端c2作为解压电路的输入端;

控制器的第二信号端c2输入需要解压的数据,解压以后的数据从寄存器输出。

具体的,加法器采用超前进位加法器构成。

所述解压电路对数据进行解压的方法包括下述步骤:

步骤1:初始化,寄存器a和寄存器b分别置为数据“0”和“1”,寄存器a和寄存器b完成累加移位运算得到0.5,此时寄存器c的值为0.5;

步骤2:控制器的第二信号端c2自压缩数据的第一位开始依次输入压缩数据,输入压缩数据的相应位为1时,控制器c1为高电平,控制器c1控制第二三态门t2,将寄存器c的值直接传输到寄存器a,输入压缩数据的相应位为0时,控制器c1为低电平,控制器c1控制第一三态门t1,将寄存器c的值直接传输到寄存器b,重复上述加法以及移位计算,寄存器c的值更新,最终更新数值为0.y1y2……yn,0.y1y2……yn属于区间(0,1);

步骤3:将寄存器c的最终更新数值移位到计数器,统计压缩前数据的游程长度依次为y1、y2、……yn,yn表示为第n个测试向量的游程长度,n为正整数,按游程长度编码输出即可得到解压以后的数据。

所述压缩数据的压缩方法包括:

步骤21:统计原始测试数据的游程长度y1、y2、……,yn,其中,yn表示为第n个测试向量的游程长度,n为正整数,将该测试向量按0类型游程统计游程长度,直到无关位结束;

步骤22:转化成小数,默认小数的整数部分为0,步骤1所统计的游程长度依次组成小数部分,转化的小数为0.y1y2……yn,0.y1y2……yn属于区间(0,1);

步骤23:初始化区间和原始编码,记t0=0,t1=1,原始编码为空;

步骤24:二分区间,令比较t′与t大小并编码,规则为:若t≤t′,编码增加1位数据0,令t1=t′;若t>t′,编码增加1位数据1,令t0=t′,重复执行该步骤直到t=t′。

本发明还公开了一种使用上述的二分区间法的集成电路数据解压电路进行解压的方法,包括下述步骤:

步骤1:初始化,寄存器a和寄存器b分别置为数据“0”和“1”,寄存器a和寄存器b完成累加移位运算得到0.5,此时寄存器c的值为0.5;

步骤2:控制器的第二信号端c2自压缩数据的第一位开始依次输入压缩数据,输入压缩数据的相应位为1时,控制器c1为高电平,控制器c1控制第二三态门t2,将寄存器c的值直接传输到寄存器a,输入压缩数据的相应位为0时,控制器c1为低电平,控制器c1控制第一三态门t1,将寄存器c的值直接传输到寄存器b,重复上述加法以及移位计算,寄存器c的值更新,最终更新数值为0.y1y2……yn,0.y1y2……yn属于区间(0,1);

步骤3:将寄存器c的最终更新数值移位到计数器,统计压缩前数据的游程长度依次为y1、y2、……yn,yn表示为第n个测试向量的游程长度,n为正整数,按游程长度编码输出即可得到解压以后的数据。

具体的,加法器采用超前进位加法器构成。

其中,所述压缩数据的压缩方法包括:

步骤21:统计原始测试数据的游程长度y1、y2、……,yn,其中,yn表示为第n个测试向量的游程长度,n为正整数,将该测试向量按0类型游程统计游程长度,直到无关位结束;

步骤22:转化成小数,默认小数的整数部分为0,步骤1所统计的游程长度依次组成小数部分,转化的小数为0.y1y2……yn,0.y1y2……yn属于区间(0,1);

步骤23:初始化区间和原始编码,记t0=0,t1=1,原始编码为空;

步骤24:二分区间,令比较t′与t大小并编码,规则为:若t≤t′,编码增加1位数据0,令t1=t′;若t>t′,编码增加1位数据1,令t0=t′,重复执行该步骤直到t=t′。

本发明相比现有技术具有以下优点:对二分区间的压缩数据进行解压,解压方法简单,所用器件简单,提高了整个集成电路的测试效率,极大减少了数据的占用空间。

附图说明

图1是本发明的解压电路结构图;

图2是本发明实施例中产生进位链ci的电路图;

图3是本发明实施例中的解压过程图例。

具体实施方式

下面对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。

发明克服现有技术的不足,本申请人提供了一种二分区间的测试数据压缩方法,可以将若干个测试向量甚至整个测试集映射到区间(0,1),再通过多次二分区间的方法找到该位置,存储该二分区间的规律即可存储该若干个测试向量甚至整个测试集。

具体步骤为:

步骤1:统计原始测试数据的游程长度y1、y2、……,yn,其中,yn表示为第n个测试向量的游程长度,n为正整数,将该测试向量按0类型游程统计游程长度,直到无关位结束,若无关位与前一游程可以组成同一游程,舍弃最后一游程长度,只记前若干游程长度;否则记前所有游程长度。

若无关位与前一游程可以组成同一游程,舍弃最后一游程长度,只记前若干游程长度;否则记前所有游程长度。以0000100110xxx为例,前三个游程是确定的,是4、2、0,后面一个游程可以3,即最后4位是0001;如对于0000100101xxx,前3个游程分别是4、2和1,后面的无关位不能直接与前一游程拼成同一游程,此时只记前3个游程。此过程主要是将无关位尽可能的往前一游程填充。

不失一般性,设原始测试数据为:00000001000100001000100000001000001,则游程长度分别为7、3、4、3、7和5;

步骤2:转化成小数,默认小数的整数部分为0,步骤1所统计的游程长度依次组成小数部分,转化的小数为0.y1y2……yn,0.y1y2……yn属于区间(0,1),如步骤1所统计的游程长度依次为7、3、4、3、7和5,转化后的小数为0.734375,记为t,有t∈(0,1);

步骤3:初始化区间和原始编码,记t0=0,t1=1,原始编码为空;

步骤4:二分区间,令比较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。

从上面可以看出原始的测试数据为00000001000100001000100000001000001,压缩后的数据为101110,压缩前35位,压缩后6位。

通过以上压缩方法,提高了测试效率,由于将若干个测试向量甚至整个测试集映射到区间(0,1),再通过多次二分区间的方法找到该位置,存储该二分区间的规律即可存储该若干个测试向量甚至整个测试集,占用空间较小,并且运算简单,非常实用。

本发明提供一种解压上述数据的电路以及解压方法。

解压电路如图1所示,包含3个寄存器a、寄存器b和寄存器c的寄存器组、1个计数器、第一三态门t1、第二三态门t2、1个加法器和1个控制器。

第一三态门t1和第二三态门t2的输入端连接,寄存器c的输出端连接到第一三态门t1和第二三态门t2的输入端。第一三态门t1的输出端连接到寄存器b的输入端,第二三态门t2的输出端连接到寄存器a的输入端,第一三态门t1和第二三态门t2的控制端连接到控制器的第一信号端c1,寄存器a和寄存器b的输出端连接到加法器,加法器的输出端连接到寄存器c,寄存器c的输出端连接到计数器,计数器的输出端作为解压电路的输出端。寄存器c的置位端和移位端分别连接到控制器的第三信号端c3和第四信号端c4,控制器的第二信号端c2作为解压电路的输入端。

控制器的第二信号端c2输入需要解压的数据,解压以后的数据从寄存器输出。控制器的第一信号端c1控制寄存器a和寄存器b,控制器的第三信号端c3和第四信号端c4分别控制寄存器c的置位和移位。

加法器采用超前进位加法器构成,加法运算可以在一个时钟内完成。由于除以2的运算可以转化为向右移位运算完成,通过第四信号端c4控制寄存器c完成向右移位运算即可达到除以2的运算。

需要指出的是,加法器采用超前进位加法器,对于一位加法器可以用如下逻辑函数表示:

ci=pi+qici-1si=aibici(1)

其中,ai、bi为两个加数,si表示和,ci-1表示来自低位的进位,ci表示向高位的进位。pi=aibi为进位生成函数,qi=ai+bi为进位传送函数,i为加法器的位数。

从上式可以看出最高位的运算必须等到低位的所有位运算结束后才是有效的。即运算的延迟主要是由于进位延迟所引起的,为了提高运算速度,必须尽量减少由于进位信号逐级传递所耗费的时间。所以最好能在加法运算一开始就得到高位的进位输入信号。

分析(1)式发现,只要aibi=1,即pi=1,就会产生向第i位的进位;只要ai+bi=1,即qi=1,就会把第ci-1传递到第i位。如果我们把ci的等式展开,就会得到:

ci=pi+qipi-1+qiqi-1pi-2+qiqi-1qi-2pi-3+…+qiqi-1qi-2…q2p1+qiqi-1qi-2…q2q1c0(2)

使用(2)式来产生所有进位的加法器称为超前进位加法器,其对应的进位ci的实现电路如图2所示。超前进位加法器相对于串行进位加法器,大大缩短了延迟时间,超前进位加法器只需五级门延迟,这样就可以确保加法运算能在一个时钟周期内完成工作,可以采用如74ls283的超前进位加法器。

使用上述解压电路对数据进行解压的方法包括下述步骤:

步骤1:初始化,寄存器a和寄存器b分别置为数据“0”和“1”,寄存器a和寄存器b完成累加移位运算得到0.5,此时寄存器c的值为0.5;

步骤2:控制器的第二信号端c2自压缩数据的第一位开始依次输入压缩数据,输入压缩数据的相应位为1时,控制器c1为高电平,控制器c1控制第二三态门t2,将寄存器c的值直接传输到寄存器a,输入压缩数据的相应位为0时,控制器c1为低电平,控制器c1控制第一三态门t1,将寄存器c的值直接传输到寄存器b,重复上述加法以及移位计算,寄存器c的值更新,最终更新数值为0.y1y2……yn,0.y1y2……yn属于区间(0,1);

步骤3:将寄存器c的最终更新数值移位到计数器,统计压缩前数据的游程长度依次为y1、y2、……yn,yn表示为第n个测试向量的游程长度,n为正整数,按游程长度编码输出即可得到解压以后的数据。

以压缩后的数据101110为例说明本电路结构的工作原理。

初始时寄存器a和寄存器b分别置为数据“0”和“1”,寄存器a和寄存器b完成累加移位运算得到0.5,此时寄存器c的值为0.5。输入信号input第一位为1到c2,控制器c1为高电平,控制器通过三态门t2将寄存器c的值直接传输到寄存器a,寄存器a的值更新为0.5,如图3中t1。重复加法和移位运算,寄存器c的值为0.75,如图3中t2,输入信号input第二位为0到c2,控制器c1为低电平,控制器通过三态门t1将寄存器c的值直接传输到寄存器b,寄存器b的值更新为0.75。重复加法和移位运算,寄存器c的值为0.625,如图3中t3,输入信号input第二位为1到c2,控制器c1为低电平,控制器通过三态门t2将寄存器c的值直接传输到寄存器a,寄存器b的值更新为0.625。一直重复此过程,寄存器c的值分别更新为t4,t5,t6。由寄存器c的值即可得到原始测试数据的数据流的顺序依次为7、3、4、3、7、5。将该数值移位到计数器,按游程长度编码输出即可得到00000001000100001000100000001000001。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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