黃貴林
(巢湖學(xué)院,安徽 巢湖 238000)
基于相同數(shù)據(jù)位的SoC測試數(shù)據(jù)壓縮方法
黃貴林
(巢湖學(xué)院,安徽 巢湖 238000)
隨著VLSI技術(shù)的不斷發(fā)展,集成電路所需的測試數(shù)據(jù)量也在不斷增加,給測試帶來了一系列問題,對自動測試設(shè)備(ATE)的存儲容量提出了挑戰(zhàn),有限的帶寬延長了測試數(shù)據(jù)傳輸時間。為此,提出了一種針對相同數(shù)據(jù)位的測試數(shù)據(jù)壓縮及解壓算法。數(shù)據(jù)位為全0或全1的數(shù)據(jù)塊,編碼壓縮為僅為兩位的控制位和編碼位,與同類經(jīng)典方案相比,實驗表明該方案有效提高了測試數(shù)據(jù)壓縮率,平均壓縮率達到63.58%,且編碼算法簡單。
數(shù)據(jù)塊;測試數(shù)據(jù);壓縮;無關(guān)位
“芯片內(nèi)集成的晶體管數(shù)目每18個月將增加一倍”[1],集成電路在按照摩爾定律這個規(guī)律在發(fā)展。工作頻率的提高和單個芯片的集成度的不斷提高,給測試提出新的要求,包括數(shù)量巨大的測試數(shù)據(jù)是測試首先需要解決的問題,并且呈不斷發(fā)展的態(tài)勢。與此同時,ATE的存儲容量有限和傳輸帶寬有限,使得測試成本也在不斷提高,也延長了測試時間,測試數(shù)據(jù)壓縮能在一定程度上解決上述問題。
目前經(jīng)典的測試數(shù)據(jù)壓縮方法有很多,總的來說可以分為三種[2]:編碼壓縮方法、基于廣播掃描的壓縮方法[3-4]、基于LFSR結(jié)構(gòu)的壓縮方法[5-6]。其中,編碼壓縮是一種廣泛使用的測試數(shù)據(jù)壓縮方案,根據(jù)數(shù)據(jù)塊與編碼位的一一對應(yīng)的關(guān)系對數(shù)據(jù)塊進行編碼壓縮,如:Golomb碼[7]、FDR碼[8]、ALT-FDR[9]、EFDR[10]、RL-HC[11]、9C[12]、BM[13]和交替與連續(xù)長度碼[14]等。哈弗曼[15-17]編碼也屬于編碼壓縮,它是一種高效的靜態(tài)編碼方法,所得到的平均編碼長度最短,但隨著參與編碼壓縮數(shù)據(jù)塊的增加,其解壓結(jié)構(gòu)復(fù)雜程度呈指數(shù)級增長,為此提出了SHC[18]、OSHC[19],它們都是基于Huffman的測試數(shù)據(jù)壓縮算法。OSHC和SHC將出現(xiàn)頻率高的數(shù)據(jù)塊進行Huffman編碼,出現(xiàn)頻率低的數(shù)據(jù)塊不參與Huffman編碼,并利用控制位和地址位進行共享編碼。
本文考慮測試集中大量存在的全0或全1數(shù)據(jù)塊,充分發(fā)掘測試集當(dāng)中具有這種特性的數(shù)據(jù)塊,能夠?qū)⑵渚幋a為長度只有兩位的控制位和控制位。測試集當(dāng)中存在的大量無關(guān)位,可以隨意填充,大量數(shù)據(jù)塊可以填充為全0數(shù)據(jù)塊或全1數(shù)據(jù)塊,為本文方案的使用提供了理論依據(jù)。
2.1 相同數(shù)據(jù)位
定義:對于每個集成電路的測試集,是由若干條測試向量構(gòu)成,每條測試向量,是由若干測試位構(gòu)成,而且每條測試向量的位數(shù)相同。測試集包含若干條測試向量,每條測試向量擁有大量的無關(guān)位x,在實際測試時,該無關(guān)位可以設(shè)定為0,也可以設(shè)定為1。除了無關(guān)位x,其他測試位均由由0或者1組成,而且1和0的分布具有連續(xù)分布的特點。測試向量當(dāng)中,存在大量的連續(xù)的0,或者連續(xù)的1,這些連續(xù)的0或1,稱為相同數(shù)據(jù)位。另外,無關(guān)位x可以設(shè)定為0或者1,提高了相同數(shù)據(jù)位的存在的可能性,提高了后續(xù)編碼效率。
2.2 編碼方法
設(shè)定變量數(shù)據(jù)塊長度bl,按照bl將測試集劃分成bl個長度相同的數(shù)據(jù)塊。在劃分的過程當(dāng)中,測試向量可能出現(xiàn)不能等長劃分的情況,最后一個數(shù)據(jù)塊長度可能小于bl,為此在測試向量即最后一個數(shù)據(jù)塊末尾添加若干個無關(guān)位X,使劃分得到的數(shù)據(jù)塊等長。壓縮是以數(shù)據(jù)塊為單位進行壓縮的,每一個數(shù)據(jù)塊壓縮后是由兩個部分構(gòu)成的,壓縮后的數(shù)據(jù)分為兩個部分控制位和編碼位。控制位為1位,編碼位為1,或為0,或為原始測試數(shù)據(jù)塊。
(1)劃分數(shù)據(jù)塊。
(2)填充無關(guān)位。
如果數(shù)據(jù)塊當(dāng)中,只含有1和無關(guān)位x,則將其填充為1;
如果數(shù)據(jù)塊當(dāng)中,只含有0和無關(guān)位x,則將其填充為0;
如果數(shù)據(jù)塊當(dāng)中,既含有0,也含有1,對于數(shù)據(jù)塊當(dāng)中的x,可填充為1,也可填充為0;
(3)編碼,壓縮數(shù)據(jù)塊,編碼得到數(shù)據(jù)控制位和編碼位。
填充得到的數(shù)據(jù)塊當(dāng)中,只有1或者0。
如果數(shù)據(jù)塊為全0數(shù)據(jù)塊,則編碼壓縮得到的數(shù)據(jù)為00,第一個0為控制位,第二個0為編碼位,表示全0數(shù)據(jù)塊;
如果數(shù)據(jù)塊為全1數(shù)據(jù)塊,則編碼壓縮得到的數(shù)據(jù)為01,第一個0為控制位,第二個1為編碼位,表示全1數(shù)據(jù)塊;
如果數(shù)據(jù)塊為非全0或非全1數(shù)據(jù)塊,則編碼壓縮得到的數(shù)據(jù)為控制位1+原始數(shù)據(jù)塊;
2.3 編碼算法
pattern_number和pattern_length分別為測試集的測試向量個數(shù)和測試向量長度。
將每條測試向量,劃分成bn個數(shù)據(jù)塊,且長度相等為bl。
bn=(pattern_length+bl-1)/bl。
bit[i][j][k]為第i(0≤i≤pattern_number-1)個測試向量的第j(0≤j≤bn-1)個數(shù)據(jù)塊的第k(0≤k≤bl-1)位。
(1)初始化i=0;
(2)初始化j=0;
(3)初始化k=0;
(4)for(i=0;i<pattern_number;i++)
(5)for(j=0;j<bn;j++)
(6){
(7) for(k=0;k<bl;k++)
(8) 如果bit[i][j][k]為全0,則數(shù)據(jù)塊bit[i][j]壓縮為00;
(9) for(k=0;k<bl;k++)
(10) 如果bit[i][j][k]為全1,則數(shù)據(jù)塊bit[i][j]壓縮為01;
(11)否則,則數(shù)據(jù)塊bit[i][j]壓縮為1+數(shù)據(jù)塊bit[i][j];
(12)}
2.4 編碼實例
對于實例測試向量,將其劃分成如表1所示的等長的長度為6的7個數(shù)據(jù)塊,其中x為無關(guān)位,在測試過程中,可以將其設(shè)定為1或為0。數(shù)據(jù)塊0000xx,可以設(shè)定為全0數(shù)據(jù)塊,數(shù)據(jù)塊1xx111,可以設(shè)定為全1數(shù)據(jù)塊。對于全0數(shù)據(jù)塊或全1數(shù)據(jù)塊,可以將其壓縮為控制位0和編碼位0或者1。因此數(shù)據(jù)塊0000xx壓縮為00,1xx111壓縮為01。同理,數(shù)據(jù)塊111111、數(shù)據(jù)塊000000,編碼位為01、00,壓縮后的數(shù)據(jù)由控制位和編碼位構(gòu)成。
對于數(shù)據(jù)塊010101、數(shù)據(jù)塊01x10x為非全0或全1數(shù)據(jù)塊,不能按照上述情況進行壓縮,采用特殊方法進行處理,得到控制位置1,編碼位為被壓縮數(shù)據(jù)塊本身。
綜上所述,測試向量0000xx1xx11111111100 000010101001010101x10x,壓縮為0001010011010101010101101x10x,由42位壓縮為29,其中x可為1,也可為0。
表1 編碼實例
本方案的解壓體系結(jié)構(gòu)主要是由FSM和計數(shù)器構(gòu)成,如圖1所示,‘enb’是輸入使能信號,‘data_in’接收壓縮后的測試數(shù)據(jù)。‘flag’為MUX的通道選擇信號?!甦cr’用于計數(shù)器減1,‘rt’用于指示計數(shù)器的復(fù)位0狀態(tài),計數(shù)器計數(shù)范圍為編碼數(shù)據(jù)塊長度。
圖1 測試解壓結(jié)構(gòu)
(1)若‘data_in’為低,解壓全0或全1數(shù)據(jù)塊壓縮數(shù)據(jù)。則‘enb’為高,則‘flag’為低,‘flag’選通data_in當(dāng)中的數(shù)據(jù)進入MUX,解碼得到全0或全1數(shù)據(jù)塊第1個測試數(shù)據(jù)位,進入被測電路。然后,‘flag’為高,‘flag’選通data_out當(dāng)中的數(shù)據(jù)0或1進入MUX,繼續(xù)成為data_out,獲得與第1個數(shù)據(jù)位相同的后續(xù)測試數(shù)據(jù)位。data_out當(dāng)中的測試位,反復(fù)作為MUX的輸入。直至‘rt’為高,‘enb’為低,解碼獲得整個數(shù)據(jù)塊的全0或全1測試數(shù)據(jù)位。
(2)若‘data_in’為高,解壓非全0或全1數(shù)據(jù)塊壓縮數(shù)據(jù)。則‘enb’為高,則‘flag’為低,‘flag’選通data_in當(dāng)中的數(shù)據(jù)進入MUX,解碼得到非全0或全1數(shù)據(jù)塊第1個測試數(shù)據(jù)位,進入被測電路。然后,‘flag’繼續(xù)為低,‘flag’ 繼續(xù)選通data_in當(dāng)中的數(shù)據(jù)進入MUX,獲得非全0或全1數(shù)據(jù)塊的后續(xù)數(shù)據(jù)位。直至‘rt’為高,‘enb’為低,解碼得到整個非全0或全1數(shù)據(jù)塊。
與圖1所示FSM相對應(yīng)的有限狀態(tài)機的狀態(tài)轉(zhuǎn)換圖,如圖2所示,它包含S0、S1、S2、S3等4個狀態(tài)。S0~S1是接受控制位,S1~S2是接受編碼位,S2的循環(huán)是得到與編碼位相同的數(shù)據(jù)塊后續(xù)測試位。S0~S3是接受控制位,S3的循環(huán)是從data_in中直接接收數(shù)據(jù)塊后續(xù)測試位,作為解壓得到的測試位。
圖2FSM狀態(tài)轉(zhuǎn)換圖
為客觀說明本文算法的實踐意義,采用Visual C++作為實驗工具, 選用并壓縮6個ISCAS’89標準電路的測試集。實驗結(jié)果如表2所示,表中所有數(shù)據(jù)都為壓縮率,第12列為采用本文方案的壓縮效果,并與BM、9C、RL-HC、EFDR、ALT-FDR、FDR、GOLOMB、VIHC、SHC、OSHC等經(jīng)典壓縮方案進行對比。第8行、第12列為平均壓縮率63.58%,都高于其他絕大數(shù)方案的壓縮率。
表2 實驗結(jié)果
本文利用測試集當(dāng)中大量存在連續(xù)的測試位0或者大量存在的連續(xù)的測試位1這種特征。將其壓縮成一位控制位和一位測試位,為本文方案壓縮奠定了重要基礎(chǔ)和提供了可能。與同類方案相比,具有較高的測試數(shù)據(jù)壓縮率,且壓縮的對象為定長的測試數(shù)據(jù)塊,在一定程度上,簡化了測試過程中的數(shù)據(jù)解壓過程。
[1]MOORE G.Progress in digital integrated electronics[C].Proceedings of International Electron Device Meeting(IEDM)Teeh.Digest,1975:11-13.
[2]TOUBA N A.Survey of test vector compression techniques[J].IEEE Des.Test Comput.,2006,(4):294-303.
[3]MITRA S,Kim K S.XPAND:An efficient test stimulus compression technique[J].IEEE Trans.Compute rs,2006,(2):163-173.
[4]俞洋,彭喜元,張毅剛.基于重復(fù)子向量的測試數(shù)據(jù)壓縮算法[J].儀器儀表學(xué)報,2009,(2):356-361.
[5]KOENEMANN B.LFSR-coded test patterns for scan designs[C].Proceedings of European Test Conference,Munich,Germany,1991:237-242.
[6]YI M X,LIANG H G,ZHAN K H,et al.Optimal LFSR-Coding test data compression based on test cube dividing[C].Proceeding of International Conference on Computational Science and Engineering(CSE 2009),2009:698-702.
[7]ANSHUMAN C,KRISHNENDU C.Test data compression and decompression based on internal scan chains and golomb coding[J].IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems,2002,(6):715-722.
[8]ANSHUMAN C,KRISHNENDU C.Test data compression and test resource partitioning for system-on-a-chip using fre-quency-directed run-length(FDR)codes[J].IEEE Transactions on Computers,2003,(8):1076-1088.
[9]CHANDRA A,CHAKRABARTY K.A unified approach to reduce SoC test data volume,scan power and testing time[J].IEEE Trans.Computer-Aided Design Integrated Circuits Syst.,2003,(3):352-363.
[10]El-MALEH A H,Al-ABAJI R H.Extended frequency-directed run length code with improved application to system-ona-chip test data compression[C].in Proc.9th IEEE Int.Conf.Electron.,Circuits Syst.,2002:449-452.
[11]NOURANI M,TEHRANIPOUR M.RL-Huffman encoding for test compression and power reduction in scan application[J].ACM Trans.Des.Autom.Electron.Syst.,2005,(1):91-115.
[12]TEHRANIPOOR M,NOURANI M K.Nine-Coded compression technique for testing embeddedCores in SoCs[J].IEEE Trans.VLSI Systems,2005,(6):719-731.
[13]El-MALEH A H.Efficient test compression technique based on block merging[J].IET Comput.Digit.Tech.,2008,(5):327-335.
[14]梁華國,蔣翠云.基于交替與連續(xù)長度碼的有效測試數(shù)據(jù)壓縮和解壓[J].計算機學(xué)報,2004,(4):549-554.
[15]GONCIARI P T,Al-HASHIMI B,NICOLICI N.Improving compression ratio,area overhead,and test application time for system-on-a-chip test data compression/decompression[C].in Proc.Design Automation Test in Europe,Paris,France,2002: 604-611.
[16]歐陽一鳴,鄒寶升,梁華國,等.基于部分游程翻轉(zhuǎn)的SoC測試數(shù)據(jù)壓縮[J].電子測量與儀器學(xué)報,2010,(1):23-28.
[18]JAS A,GHOSH-DASTIDAR J,NG M E,et al.An efficient test vector compression scheme using selective huffman coding[J].IEEE Trans.Computer-Aided Design of Integrated Circuits and Systems,2003,(6):797-806.
[19]KAVOUSIANOS X,KALLIGEROS E,NIKOLOS D.Optimal selective huffman coding for test-data compression[J].IEEE Trans.Computers,2007,(8):1146-1152.
A STUDY ON THE TEST DATA COMPRESSION METHODS OF SYSTEM-ON-CHIP(SOC)BASED ON THE SAME TEST DATA BITS
HUANG Gui-lin
(Chaohu College,Chaohu Anhui 238000)
With the continuous development of very large scale integration(VLSI),the amount of test data required by integrated circuits is increasing,which causes a series of problems to test,and brings great challenges to the storage capacity of automatic test equipment(ATE).The limited bandwidth of ATE lengthens the transmission time of test data.Therefore,a new algorithm of test data compression/decompression is proposed based on the same bits of test data.For the data block whose data bits are all 1 or 0,the code is compressed into only two-bit control bit and two-bit encoding bit.Compared with the other classical ways,the experimental results shows that this way effectively improved the compression ratio whose average ratio increases by 63.58%,and the encoding algorithm is simpler.
Data block;Test data;Compression;Independent bit
TP302
A
1672-2868(2016)06-0015-05
責(zé)任編輯:楊松水 校對:陳 侃
2016-10-08
巢湖學(xué)院校級科研資助項目(項目編號:XLY-201409);安徽省省級教學(xué)研究項目(項目編號:2014jyxm331);安徽省省級特色專業(yè)計算機科學(xué)與技術(shù)省級特色專業(yè)(項目編號:2013tszy020);安徽省高校省級教學(xué)團隊(項目編號:2016jxtd083)
黃貴林(1985-),男,安徽望江人。巢湖學(xué)院信息工程學(xué)院,助教。研究方向:片上系統(tǒng)與片上網(wǎng)絡(luò)的綜合與測試。