一种双游程数据编码方法

文档序号:7511700阅读:253来源:国知局

专利名称::一种双游程数据编码方法
技术领域
:本发明涉及一种微电子领域里的双游程数据编码方法。
背景技术
:当前的IP厂商在提供IP核的同时,就会提供相应的测试向量,这些测试向量不仅在工作站上进行设计仿真的时候使用,还要用到晶圆硅片测试上去。对于一个复杂的系统芯片来说,其测试向量是很庞大的。比如以集成ARM7TDMI的系统芯片来说,ARM提供的测试向量就有近110万个周期的测试向量,即使改用并行测试,但也只能减少一定的测试周期数,也有15万个时钟周期,但与此同时,却需要更多的测试通道。对于一个晶圆硅片测试流程来说,其成本和所需要的测试时间以及测试通道数成正比。解决测试设备昂贵的问题,最好的方法是采用内建自测试。但是,并非所有的模块可以采用内建自测试的方法。在这种情况下,唯有在所需要的测试设备、测试时间和测试通道之间寻求平衡。除此之外,可以通过对测试向量进行压縮,可以极大减少测试数据量,其具体过程是首先将测试向量按照一定的压縮方法进行压縮,然后测试设备将压缩后的测试向量送给系统芯片相应的解码电路。经过解码电路的解码,还原出原始的测试向量,施加到系统芯片中相应的IP进行测试。同时,还可以将系统芯片的响应进行压縮后,再通过测试设备进行结果判断。对于系统芯片来说,整个晶圆硅片测试添加了压縮电路,它包括了特定的访问机制和测试激励/响应压縮电路;对于压縮的方法来说,主要包括基于压缩算法的研究和基于测试结构和状态机等硬件结构的压縮算法。目前常见的数据压縮算法有基于统计的霍夫曼数据编码方法,以及游程数据编码方法,还有Golomb数据编码方法等。霍夫曼数据编码方法是一种基于统计的编码方式。它采用的是对原始数据进行定长分组,所得到的压縮数据也是定长的。也就是说,它是一种定长到定长的编码方式。其基本的原理是,将原始的数据按照一定的长度划分成若干组,然后按照每组码字出现频率的高低分配码字。对于出现频率大的代码进行较可能短的编码,而对于出现频率较低的代码则可以用稍长一点的编码。具体的实现可以通过构造霍夫曼树来实现。由于它编码后的代码的不重复性,因而在解码时便可以用有限状态机来实现。用该方法可以取得很好的压縮率,但是它是一种动态编码,即每组测试向量编码后的结果是不相同的。这也带来了编码电路的复杂性,而且这种霍夫曼数据编码方法的压縮率对测试数据中序列重复性要求很高,如果测试向量中重复的序列不是很多,那么其压縮率是很低的,而且有可能出现负压縮的现象,因此霍夫曼数据编码方法的缺点和局限性是仍然要求数据中具有较高的码字重复率。游程数据编码方法(Run-length)是一种变长到定长的编码方式。对于数据中连续出现多个0或多个1的数据来说,采用这种方法是一种较好的编码方式。游程数据编码就是根据连续的0或1的个数来进行编码。具体的编码方式是首先确定编码的位参数b,然后根据其确定分组的大小n^2b-1,然后根据0或1出现的情况进行编码,例如,根据0的情况进行编码,选择位数为3的话,则原始数据中连续0的个数在0到6之间的分成一个组,7到13之间的分成另外一个组。然后进行码字分配。由此可以看出000对应1,OOl对应Ol,010对应001,011对应0001,100对应00001,101对应000001,110对应0000001。而对于连续7个0以上,编码后的长度为6位,即前面加上lll。由此可以看出,在数据中出现多个O或1的情况编码效率较高;游程数据编码方法对于解码电路的设计,也比较简单,还以3位游程编码为例,每三位数据对应相应个数的0和一位1,因此,其解码设计需要使用一个余3的计数器,当计数器到3以后就复位为0,重新开始余3计位即可完成编码。由上所述,游程数据编码方法的缺点和局限性是适合于连续0或1的数量较多的情况,但是编码后的码字的长度是随着连续0或1的位数的长度增加而增加的。Golomb数据编码方法是从游程编码的基础上演进而来,它根据出现的游程长度采用变长码进行编码,也就是说,它是一种变长到变长的编码方式,Golomb数据编码方法首先也是要确定一个编码参数m,从而决定分组的大小,m应该根据原始数据的特性确定,以期获得最佳值。编码后的码字分为两个部分,即前缀和后缀,前缀表示该码字的分组信息,后缀是重复性数字串的长度信息。前缀的位数由分组信息决定,对于第一组,由0位表示,第二组则由10表示,即在前面添加一个l,以后的组别均由1的个数决定,由此可见,Golomb数据编码每增加l组,其代码字间的长度增加一位l,而传统的游程编码代码字长度每增加一组需要增加b位,当m为2的整数次幂的时候,其后缀的位数为log2m,对于解码电路,可以根据码字的前缀l的个数确定组别,然后根据组别来确定最终的码字长度,进行译码,其整个过程用简单的状态机即可实现。一般取IIF4时,代码获得较高的压縮率,其编码的码字表如表1所示。<table>complextableseeoriginaldocumentpage6</column></row><table>由表1可见,Golomb数据编码方法的缺点和局限性是只适合于测试向量中O或l的个数有一个占绝对优势的情况,比如0占80%或1占80%的情况。在Golomb数据编码方法中,只有在原始数据中0或1某一方比另一方更多的时候,才出现较好的编码率,而对于两者差不多时,将会出现编码率负增长的现象。其临界点在p=0.781,即只有在0或1的一种数据在原始数据中占有率达至U79呢以上时,才能获得真正的压縮,否则将会有负压縮的现象出现。
发明内容本发明所要解决的技术问题是提供一种能克服上述技术的缺点的双游程数据编码方法,该方法对于测试向量的编码来说可以同时处理1和0的编码方式并可根据系统芯片的测试具体情况综合考虑0和1游程。表2双游程数据编码方法的码字表<table>complextableseeoriginaldocumentpage7</column></row><table>17…………本发明的双游程数据编码方法(Double-Run-length)是将数据编码的码长分为标示位、组别位和奇偶位三个部分标示位共有一位,为1或0,表示编码根据1的游程还是0的游程,1表示该码字根据1的游程进行编码,0表示根据0的游程进行编码;组别位组别位是奇数,起始位为1,结束位为0,从第一个1开始算起,每两位描述组别的性质其一般格式为lxlxlx0……,其中x为0或1,直至遇到0,表示该组结束;奇偶位共有1位,表示游程的奇偶性,0表示游程为奇数,l表示游程为偶数。本发明的双游程数据编码方法具体的码字表如表2所示。本发明的双游程数据编码方法,从表2可以看出,假如用i表示组别序号,则第i组包含的游程元素的数量为2i个。它是一种变组长的编码方式。设游程为l,则其所在的组别i满足计算为<formula>complexformulaseeoriginaldocumentpage8</formula>编码后的码长M=2i+1仍先设某一位为0的概率为p,某一位为1的概率为(1-p),其中0《p《1。对于考虑0的长度为l。的游程,其出现概率应该为Pl0(l一p),而对1的游程l1出现的几率应该为p(-p)l1,考虑平均游程<formula>complexformulaseeoriginaldocumentpage8</formula>同样它属于A组的概率为<formula>complexformulaseeoriginaldocumentpage9</formula>对K组来说,编码长度为2K+1,对其进行加权相加<formula>complexformulaseeoriginaldocumentpage9</formula>则对于原始码长和压縮后的码长的计算公式为<formula>complexformulaseeoriginaldocumentpage9</formula>压縮倍数的计算<formula>complexformulaseeoriginaldocumentpage9</formula>对于上式的计算,由于级数是收敛的,可以用数学工具进行计算。其中可以近似取k=1~1000来进行计算。采用本发明的双游程数据编码方法,不用去考虑测试数据本身的性质,即不管数据中出现0还是1多的情况,都能获得较好的压缩率。在p=0.5时,其压縮率到达最低点,但仍保持在rd=0.117左右(取k=1~1000),而且当原始数据中1或0中一方所占的比率越大,其压縮效果越好。本发明的优点在于:不考虑原始二进制数据中1或0出现次数多少的情况,在对于测试向量的编码来说可以同时针对1和0进行处理,在各种情况下都可取得较理想的压縮率和更高的编码率,压縮率的增长要快于其它的数据编码方法,而且还可避免测试数据的负压縮现象,因此非常适合于系统芯片测试向量的压縮,具有较强的实用价值。图1是的本发明所述一种双游程数据编码方法的码字规则图2是本发明所述一种双游程数据编码方法的应用图。具体实施例方式下面结合附图和具体实施方式对本发明所述的一种双游程数据编码方法作进一步详细的说明。本发明的双游程数据编码方法(Double-Run-length)是将数据编码的码长分为标示位、组别位和奇偶位三个部分。如图l所示-标示位共有一位,为1或0,表示编码根据1的游程还是0的游程,1表示该码字根据1的游程进行编码,0表示根据0的游程进行编码;组别位组别位是奇数,起始位为l,结束位为0,从第一个1开始算起,每两位描述组别的性质其一般格式为lxlxlx0……,其中x为0或l,直至遇到0,表示该组结束;奇偶位共有1位,表示游程的奇偶性,0表示游程为奇数,l表示游程为偶数。本发明双游程数据编码方法的编码应用过程如图2所示。主要分为解码状态转换机,计数器,及解码数据输出三个部分。具体的过程如下,首先,解码状态转换机接收第一位原始数据,根据0或1产生out—0_1信号,给解码数据输出,告诉它这是i的游程还是o的游程。然后,开始判断下一位是0还是1。如果是0,将接收一位奇偶位,结束解码。如果是l,记录下来,并启动计数器进行计数,接着再接收l位组别位信息。而后根据计数结果,计算出最终的码字位数,通过解码数据输出模块输出最终的译码结果。假如计数器从0计数计到N位,则表明该数据的游程处于第N+l组。记录的相应的码字信息M,表示该码的游程处于这组的第M+1位,状态转换图如图6-6所示。以解码一个27位的原始数据为例,设为1—10—11_11_10—01—0_10—10—11—00—1—11—01解码器首先读入第一位为1,说明是1的游程,接着读入一位1,表明组别位开始,告诉计数器计数,读入组别具体信息0。然后还是一位l,计数器计数,表明继续读入组别,此时读入组别具体信息为1,接着仍是组别位,组别信息为1,计数器1计数。然后为组别位的0,最后读到0,表明该码串结束,结束位为l,记录该数字。计数器共计4次,信息为01101,表明该码字处于第5组第14位,则表示该原始数据为44个1。接下来读标示位为0,表示下面的码字为0的游程。依照过程,可以得到具体的组别为4位,记录信息为0010,即处于该组别第3位,表示17个0。接下来可以看出为第2组第4位数,也即6个1。在集成ARM(—种嵌入式中央处理器)的系统芯片测试过程中,通过测试向量对ARM进行测试,可以首先通过本发明双游程数据编码方法对测试向量进行压縮。表3是利用本发明双游程数据编码方法和Golonib数据编码方法的测试向量压縮结果比较。表3双游程数据编码方法和Golomb数据编码方法的测试向量压縮结果比较<table><row><column>测试内容</column><column>测试向量位数</column><column>Golomb数据编码压縮结果(m=4)</column><column>双游程数据编码结果</column></row><row><column>ALE</column><column>130475</column><column>98778</column><column>65237</column></row><row><column>Thumb</column><column>425015</column><column>283359</column><column>223670</column></row><row><column>ARM</column><column>1433485</column><column>756457</column><column>661264</column></row><row><column>Debug</column><column>329585</column><column>311620</column><column>239711</column></row><table>从表3的对ARM的测试向量压縮比较结果可以看出,本发明一种双游程数据编码方法在各种情况下都可取得较理想的压縮率。对于像Debug测试向量,根据统计其中的0和1不能区分绝对优势时,利用Golomb数据编码方法仅可取得约0.54%的压縮率,而采用本发明双游程数据编码方法可以取得约27.26%的压縮率。在0或1数量较为平均时,本发明双游程数据编码方法的优势更加明显。本发明不限于上述实施例,对于本领域技术人员来说,对本发明的上述实施例所做出的任何改进或变更都不会超出仅以举例的方式示出的本发明的实施例和所附权利要求的保护范围。权利要求1.一种双游程数据编码方法,其特征在于该数据编码的码长分为三个部分标示位共有一位,为1或0,表示编码根据1的游程还是0的游程,1表示该码字根据1的游程进行编码,0表示根据0的游程进行编码;组别位组别位是奇数,起始位为1,结束位为0,从第一个1开始算起,每两位描述组别的性质其一般格式为1x1x1x0……,其中x为0或1,直至遇到0,表示该组结束;奇偶位共有1位,表示游程的奇偶性,0表示游程为奇数,1表示游程为偶数。全文摘要本发明公开了一种双游程数据编码方法,其特征在于该数据编码的码长分为标示位、组别位和奇偶位三个部分。本发明的优点在于不考虑原始二进制数据中1或0出现次数多少的情况,在对于测试向量的编码来说可以同时针对1和0进行处理,在各种情况下都可取得较理想的压缩率和更高的编码率,压缩率的增长要快于其它的数据编码方法,而且还可避免测试数据的负压缩现象,因此非常适合于系统芯片测试向量的压缩,具有较强的实用价值。文档编号H03M7/46GK101202548SQ200710304480公开日2008年6月18日申请日期2007年12月28日优先权日2007年12月28日发明者邓中亮,可韩申请人:北京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1