- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于FDR码改进分组的SoC测试数据压缩方法
摘要:文章提出一种基于FDR码改进分组的SoC测试数据压缩方法。经过对原始测试集无关位的简单预处理,提高确定位0在游程中的出现频率。在FDR码的基础上,改进其分组方式,通过理论证明其压缩率略高于FDR编码,尤其是短游程的压缩率。用C语言编写程序模拟两种编码方法的软件实现程序,实验结果证明了改进分组的FDR编码方法的有效性和高压缩性。
根据2012年美国半导体行业协会编制的《国际半导体发展报告》(The International Technology Roadmap for Semiconductors,NTRS)预测,在2012年至2030年这段时间里,SoC的数据量(Data Volume)将接近10兆兆位元GB,而SoC的数据经过压缩后,其数据量将可能减少一万倍。海量的测试数据使目前集成电路的测试成本与制造成本基本持平,甚至有超过的趋势。如何降低集成电路的测试成本是集成电路业面临的主要问题之一。测试数据压缩是降低测试成本众多方法中的一种。测试压缩能够有效地减少测试数据量,降低对测试数据存储容量和测试设备数据传输通道数量的需求,同时,经过适当设计,还可以降低测试时间和测试功耗。集成电路中的测试数据向量可以分为测试激励和测试响应两大类,因此测试数据压缩也就相应地分为测试激励压缩和测试响应压缩,其中测试激励压缩是无损压缩,测试响应压缩是有损压缩。本文所进行的研究是在无损的测试激励压缩的基础上展开的。
测试激励压缩从测试激励向量中子向量角度出发,有三大类压缩方法:第一大类是基于LFSR的压缩方法,主要是指各种重播方法,根据重播种周期的不同,重播种可以分为单播种(整个测试项量使用一个种子生成)、每向量重播种(每一个测试向量使用一个种子生成)和每周期重播种(每一个测试向量使用多个种子来生成);第二大类是基于扫描切片重叠压缩方法,该方法巧妙利用扫描向量相互重叠关系,是一种低开销的压缩方案;第三大类是基于编码压缩方法,该方法将测试向量水平方向的单个子向量作为输入,利用适当的编码方法,对该输入向量进行编码压缩。目前有许多不同的编码压缩方法,它们使用不同的策略来压缩数据,如:FDR码、Golomb码、交替游程码等。
针对目前流行的各种编码对短游程的压缩率低这一现象,通过研究对比各种编码方法发现,在每种编码方法中,短游程(游程长度在0到10之间)压缩后的编码字几乎都比原游程要长或者持平,这就有可能出现负压缩情况。在FDR码的基础上,本文将其分组进行改进,有效地降低了这一情况的发生。
1 基于FDR码改进分组的编码介绍
通过对测试数据中“0”的游程长度进行分析,得出长度大于20的“0”游程出现频率很低,长度在0和20之间的“0”游程随着游程长度L的增加,出现频率迅速下降。由此可以看出,在测试数据中较短的0游程很多,长游程较少。笔者在FDR编码基础上提出了一种改进分组的游程编码方案。基于FDR码改进分组的编码(以下简称改进分组编码)和FDR编码都是将出现频率最高的O游程编码成尽可能短的码字,不同之处在于,FDR编码从长度为0的游程开始分组,而改进分组编码是从长度为2的游程开始分组,这将大大提高数据压缩率,尤其是短游程的压缩率。

表2提供了一个改进分组编码的实例。在这个例子中,以测试向量中0的个数作为游程长度进行编码。在该例中,对于其中一个测试向量片段00000000001,该片段0游程的长度为10,则其对应的编码为110010,编码后的测试向量相对于原测试向量节省了5位。

2 基于FDR码改进分组的编码方法分析
引理1在基于FDR码改进分组编码中第k组所代表的游程范围为2k-l<1k≤2k+1-1(k=1,2,…),则游程为1的数据对应的编码长度为

。根据该引理通过计算可得到基于FDR码改进分组编码的压缩倍数λ。其中压缩倍数

。假设测试数据中出现0的概率为P,则出现1的概率为(1-p)(其中0
闂傚倸鍊峰ù鍥敋瑜忛幑銏ゅ箛椤旇棄搴婇梺褰掑亰閸犳帡宕戦幘鎰佹僵妞ゆ劑鍨圭粊顕€姊洪棃娑欘棞闁稿﹤顭烽獮鎴﹀礋椤掑倻鎳濆銈嗙墬绾板秴鈻嶆繝鍥ㄢ拻濞撴埃鍋撴繛浣冲洦鏅煫鍥ㄧ☉閻掑灚銇勯幒鎴濐仼闁藉啰鍠栭弻鏇㈠醇濠垫劖效闂佺ǹ顑冮崝宥夊Φ閸曨垰鍐€闁靛⿵濡囧▓銈嗙節閳封偓閸曨剛顦伴梺鍝勭焿缂嶄線鐛Ο鍏煎枂闁告洦鍘归埀顒€锕娲偡閺夋寧些濡炪倖鍨甸ˇ鐢稿Υ娴e壊娼ㄩ柍褜鍓熼獮鍐閵堝懎绐涙繝鐢靛Т鐎氼厼鈻撻鍓х=闁稿本鑹鹃埀顒勵棑缁牊绗熼埀顒勩€侀弽顓炵闁挎洍鍋撶紒鐙€鍨堕弻銊╂偆閸屾稑顏� | More...
闂傚倸鍊峰ù鍥敋瑜忛幑銏ゅ箛椤旇棄搴婇梺褰掑亰閸犳帡宕戦幘鎰佹僵妞ゆ劑鍨圭粊顕€姊洪棃娑欘棞闁稿﹤顭烽獮鎴﹀礋椤掑倻鎳濆銈嗙墬绾板秴鈻嶆繝鍥ㄢ拻濞撴埃鍋撴繛浣冲洦鏅煫鍥ㄧ☉閻掑灚銇勯幒鎴濐仼闁藉啰鍠栭弻鏇㈠醇濠垫劖效闂佺ǹ顑冮崝宥夊Φ閸曨垰鍐€闁靛鍎崑鎾诲冀椤愮喎浜炬慨妯煎亾鐎氾拷婵犵數濮烽弫鎼佸磻閻愬搫鍨傞柛顐f礀缁犲綊鏌嶉崫鍕櫣闁稿被鍔戦弻锝夊箛闂堟稑鈷掑┑鐐茬墔缁瑩寮婚妸鈺傚亞闁稿本绋戦锟�闂傚倸鍊搁崐鐑芥嚄閸撲焦鍏滈柛顐f礀閻ょ偓绻濋棃娑卞剭闁逞屽厸閻掞妇鎹㈠┑瀣倞闁肩ǹ鐏氬▍鎾绘⒒娴e憡鍟炴繛璇х畵瀹曟粌鈽夐姀鈾€鎸冮梺鍛婃处閸忔稓鎹㈤崱娑欑厪闁割偅绻冮崳瑙勩亜韫囨挾鎽犲ǎ鍥э躬椤㈡洟顢楁担鍓蹭紦
闂傚倸鍊峰ù鍥敋瑜忛幑銏ゅ箛椤旇棄搴婇梺褰掑亰閸犳帡宕戦幘鎰佹僵妞ゆ劑鍨圭粊顕€姊洪棃娑欘棞闁稿﹤鐏濋悾閿嬬附缁嬪灝宓嗛梺缁樺姈椤旀牕危濞差亝鐓熼柣鏂挎憸閻苯顭胯椤ㄥ牓寮鈧獮鎺楀籍閳ь剟寮冲⿰鍫熺厵闁诡垱婢樿闂佺粯鎸鹃崰鎰板Φ閸曨垼鏁冩い鎰╁灩缁犺崵绱撴担鐤厡闁稿繑锕㈠濠氭晲婢舵ɑ鏅i梺缁樺姈缁佹挳骞愰崘顔解拺闁荤喐婢樺Σ缁樸亜閹存繍妯€闁绘侗鍣i獮瀣晝閳ь剛绮诲☉銏♀拻闁割偆鍠撻埊鏇㈡煕婵犲倿鍙勬慨濠勭帛閹峰懘鎼归獮搴撳亾婵犲洦鐓涢柛娑卞枤缁犵偤鏌曢崱鏇犲妽缂佺粯绻堝畷鍫曟嚋閸偅鐝﹂梻鍌欑閹测€趁洪敃鍌氬偍闁伙絽澶囬崑鎾愁潩椤撶偛鎽甸梺鍝勬湰閻╊垶鐛Ο渚富閻犲洩寮撴竟鏇㈡⒒娴e憡鎯堥柣顓烆樀楠炲繘鏁撻敓锟�
闂傚倸鍊搁崐椋庣矆娴h櫣绀婂┑鐘插€寸紓姘辨喐閺冨牄鈧線寮介鐐茶€垮┑锛勫仧缁垶寮悩缁樷拺闂侇偆鍋涢懟顖涙櫠椤斿浜滄い鎾跺仦閸嬨儳鈧娲滈幊鎾诲煡婢跺ň鏋庨柟閭﹀枛缁插潡姊婚崒娆戝妽闁诡喖鐖煎畷鎰板即閻忚缍婇幃婊堟寠婢跺矈鍞甸梺璇插嚱缂嶅棝宕伴弽顐や笉闁哄被鍎查悡娆徝归悡搴f憼婵炴嚪鍥ㄧ厵妞ゆ棁宕电粣鏃€鎱ㄦ繝鍛仩闁告牗鐗犲鎾偄閸濄儱绲垮┑锛勫亼閸婃垿宕硅ぐ鎺撴櫇妞ゅ繐鐗勯埀顑跨閳诲酣骞樺畷鍥舵Ч婵$偑鍊栭幐楣冨窗鎼淬劍鍋熷ù鐓庣摠閳锋垿鏌涘☉姗堟敾閻庡灚鐟╅弻宥堫檨闁告挾鍠庨锝嗙節濮橆厽娅㈤梺璺ㄥ櫐閹凤拷
婵犵數濮烽弫鍛婃叏娴兼潙鍨傜憸鐗堝笚閸婂爼鏌涢鐘插姎闁汇倗鍋撶换婵嬫濞戝崬鍓伴梺鍛婅壘缂嶅﹪鐛弽銊︾秶闁告挆鍚锋垶绻濆▓鍨仩闁靛牊鎮傚濠氭偄閻戞ê鏋傞梺鍛婃处閸嬪嫯顤傞梻鍌欑閹诧繝宕洪崘顔肩;闁瑰墽绮悡鐔煎箹濞n剙鈧倕岣块幇鐗堢厵妞ゆ棁鍋愰崺锝団偓瑙勬礃濞茬喖鐛惔銊﹀癄濠㈣泛鑻獮鎺楁⒒娴gǹ鎮戠紒浣规尦瀵彃饪伴崼婵囪緢濠电姴锕ら悧濠囨偂閺囩喆浜滈柟鏉垮閹偐绱掗悩绛硅€块柡灞剧☉椤繈顢橀悩鍐叉珰闂備浇顕栭崰娑綖婢跺瞼绠旈柣鏃傚帶閻愬﹦鎲稿鍥╀笉闁荤喖鍋婂〒濠氭煏閸繂鏆欏┑锛勬櫕缁辨帡顢欐總绋垮及濡ょ姷鍋涢ˇ顖濈亙闂佸憡渚楅崰妤€鈻嶉姀銈嗏拺閻犳亽鍔屽▍鎰版煙閸戙倖瀚�