低功耗soc测试数据压缩编码方法

文档序号:7516649阅读:186来源:国知局

专利名称::低功耗soc测试数据压缩编码方法
技术领域
:本发明涉及一种集成电路测试方法,特别涉及一种低功耗S0C测试数据压缩编码方法。
背景技术
:随着集成电路工艺和设计技术的发展,单个芯片集成的晶体管数目越来越多,集成电路已经发展到S0C时代,基于IP核的设计思想进一步推动了S0C技术的发展。由于每个IP核供应商都会提供大量的测试数据,soc芯片上集成的IP核越多,测试数据量就越大,因而对S0C芯片的测试时间、成本和功耗都带来了极大的挑战。目前S0C芯片测试面临的主要问题包括(1)自动测试设备(ATE)的存储容量有限,其增长速度跟不上S0C芯片测试数据的增长;(2)ATE的工作频率跟不上待测芯片的工作频率;(3)测试设备的通道数有限,且价格昂贵。这些因素直接影响芯片的测试时间、成本和功耗。其中,减少芯片的测试时间是关键,这直接取决于测试集的大小、测试数据传输到芯片内核的时间、测试模式时的速率和最大的扫描链长度。为解决这一难题,测试资源划分(TRP)提供了一种颇有前途的解决方案。在TRP技术的研究方面,总体上可分为三个方面(1)测试集紧缩。该技术主要通过紧缩部分带有无关位的测试立方,在故障覆盖率不变的情况下减少测试向量的个数来减少测试数据量,其优点是不需要投入附加的硬件开销,其缺点是其非模型故障的覆盖率要受到影响。(2)内建自测试(BIST)。BIST的基本思想是利用芯片本身所带有的测试模式生成器(TPG),在片上直接生成测试向量,以降低对ATE的要求。由于BIST生成的多是伪随机测试向量,测试时通常存在着抗随机故障(RRF),故BIST存在故障覆盖率不高、测试序列较长的弊端。虽然可以通过加权或采用混合模式的BIST等方法来进一步提高测式效率,但随着电路规模的扩大,RRF的增多,要付出的硬件开销将显著增加。(3)测试数据压缩(TDC)。TDC主要采用的是无损数据压缩的方法,将预先计算好的测试向量集压缩,并存储在自动测试设备中,测试时ATE中的压缩数据通过芯片内部的解压缩电路还原成原始的测试向量,并加载到对应的IP核或S0C芯片的对应模块上。该方法不需要了解被测S0C芯片的具体内部结构,可以很好的保护知识产权,因而得到了广泛的应用。目前常用的测试数据压缩算法有基于统计的Huffman编码、游程编码、Golomb编码、VIHC编码、FDR编码等。其中FDR编码的效果是它们中比较好的,其思想是将测试数据中不同长度段的连续“0”用相应的代码字代替,因此提高压缩效率的关键就是在测试集中尽可能多的产生连续的“0”。考虑到原始测试集TD={、,t2,t3,…,tn}中,连续的向量之间会有很大的相似度,因此采用差分的方法构造差分测试集Tdiff={t,,t,t2,t2t3,“_1-101;11}可以产生更多的“0”。对差分后的数据进行编码可以大大提高压缩效率,然而在解码时除了有限状态机外,还需要使用循环扫描寄存器(CSR)将差分数据还原成原始测试集,无疑增加了硬件成本。如果原始数据流中连续的“0”越多,FDR编码压缩效果越好,然而实际应用中并不是总能保证数据流中连续出现较多的“0”,相反,如果连续出现的“1,,较多,则FDR码的压缩效率非常低下。
发明内容本发明是针对现有的测试数据压缩算法硬件成本高的问题,提出了一种低功耗S0C测试数据压缩编码方法,编码算法既考虑测试数据中连续出现的“0”,也考虑连续出现的“1”,大大减小了长度较短游程的数量,提高了编码效率,进一步提高压缩效率、降低解压成本。本发明的技术方案为一种低功耗S0C测试数据压缩编码方法,根据测试数据类型将原始测试数据分为以连续数据“1”后以“0”结尾的“1”串,或以连续数据“0”后“1,,结尾的“0”串,交替对“0”串和“1”串进行编码,仅在出现连续的“0”串或“1”串时,在连续出现的“0”串或“1”串之间插入一个额外的分隔码“10”,对每串数据进行压缩编码,具体压缩编码包括如下步骤1)将“0”串或“1”串根据游程长度L分成组Aj,由游程长度L求组别Aj的公式为j=「(L+4)-1J,符号「X」表示取大于等于X的最小整数,其中游程长度L为“0”串中连续“0”的个数或“1”串中连续“1”的个数;2)编码后码字由前缀和尾部组成如果j=2,则A2组中码字的前缀为“01”,码字的尾部为2位二进制数,其数值为L-1;如果j>2,并且2J-3彡L彡2j+2”-4,则游程长度为L的码字前缀WpMfix为连续j-1个“0”加1位的“1”,游程长度为L的码字尾部Wtail为j-1位二进制数,其大小为Wtail=L+3-2J;如果j>2,并且2j+2j_L3彡L彡2j+1_4,则游程长度为L的码字前缀WpMfix为连续j-1个“1”加1位的“0”,游程长度为L的码字尾部Wtail为j-1位二进制数,其大小为Wtail=L+3-2J-2J-1;3)码字长为编码后码字的长度,长度为码字前缀位数和码字尾部位数的总和。本发明的有益效果在于本发明低功耗S0C测试数据压缩编码方法,极大地提高了测试数据的压缩效率,对于减少测试时间、降低测试功耗有重要的意义。图1为本发明低功耗S0C测试数据压缩编码方法中0游程和1游程交替编码示例图;图2为自动测试平台原理框图3为激励解压电路的实现结构图。具体实施例方式如表1为FDR编码方法对应的码字,该方法只对“0”游程进行编码,下面是一个FDR编码的例子编码前TD=0000001111111111111000100000001111100001(40位)编码后TE=10100000000000000000000000001001110001000000001010(50位)从上面的例子可以看出,原始数据中出现较多连续的“1”时,FDR的编码效率很低,因为每个“1”都需要用2比特的码字“00”来编码。表1<table>tableseeoriginaldocumentpage5</column></row><table>本发明低功耗soc测试数据压缩编码方法如表2所示,编码原理根据测试数据类型可以把原始测试数据分为以“O”结尾的“1”串,或以“1”结尾的“O”串,例如11110,110就是以“O,,结尾的“1”串,OOOOO1、OOO1即为以“1”结尾的“O”串,“1”串或“O”串根据其游程长度被分入Α2,A3,……,AK各组,其中K是由测试集中出现的最大游程长度Lmax决定的。第i组包含21中游程长度,如Α2组包含“1、2、3、4”四种游程长度。由游程长度L求组别Aj的公式为j二「l0g2(L+4)-1」(符号「X_l表示取大于等于X的最小整数)例如,对于游程长度12,j=「log2(12+4)-1」=3,所以游程长度12属于A3组。每个码字都包含组前缀与尾部两部分,除了A2组的组前缀和尾部的长度是相同的外,其他组的尾部都比前缀少一位,这正是本发明的特点,这样除了A2组的码字和游程长度为5的码字外,所有其他码字都比FDR码对应的码字少用1比特表示,大大提高了数据压缩率。表2<table>tableseeoriginaldocumentpage5</column></row><table>具体的编码方法(过程)如下首先根据“O”串或“1”串的游程长度L把“O”串或“1”串按照前述计算组的序号j的公式归类到组Aj。如果j=2,则该组中码字的前缀为“01”,码字的尾部为2位二进制数,其数值为L-I(L为游程长度),码字由前缀和尾部组成。例如,对于游程长度为3为“O”串,根据计算可得组的序号为j=2,则该“O”串对应码字的前缀为“01”,对应的尾部为L-I=3-1=2=“10”(2位二进制数),故该“0”串对应的码字为“0110”。对于j>2的情况,即对于组A3,A4,…AK中的所有码字,前缀位数为j位(比特),如果2j-3彡L彡2^2^-4,则游程长度为L的码字前缀WpMfix为连续j-Ι个“0”加1位的“1”,即“00···01”;游程长度为L的码字尾部Wtail为j-Ι位二进制数,其大小为Wtail=L+3-2j。游程长度为L的码字由前缀Wprefix和尾部Wtail组成。例如对于“0”串“00000001”,其游程长度为L=7,对应的组j=ClOg2(L+4)_1」二「lo&(7+4)-1」=3,由于23-3彡L彡23+23-1-4,故其码字前缀为连续j-Ι=3-1=2个“0”加“1”,即前缀为“001”,码字的尾部为Wtail=L+3"2J=7+3-23=2=“10”(转换为2位二进制数),由此可以得到游程长度为7的“0”串完整的码字为“00110”。对于j>2的情况,如果2、2”-3彡L彡2J+1~4,则游程长度为L的码字前缀Wlffefix为连续j-Ι个“1”加1位的“0”,即“1L···10”;游程长度为L的码字尾部Wtail为j_l位二进制数,其大小为Wtail=L+3-2J-2J-1。游程长度为L的码字由前缀Wimfix和尾部Wtail组成。例如对于“0”串“00000000001”,其游程长度为L=10,对应的组j=「log2(L+4)-1」=「log2(10+4)-1」=3,由于23+23-1-3彡L彡23+1-4,故其码字前缀为连续j-Ι=3-1=2个“1”加1个“0”,即前缀为“110”,码字的尾部为Wtail=L+3-2J.-2J:1=10+3-23-23-1=1=“01”(转换为2位二进制数),由此可以得到游程长度为7的“0”串完整的码字为“11001”。由于本发明以2种游程为基础,因此不存在游程长度为0的情况,因此也就没有Al组。前缀“10”没有用于编码,留作编码时连续出现“0”串或“1”串时的分隔码。如果“10”用于编码,则把“01”用作编码时连续出现“0”串或“1”串时的分隔码。除了A2组以外,其他所有组的前缀都由2种不同的数字组成,它们之间为反码关系,例如对于A3组,前缀001对应于游程58,前缀110对应于游程912。组前缀用于区分该码字所在的组(以前缀的位数来区分),并代表了所在组(A2组除外)的容量(即所包含游程长度的种类数),容量为2n,其中η为前缀位数。例如码字“00101”的组前缀为“001”,位数为3,所以它表示该码字属于A3,A3组的容量为8(23=8)。本发明对于原始输入数据,交替对“0”游程和“1”游程进行编码,即交替对“0”串和“1”串进行编码,并且对于“0”串和“1”串,采用同样的码字,仅在出现连续的“0”串或“1”串时,在连续出现的“0”串或“1”串之间插入一个额外的分隔码“10”,由于交替采用了“0”游程和“1,,游程分别进行编码,大大提高了数据的压缩率。第一个编码采用“0”游程,还是“1”游程,由原始输入数据或经过无关位指定后的数据决定,如果原始数据或无关位处理后的数据第1个数据为0,则第一个编码为“0”游程(“0”串)编码,反之,第一个编码采用“1”游程(“1”串)进行编码。图1为本发明0游程和1游程交替编码例子。对比同样的数据采用FDR编码需要50位,这是由于本发明对于游程大于5的情况,每个码字都要比对应的FDR码少1比特,例如,对于0串“0000001”,本发明的编码为“00101”,而FDR对应的编码则为“110000”。另外,由于FDR码对连续“1”的编码效率太差,如果原始测试集中存在连续的“1”,如果采用FDR编码,每一位“1”都要以2位的码字“00”进行编码,编码后的数据量会显著增大。解码时对码字的识别过程如下一般情况下,首先读入的一定是组前缀,它是一连串的1或一连串的0。当读到第一个0或第一个1时,表示组前缀读取完毕,接下来读入的是尾部。尾部的读取位数取决于刚刚读入的组前缀的位数,对于前缀为“01”的情况,尾部与组前缀的位数相同,对于其它的前缀,尾部位数比组前缀少一位。当尾部读取完毕后,一个码字也就完成了识别。特殊情况下,如果一个码字第一位读入的是1,则继续再读一位,若这一位为1,则继续读数,直至读到0为止,表明此时为以“0”结尾的“1”串;若读取的第二位为0,则该码字为分隔码“10”,假定此时读入的码字应表示0串,则改为表示1串,即本来前面为0串/1串/0串/1串交替的,后面本应跟着“0”串,但由于遇到分隔码,表明“1”串后面跟着的还是“1”串。还有,Golomb码、FDR码等编码方法将测试集中的无关位全部指定为“0”,这使得对于11X11这样的向量来说,无关位的指定为“0”的做法会造成“1”游程的中断,增加了小游程的数量,因此压缩效率低,本发明的编码在压缩前,采用根据前后数据来指定无关位的方法,例如,对于11X11X1001,本发明方法将其指定为1111111001,避免了由于无关位的指定而将大长度游程分成几个小游程的情况。本发明可用于SOC芯片测试向量集的无损压缩编码,可以大幅度减小测试集的大小,大幅度减少测试时间,降低测试功耗和成本。图2为自动测试平台,本发明用来实现图2中的压缩过的激励部分。图2中,压缩过的激励部分存储用本发明方法对原始测试向量集压缩过的代码,测试时,这些代码被传送到待测芯片的激励解压缩电路,还原成原始测试向量集,然后通过扫描链移到待测SOC芯片的内核(IP或功能块),测试结果通过扫描链移到测试响应压缩电路,然后再传送到自动测试设备中,自动测试设备对压缩过的响应进行解压缩,与期望值进行比较。激励解压电路的实现结构如图3所示,该基于有限状态机(FSM)的解压电路嵌入在芯片内部,其实现结构简单,且独立于被测IP核和预先计算好的测试集。本发明的编码机制使得它不需要对原测试集进行差分,因此它的解压电路不象先差分的FDR那样需要独立的CSR。该电路规模小,不会明显增加硬件开销。该解码器读入编码过的测试集TE,解压后输出原测试集TD。它由一个k位计数器、一个log2k位计数器、一个有限状态机FSM和一个T触发器构成。解码器功能描述如下a)bit_in是位输入端口,用于向FSM及k位计数器移入编码后的数据,en为使能信号,当FSM准备就绪时,它控制bit_in按位输入数据。b)shift信号控制编码的组前缀和尾部移入k位计数器,decl和rsl分别控制k位计数器的减1计数和指示其复位状态。c)log2k位计数器用于计算组前缀和尾部的长度,以便识别各组。inc和dec2信号分别控制此计数器的加1与减1操作,rs2指示log2k位计数器停止计数。d)FSM的输出信号out控制T触发器的翻转,表示当前完成对“0”或“1”串的解码,然后根据下一个码字的类型进行“1”串或“0”串的解码。例如如果接下来的码字是“10”,表示分隔符,表示下一个码字还是“0”串,需要进行“0”串的解码。信号脂示scan_in何时有效。scaruin是解码器的最终输出,它直接进入被测芯片内核(或IP核)的扫描链。该解码器的主要工作原理如下a)初始化。T触发器复位,ν清零,使能信号en为1,解码器准备从bit_in接收数据。b)FSM控制bit_in将组前缀移入k位计数器,组前缀根据码字的类型以“0”或“1,,结尾。在此期间,erushift和inc保持高电平,直到由bit_in接收到“0”或“1”为止。如果前缀以“0”开头,则该前缀在k位计数器中进行取反操作(前缀为“01”时除外),例如,如果前缀为“001”,则k位计数器中的实际数据为“110”;如果前缀为“01”,则k位计数器中的实际数据为“01”。c)FSM的输出端out为低电平或高电平,并控制T触发器持续输出低电平或高电平,decl为高,k位计数器减1直到rsl为高(k位计数器为1)。同时信号ν为高电平,指示输出有效。d)FSM控制bit_in将尾部移入k位计数器直至log2k位计数器数值为0,Iog21Mi计数器控制码字尾部的长度,dec2变高,log2k位计数器开始减1计数,直到rs2为高电平,此时log2k位计数器的数值为0,表示所有码字的尾部已经全部输入到k位计数器中。如果码字的前缀以“00”开始,则在开始把码字的尾部移入k位计数器之前先把1位的“0”移入k位计数器。如果码字的前缀以“U”开始,则在开始把码字的尾部移入k位计数器之前先把1位的“1”移入k位计数器。e)FSM的输出端out持续输出低电平或高电平,控制T触发器持续输出低电平或高电平,同时信号ν为高电平,指示输出有效。直到k位计数器为1时out输出一次高电平或低电平。f)如果bit_in输入的第1个组前缀为“1”,则令erushift和inc都为高电平,等待下一时钟周期bit_in的数值。如果下一个时钟周期bit_in的数值为“1”,则表示该前缀表示的码字是正常的码字,令en、shift和inc都为高电平一个时钟周期,然后转至步骤b);如果下一个时钟周期bit_in的数值为“0”,则表示该前缀不是正常的码字,而是分隔符“10”,此时令dec2为高电平一个时钟周期,FSM的输出out为高电平一个时钟周期,并且ν为“0”。表示此时T触发器只做翻转操作,并不输出有效数据,然后转至步骤b)准备对下一个码字进行解码。权利要求一种低功耗SOC测试数据压缩编码方法,其特征在于,根据测试数据类型将原始测试数据分为以连续数据“1”后以“0”结尾的“1”串,或以连续数据“0”后“1”结尾的“0”串,交替对“0”串和“1”串进行编码,仅在出现连续的“0”串或“1”串时,在连续出现的“0”串或“1”串之间插入一个额外的分隔码“10”,对每串数据进行压缩编码,具体压缩编码包括如下步骤1)将“0”串或“1”串根据游程长度L分成组Aj,由游程长度L求组别Aj的公式为j=「log2(L+4)-1」,符号「X」表示取大于等于X的最小整数,其中游程长度L为“0”串中连续“0”的个数或“1”串中连续“1”的个数;2)编码后码字由前缀和尾部组成如果j=2,则A2组中码字的前缀为“01”,码字的尾部为2位二进制数,其数值为L-1;如果j>2,并且2j-3≤L≤2j+2j-1-4,则游程长度为L的码字前缀Wprefix为连续j-1个“0”加1位的“1”,游程长度为L的码字尾部Wtail为j-1位二进制数,其大小为Wtail=L+3-2j;如果j>2,并且2j+2j-1-3≤L≤2j+1-4,则游程长度为L的码字前缀Wprefix为连续j-1个“1”加1位的“0”,游程长度为L的码字尾部Wtail为j-1位二进制数,其大小为Wtail=L+3-2j-2j-1;3)码字长为编码后码字的长度,长度为码字前缀位数和码字尾部位数的总和。全文摘要本发明涉及一种低功耗SOC测试数据压缩编码方法,根据测试数据类型将原始测试数据分为以连续数据“1”后“0”结尾的“1”串,或以连续数据“0”后“1”结尾的“0”串,交替对“0”串和“1”串进行编码,仅在出现连续的“0”串或“1”串时,在连续出现的“0”串或“1”串之间插入一个额外的分隔码“10”,对每串数据进行压缩编码,编码后的每个码字,都比FDR编码或基于FDR编码改进的其他编码方法产生的码字少一个比特,极大地提高了测试数据的压缩效率,对于减少测试时间、降低测试功耗有重要的意义。文档编号H03M7/40GK101807926SQ20101002307公开日2010年8月18日申请日期2010年1月21日优先权日2010年1月21日发明者叶波申请人:上海电力学院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1