集成电路测试中的测试数据压缩方法
【技术领域】
本发明是关于一种集成电路测试技术,特别是对系统芯片(System-on-a-Chip,SoC)的外建自测试(Built-Out Self-Test,BOST)方法中测试数据的压缩方法。
【背景技术】
集成电路技术的发展使得可在一个芯片中集成数以亿计的器件,并且可以集成预先设计和经过验证的IP,如存储器,微处理器,DSP等。这种多元化的集成芯片已经成为能处理各种信息的集成系统,被称为片上系统或系统芯片(SoC)。SoC大大降低了系统成本,缩短了设计周期,加快了产品上市时间,但是SoC产品的测试面临越来越多的挑战,如:
1、芯片测试点少,可直接控制或观测的测试点有限,通常只能通过芯片有限的输入/输出引脚进行测试,而芯片内部节点很难通过宏观机械装置直接控制或观测。
2、自动测试设备(ATE)价格昂贵,芯片的设计和制造技术发展速度比ATE的设计和制造技术发展快,芯片的时钟频率已超过了目前最先进的ATE的频率,无法进行全速测试。
3、测试数据量大,SoC中集成的IP越多,所需测试数据量就越大。预计到2014年存储测试向量所需存储器的容量是1999年的150倍,将会超过ATE的存储深度。
芯片的测试已成为制约集成电路发展的一个“瓶颈”。已有大量的文献对集成电路的测试方法展开研究,主要有内建自测试(Built-In Self-Test,BIST)和外建自测试两种方法。
内建自测试方法,依靠芯片自身的资源完成对芯片的测试。此方法将测试模式生成器(TPG)、测试过程控制和测试响应评价功能模块嵌入在被测电路(CUT)上,摆脱了对ATE的依赖,减少了测试费用。但由于BIST生成的多是伪随机测试向量,测试时通常存在着抗随机故障(Random Resistant Fault,RRF),故BIST存在故障覆盖率不高、测试序列较长的弊端。虽然可以通过加权或采用混合模式的BIST等方法来进一步提高测试效,但随着电路规模的扩大,RRF的增多,要付出的硬件开销将显著增加。
外建自测试方法又称为测试源划分技术,此方法将所需的测试向量经过压缩存储在ATE中,测试期间,通过片上的解压电路将其还原施加到被测电路上。它同样是将一些测试资源从ATE移入到芯片中,以达到减少测试数据量、缩短测试时间的目的,并能允许使用低速ATE而不降低测试质量。该方法不需要了解被测设计(Design Under Test,DUT)的具体内部结构,可以很好的保护知识产权,因而得到了广泛地应用。
当前的测试数据通常以种子或被压缩的形式存储在ATE的存储器中,由于集成电路测试数据量非常庞大和ATE存储器容量有限,在实际的集成电路测试时,这些测试数据就必须被裁减或需要分批装入ATE存储器,这就降低了测试质量或增加了测试成本,所以必须研究出一种算法,使测试数据可以一次性装入ATE存储器或可以直接应用到被测设计而不需要多次重载。
传统的方法中,这些种子或代码字(被压缩的形式)都是被直接(静态)存储在ATE存储器中,其所占的存储容量将随着原始测试数据量的增加而增加,虽然ATE中存储的是压缩的形式,但其体积仍然很大,因此逐渐增长的测试数据量对ATE的存储提出了挑战。
【发明内容】
本发明所要解决的技术问题在于提供一种使测试数据可以一次性装入ATE存储器并可以直接应用到被测电路上的集成电路测试中的测试数据压缩方法,从理论上可以无限压缩测试数据,可以从根本上解决测试数据的存储问题。
本发明是通过以下技术方案解决上述技术问题的:本发明中自动测试设备内的测试数据不直接采用代码或种子来存储,而是采用存储原始测试数据的某种规律,测试应用时,通过芯片上的解压电路将该规律还原得到所要的原始测试数据,这样,代码字在解压时,不需要直接存储,而是由运算动态产生,因此可称为动态压缩算法。
更进一步的,本发明方法的特征是将整个测试集的存储变换成对一个或若干个对应的无理数的存储。
所述将整个测试集的存储变换成对一个或若干个对应的无理数的存储的具体步骤为:
a、采用自动测试模式生成工具ATPG,生成确定的完全测试集T,记其测试向量个数为N;
b、将所有测试向量级联,即将一个向量的尾部接另一个向量的首部;
c、无关位填充。按顺序从头开始填充无关位,填充的原则为:如果该无关位与前面出现的连续0的个数小于指定常数K,则该无关位填充为0;否则该无关位填充为1;K等于原始测试数据中的最大游程长度;
d、统计游程长度,按顺序从头开始统计游程长度;
e、转化为小数,将游程长度信息转化为小数来表示,转化原则为:将第一个游程长度定义为小数的个位,其它全部作为小数的小数部分;
f、转化为无理数,为了叙述方便,记小数为x,无理数为
(m,n,l,k全部是整数)。上述问题实际上就是找适当的整数m,n,l,k,使
展开成小数时,其前p(p为小数x的所有位数)项正好等于x。压缩时只用存储整数m,n,l,k和p,该整数的存储可以用定长码,如经典的游程编码,也可以用变长码,如Golomb码或FDR码等。可以对上述描述进一步变换,即选择合适的整数m,n,l,k,使(lx)
k在适当的精度的四舍五入情况下与m
n相等。本过程的难点是由于x的小数位数可能非常多,在编程时无法用程序语言中现成的变量来表示,这可以通过文件来模拟乘法运算得到,最后对(lx)
k和m
n的比较也是采用模拟按位比较的方法,即先判断小数(lx)
k四舍五入后的小数是不是各位都是0,如果是0,再比较四舍五入后的整数部分是否等于m
n。如对于小数1.732,其平方1.732
2=2.999824,判断该数是否在适当的精度的四舍五入情况下与3相等,即将该小数四舍五入后得到3.00,然后判断小数部分是否全为0,最后再比较整数部分是否与3相等。由于在实际的测试数据计算过程中,小数部分的位数相当多,而整数部分的位数相对比较少,因此可以采用先比较四舍五入后的(lx)
k和m
n的整数部分,在整数部分相等的情况下再检查(lx)
k四舍五入后小数各位是否全为0。
本发明集成电路测试中的测试数据压缩方法的优点在于:通过将整个测试集编码的存储转化为对编码规律的存储,即将整个测试集变换成对一个或若干个确定的无理数的存储,与传统的技术相比,从理论上可以无限压缩测试数据,可以从根本上解决测试数据的存储问题。
【具体实施方式】
将整个测试集的存储变换成对一个或若干个对应的无理数的存储的具体步骤为:
a、采用自动测试模式生成工具ATPG,生成确定的完全测试集T,记其测试向量个数为N;
b、将所有测试向量级联,即将一个向量的尾部接另一个向量的首部;
c、无关位填充。按顺序从头开始填充无关位,填充的原则为:如果该无关位与前面出现的连续0的个数小于指定常数K,则该无关位填充为0;否则该无关位填充为1;K等于原始测试数据中的最大游程长度;
d、统计游程长度,按顺序从头开始统计游程长度;
e、转化为小数,将游程长度信息转化为小数来表示,转化原则为:将第一个游程长度定义为小数的个位,其它全部作为小数的小数部分;
f、转化为无理数,为了叙述方便,记小数为x,无理数为
(m,n,l,k全部是整数)。上述问题实际上就是找适当的整数m,n,l,k,使
展开成小数时,其前p(p为小数x的所有位数)项正好等于x。压缩时只用存储整数m,n,l,k和p,该整数的存储可以用定长码,如经典的游程编码,也可以用变长码,如Golomb码或FDR码等。可以对上述描述进一步变换,即选择合适的整数m,n,l,k,使(lx)
k在适当的精度的四舍五入情况下与m
n相等。本过程的难点是由于x的小数位数可能非常多,在编程时无法用程序语言中现成的变量来表示,这可以通过文件来模拟乘法运算得到,最后对(lx)
k和m
n的比较也是采用模拟按位比较的方法,即先判断小数(lx)
k四舍五入后的小数是不是各位都是0,如果是0,再比较四舍五入后的整数部分是否等于m
n。如对于小数1.732,其平方1.732
2=2.999824,判断该数是否在适当的精度的四舍五入情况下与3相等,即将该小数四舍五入后得到3.00,然后判断小数部分是否全为0,最后再比较整数部分是否与3相等。由于在实际的测试数据计算过程中,小数部分的位数相当多,而整数部分的位数相对比较少,因此可以采用先比较四舍五入后的(lx)
k和m
n的整数部分,在整数部分相等的情况下再检查(lx)
k四舍五入后小数各位是否全为0。
压缩效果分析:
本研究提出不直接采用代码字或种子来存储测试数据,而是采用存储原始测试数据的某种规律。解压时再通过该规律还原所要的原始测试数据。这是完全可行的,例如,对于为01000000010001001(17位)的原始测试数据,如果采用0类型的游程编码方法,其对应的游程长度分别为1,7,3,2。而
所对应的小数的前四个数字正好也是1,7,3,2。适当的选取小数点的位数,就可以使原始测试数据游程长度与无理数展开后所得小数的前若干项相同,故可以不用直接对原始测试数据编码,而是将原始数据的这种规律用一个对应的无理数来标记。测试应用时只用将该无理数转化为小数就可以得到所需要的游程长度。这样存储的就是原始测试数据的规律,而不是直接用代码字或种子来存储,理想情况下可以将单个测试向量,甚至整个测试集转化为一个无理数来存储。即将传统的对整个测试集的存储变成对一个或若干个确定的无理数的存储,可以从根本上解决测试数据的存储问题。该研究理论上可以无限压缩原始数据。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。