本發(fā)明涉及一種集成電路測試技術,更具體涉及一種集成電路測試中的數據存儲技術。
背景技術:
隨著集成電路的發(fā)展,如何處理越來越龐大的測試數據已成為集成電路測試的關鍵難題之一。根據itrs在2010年的報告數據,測試一個芯片,在2009年,僅僅需要85個測試模式數,也只需要壓縮比為80;而到2019年,對測試模式數的要求則需要達到20370個,對壓縮比的要求則需要達到12000。僅僅十年,模式數增加到240倍,壓縮比增加到150倍。
關于減少測試數據量的研究,一直是研究的熱點,主要可以分為三類:測試集壓縮(testsetcompaction)方法、內建自測試(built-inself-test,bist)方法和靜態(tài)編碼壓縮方法。(1)測試集壓縮方法。其特點是確保在不降低故障覆蓋率的情況下,有選擇性嘗試使用不同的敏化路徑,通過算法調整測試立方體(testtubes)中無關位(don’tcarebits)的位置,或者將相容的兩個或多個測試向量合并成單一測試向量的方法來減少總的測試向量的個數,以期達到測試集最小化或最優(yōu)化。其優(yōu)勢是所有工作由軟件實現,不會增加額外的硬件成本。但其缺點也非常明顯,測試向量的個數的減少造成了對非模型故障的覆蓋率的降低。本方法另一缺點是壓縮后測試集的測試數據量仍然非常龐大,很難一次性完全直接存儲在ate的存儲器中。因此,需要與其它方法結合使用。(2)內建自測試方法。其在被測電路中新增一部分電路,該電路專門用于測試,能夠完成測試模式生成、測試控制、測試調度和測試結果分析,這樣可以不依賴外部的自動測試設備獨立進行測試。能夠通過減少昂貴的自動測試設備的成本費來達到節(jié)約測試成本的目的,還可以支持測試重用和全速測試。其缺點在生成測試模式時,產生了大量的對測試毫無貢獻的測試模式,既增加了測試功耗,又浪費了測試時間;另外,有部分未設計bist方法的ip核也限制其應用。(3)靜態(tài)編碼壓縮方法。其通過編碼技術用一個較小的測試集te去編碼測試集td,將存儲和傳輸時對td的操作變換成對te的操作,即存儲te在ate的存儲器中,測試時,也僅傳輸te而不是td到被測芯片,最終te到td的還原由被測芯片上的解壓電路來完成。靜態(tài)編碼方法采用的是無損壓縮方法,還原后的測試集的確定位跟原始測試集的確定位完全一一對應,還原后的無關位都被程序填充成了特定的值,因此其只會增加而不會降低被測電路的故障覆蓋率。該方法的另一優(yōu)勢是可以不需要提供被測電路的內部結構,能夠很好地保護ip核的知識產權。因此,該技術在集成電路測試領域中得到了廣泛應用。當前比較成熟的編碼有很多,如golomb編碼、fdr碼、vihc碼、交替連續(xù)碼、variable-tail碼、混合游程碼、svic碼、變游程碼、efdr、mfvlc、mfvrcvb、afdr、共游程碼和整數存儲無理數的方法等。
在靜態(tài)編碼壓縮方法中,利用整數存儲無理數的方法,理論上可以將整個測試集轉換成若干個整數表示的無理數存儲。該方法的優(yōu)勢是不需要直接存儲代碼字,而是存儲代碼字的規(guī)律。其缺點是如果期望其壓縮效果好,無理數所表示的測試數據量就比較大,可能是若干個測試向量,甚至是整個測試集,此時無理數對應的整數表示就比較大。一方面,該大整數在存儲時占用較大的空間;另一方面,在測試數據解壓過程中,大整數給數據運算帶來了復雜性,有時甚至不能直接運算。
技術實現要素:
本發(fā)明所要解決的技術問題在于提供了一種針對提高測試效率、占用空間較小并且運算簡單的二分區(qū)間的壓縮數據進行解壓的電路和解壓的方法。
本發(fā)明是通過以下技術方案解決上述技術問題的:一種二分區(qū)間法的集成電路數據解壓電路,包含3個寄存器a、寄存器b和寄存器c的寄存器組、1個計數器、第一三態(tài)門t1、第二三態(tài)門t2、1個加法器和1個控制器;
第一三態(tài)門t1和第二三態(tài)門t2的輸入端連接,寄存器c的輸出端連接到第一三態(tài)門t1和第二三態(tài)門t2的輸入端。第一三態(tài)門t1的輸出端連接到寄存器b的輸入端,第二三態(tài)門t2的輸出端連接到寄存器a的輸入端,第一三態(tài)門t1和第二三態(tài)門t2的控制端連接到控制器的第一信號端c1,寄存器a和寄存器b的輸出端連接到加法器,加法器的輸出端連接到寄存器c,寄存器c的輸出端連接到計數器,計數器的輸出端作為解壓電路的輸出端。寄存器c的置位端和移位端分別連接到控制器的第三信號端c3和第四信號端c4,控制器的第二信號端c2作為解壓電路的輸入端;
控制器的第二信號端c2輸入需要解壓的數據,解壓以后的數據從寄存器輸出。
具體的,加法器采用超前進位加法器構成。
所述解壓電路對數據進行解壓的方法包括下述步驟:
步驟1:初始化,寄存器a和寄存器b分別置為數據“0”和“1”,寄存器a和寄存器b完成累加移位運算得到0.5,此時寄存器c的值為0.5;
步驟2:控制器的第二信號端c2自壓縮數據的第一位開始依次輸入壓縮數據,輸入壓縮數據的相應位為1時,控制器c1為高電平,控制器c1控制第二三態(tài)門t2,將寄存器c的值直接傳輸到寄存器a,輸入壓縮數據的相應位為0時,控制器c1為低電平,控制器c1控制第一三態(tài)門t1,將寄存器c的值直接傳輸到寄存器b,重復上述加法以及移位計算,寄存器c的值更新,最終更新數值為0.y1y2……yn,0.y1y2……yn屬于區(qū)間(0,1);
步驟3:將寄存器c的最終更新數值移位到計數器,統(tǒng)計壓縮前數據的游程長度依次為y1、y2、……yn,yn表示為第n個測試向量的游程長度,n為正整數,按游程長度編碼輸出即可得到解壓以后的數據。
所述壓縮數據的壓縮方法包括:
步驟21:統(tǒng)計原始測試數據的游程長度y1、y2、……,yn,其中,yn表示為第n個測試向量的游程長度,n為正整數,將該測試向量按0類型游程統(tǒng)計游程長度,直到無關位結束;
步驟22:轉化成小數,默認小數的整數部分為0,步驟1所統(tǒng)計的游程長度依次組成小數部分,轉化的小數為0.y1y2……yn,0.y1y2……yn屬于區(qū)間(0,1);
步驟23:初始化區(qū)間和原始編碼,記t0=0,t1=1,原始編碼為空;
步驟24:二分區(qū)間,令
本發(fā)明還公開了一種使用上述的二分區(qū)間法的集成電路數據解壓電路進行解壓的方法,包括下述步驟:
步驟1:初始化,寄存器a和寄存器b分別置為數據“0”和“1”,寄存器a和寄存器b完成累加移位運算得到0.5,此時寄存器c的值為0.5;
步驟2:控制器的第二信號端c2自壓縮數據的第一位開始依次輸入壓縮數據,輸入壓縮數據的相應位為1時,控制器c1為高電平,控制器c1控制第二三態(tài)門t2,將寄存器c的值直接傳輸到寄存器a,輸入壓縮數據的相應位為0時,控制器c1為低電平,控制器c1控制第一三態(tài)門t1,將寄存器c的值直接傳輸到寄存器b,重復上述加法以及移位計算,寄存器c的值更新,最終更新數值為0.y1y2……yn,0.y1y2……yn屬于區(qū)間(0,1);
步驟3:將寄存器c的最終更新數值移位到計數器,統(tǒng)計壓縮前數據的游程長度依次為y1、y2、……yn,yn表示為第n個測試向量的游程長度,n為正整數,按游程長度編碼輸出即可得到解壓以后的數據。
具體的,加法器采用超前進位加法器構成。
其中,所述壓縮數據的壓縮方法包括:
步驟21:統(tǒng)計原始測試數據的游程長度y1、y2、……,yn,其中,yn表示為第n個測試向量的游程長度,n為正整數,將該測試向量按0類型游程統(tǒng)計游程長度,直到無關位結束;
步驟22:轉化成小數,默認小數的整數部分為0,步驟1所統(tǒng)計的游程長度依次組成小數部分,轉化的小數為0.y1y2……yn,0.y1y2……yn屬于區(qū)間(0,1);
步驟23:初始化區(qū)間和原始編碼,記t0=0,t1=1,原始編碼為空;
步驟24:二分區(qū)間,令
本發(fā)明相比現有技術具有以下優(yōu)點:對二分區(qū)間的壓縮數據進行解壓,解壓方法簡單,所用器件簡單,提高了整個集成電路的測試效率,極大減少了數據的占用空間。
附圖說明
圖1是本發(fā)明的解壓電路結構圖;
圖2是本發(fā)明實施例中產生進位鏈ci的電路圖;
圖3是本發(fā)明實施例中的解壓過程圖例。
具體實施方式
下面對本發(fā)明的實施例作詳細說明,本實施例在以本發(fā)明技術方案為前提下進行實施,給出了詳細的實施方式和具體的操作過程,但本發(fā)明的保護范圍不限于下述的實施例。
發(fā)明克服現有技術的不足,本申請人提供了一種二分區(qū)間的測試數據壓縮方法,可以將若干個測試向量甚至整個測試集映射到區(qū)間(0,1),再通過多次二分區(qū)間的方法找到該位置,存儲該二分區(qū)間的規(guī)律即可存儲該若干個測試向量甚至整個測試集。
具體步驟為:
步驟1:統(tǒng)計原始測試數據的游程長度y1、y2、……,yn,其中,yn表示為第n個測試向量的游程長度,n為正整數,將該測試向量按0類型游程統(tǒng)計游程長度,直到無關位結束,若無關位與前一游程可以組成同一游程,舍棄最后一游程長度,只記前若干游程長度;否則記前所有游程長度。
若無關位與前一游程可以組成同一游程,舍棄最后一游程長度,只記前若干游程長度;否則記前所有游程長度。以0000100110xxx為例,前三個游程是確定的,是4、2、0,后面一個游程可以3,即最后4位是0001;如對于0000100101xxx,前3個游程分別是4、2和1,后面的無關位不能直接與前一游程拼成同一游程,此時只記前3個游程。此過程主要是將無關位盡可能的往前一游程填充。
不失一般性,設原始測試數據為:00000001000100001000100000001000001,則游程長度分別為7、3、4、3、7和5;
步驟2:轉化成小數,默認小數的整數部分為0,步驟1所統(tǒng)計的游程長度依次組成小數部分,轉化的小數為0.y1y2……yn,0.y1y2……yn屬于區(qū)間(0,1),如步驟1所統(tǒng)計的游程長度依次為7、3、4、3、7和5,轉化后的小數為0.734375,記為t,有t∈(0,1);
步驟3:初始化區(qū)間和原始編碼,記t0=0,t1=1,原始編碼為空;
步驟4:二分區(qū)間,令
從上面可以看出原始的測試數據為00000001000100001000100000001000001,壓縮后的數據為101110,壓縮前35位,壓縮后6位。
通過以上壓縮方法,提高了測試效率,由于將若干個測試向量甚至整個測試集映射到區(qū)間(0,1),再通過多次二分區(qū)間的方法找到該位置,存儲該二分區(qū)間的規(guī)律即可存儲該若干個測試向量甚至整個測試集,占用空間較小,并且運算簡單,非常實用。
本發(fā)明提供一種解壓上述數據的電路以及解壓方法。
解壓電路如圖1所示,包含3個寄存器a、寄存器b和寄存器c的寄存器組、1個計數器、第一三態(tài)門t1、第二三態(tài)門t2、1個加法器和1個控制器。
第一三態(tài)門t1和第二三態(tài)門t2的輸入端連接,寄存器c的輸出端連接到第一三態(tài)門t1和第二三態(tài)門t2的輸入端。第一三態(tài)門t1的輸出端連接到寄存器b的輸入端,第二三態(tài)門t2的輸出端連接到寄存器a的輸入端,第一三態(tài)門t1和第二三態(tài)門t2的控制端連接到控制器的第一信號端c1,寄存器a和寄存器b的輸出端連接到加法器,加法器的輸出端連接到寄存器c,寄存器c的輸出端連接到計數器,計數器的輸出端作為解壓電路的輸出端。寄存器c的置位端和移位端分別連接到控制器的第三信號端c3和第四信號端c4,控制器的第二信號端c2作為解壓電路的輸入端。
控制器的第二信號端c2輸入需要解壓的數據,解壓以后的數據從寄存器輸出??刂破鞯牡谝恍盘柖薱1控制寄存器a和寄存器b,控制器的第三信號端c3和第四信號端c4分別控制寄存器c的置位和移位。
加法器采用超前進位加法器構成,加法運算可以在一個時鐘內完成。由于除以2的運算可以轉化為向右移位運算完成,通過第四信號端c4控制寄存器c完成向右移位運算即可達到除以2的運算。
需要指出的是,加法器采用超前進位加法器,對于一位加法器可以用如下邏輯函數表示:
ci=pi+qici-1si=aibici(1)
其中,ai、bi為兩個加數,si表示和,ci-1表示來自低位的進位,ci表示向高位的進位。pi=aibi為進位生成函數,qi=ai+bi為進位傳送函數,i為加法器的位數。
從上式可以看出最高位的運算必須等到低位的所有位運算結束后才是有效的。即運算的延遲主要是由于進位延遲所引起的,為了提高運算速度,必須盡量減少由于進位信號逐級傳遞所耗費的時間。所以最好能在加法運算一開始就得到高位的進位輸入信號。
分析(1)式發(fā)現,只要aibi=1,即pi=1,就會產生向第i位的進位;只要ai+bi=1,即qi=1,就會把第ci-1傳遞到第i位。如果我們把ci的等式展開,就會得到:
ci=pi+qipi-1+qiqi-1pi-2+qiqi-1qi-2pi-3+…+qiqi-1qi-2…q2p1+qiqi-1qi-2…q2q1c0(2)
使用(2)式來產生所有進位的加法器稱為超前進位加法器,其對應的進位ci的實現電路如圖2所示。超前進位加法器相對于串行進位加法器,大大縮短了延遲時間,超前進位加法器只需五級門延遲,這樣就可以確保加法運算能在一個時鐘周期內完成工作,可以采用如74ls283的超前進位加法器。
使用上述解壓電路對數據進行解壓的方法包括下述步驟:
步驟1:初始化,寄存器a和寄存器b分別置為數據“0”和“1”,寄存器a和寄存器b完成累加移位運算得到0.5,此時寄存器c的值為0.5;
步驟2:控制器的第二信號端c2自壓縮數據的第一位開始依次輸入壓縮數據,輸入壓縮數據的相應位為1時,控制器c1為高電平,控制器c1控制第二三態(tài)門t2,將寄存器c的值直接傳輸到寄存器a,輸入壓縮數據的相應位為0時,控制器c1為低電平,控制器c1控制第一三態(tài)門t1,將寄存器c的值直接傳輸到寄存器b,重復上述加法以及移位計算,寄存器c的值更新,最終更新數值為0.y1y2……yn,0.y1y2……yn屬于區(qū)間(0,1);
步驟3:將寄存器c的最終更新數值移位到計數器,統(tǒng)計壓縮前數據的游程長度依次為y1、y2、……yn,yn表示為第n個測試向量的游程長度,n為正整數,按游程長度編碼輸出即可得到解壓以后的數據。
以壓縮后的數據101110為例說明本電路結構的工作原理。
初始時寄存器a和寄存器b分別置為數據“0”和“1”,寄存器a和寄存器b完成累加移位運算得到0.5,此時寄存器c的值為0.5。輸入信號input第一位為1到c2,控制器c1為高電平,控制器通過三態(tài)門t2將寄存器c的值直接傳輸到寄存器a,寄存器a的值更新為0.5,如圖3中t1。重復加法和移位運算,寄存器c的值為0.75,如圖3中t2,輸入信號input第二位為0到c2,控制器c1為低電平,控制器通過三態(tài)門t1將寄存器c的值直接傳輸到寄存器b,寄存器b的值更新為0.75。重復加法和移位運算,寄存器c的值為0.625,如圖3中t3,輸入信號input第二位為1到c2,控制器c1為低電平,控制器通過三態(tài)門t2將寄存器c的值直接傳輸到寄存器a,寄存器b的值更新為0.625。一直重復此過程,寄存器c的值分別更新為t4,t5,t6。由寄存器c的值即可得到原始測試數據的數據流的順序依次為7、3、4、3、7、5。將該數值移位到計數器,按游程長度編碼輸出即可得到00000001000100001000100000001000001。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發(fā)明的保護范圍之內。