本發(fā)明涉及一種集成電路測試技術(shù),更具體涉及一種集成電路測試中的數(shù)據(jù)存儲技術(shù)。
背景技術(shù):
隨著集成電路的發(fā)展,如何處理越來越龐大的測試數(shù)據(jù)已成為集成電路測試的關(guān)鍵難題之一。根據(jù)itrs在2010年的報告數(shù)據(jù),測試一個芯片,在2009年,僅僅需要85個測試模式數(shù),也只需要壓縮比為80;而到2019年,對測試模式數(shù)的要求則需要達到20370個,對壓縮比的要求則需要達到12000。僅僅十年,模式數(shù)增加到240倍,壓縮比增加到150倍。
關(guān)于減少測試數(shù)據(jù)量的研究,一直是研究的熱點,主要可以分為三類:測試集壓縮(testsetcompaction)方法、內(nèi)建自測試(built-inself-test,bist)方法和靜態(tài)編碼壓縮方法。(1)測試集壓縮方法。其特點是確保在不降低故障覆蓋率的情況下,有選擇性嘗試使用不同的敏化路徑,通過算法調(diào)整測試立方體(testtubes)中無關(guān)位(don’tcarebits)的位置,或者將相容的兩個或多個測試向量合并成單一測試向量的方法來減少總的測試向量的個數(shù),以期達到測試集最小化或最優(yōu)化。其優(yōu)勢是所有工作由軟件實現(xiàn),不會增加額外的硬件成本。但其缺點也非常明顯,測試向量的個數(shù)的減少造成了對非模型故障的覆蓋率的降低。本方法另一缺點是壓縮后測試集的測試數(shù)據(jù)量仍然非常龐大,很難一次性完全直接存儲在ate(自動測試機)的存儲器中。因此,需要與其它方法結(jié)合使用。(2)內(nèi)建自測試方法。其在被測電路中新增一部分電路,該電路專門用于測試,能夠完成測試模式生成、測試控制、測試調(diào)度和測試結(jié)果分析,這樣可以不依賴外部的自動測試設(shè)備獨立進行測試。能夠通過減少昂貴的自動測試設(shè)備的成本費來達到節(jié)約測試成本的目的,還可以支持測試重用和全速測試。其缺點在生成測試模式時,產(chǎn)生了大量的對測試毫無貢獻的測試模式,既增加了測試功耗,又浪費了測試時間;另外,有部分未設(shè)計bist方法的ip核也限制其應(yīng)用。(3)靜態(tài)編碼壓縮方法。其通過編碼技術(shù)用一個較小的測試集te去編碼測試集td,將存儲和傳輸時對td的操作變換成對te的操作,即存儲te在ate的存儲器中,測試時,也僅傳輸te而不是td到被測芯片,最終te到td的還原由被測芯片上的解壓電路來完成。靜態(tài)編碼方法采用的是無損壓縮方法,還原后的測試集的確定位跟原始測試集的確定位完全一一對應(yīng),還原后的無關(guān)位都被程序填充成了特定的值,因此其只會增加而不會降低被測電路的故障覆蓋率。該方法的另一優(yōu)勢是可以不需要提供被測電路的內(nèi)部結(jié)構(gòu),能夠很好地保護ip核的知識產(chǎn)權(quán)。因此,該技術(shù)在集成電路測試領(lǐng)域中得到了廣泛應(yīng)用。當(dāng)前比較成熟的編碼有很多,如golomb編碼、fdr碼、vihc碼、交替連續(xù)碼、variable-tail碼、混合游程碼、svic碼、變游程碼、efdr、mfvlc、mfvrcvb、afdr、共游程碼和整數(shù)存儲無理數(shù)的方法等。
上述三類方法均存在缺點。測試集壓縮方法的目標(biāo)是追求測試集的最小化,但該問題是np完全問題(np的英文全稱是non-deterministicpolynomial的問題,即多項式復(fù)雜程度的非確定性問題)。另一方面,其非模型故障的故障覆蓋率會受到影響,測試集壓縮后的測試集的數(shù)據(jù)量仍然非常大,并不能直接存儲和傳輸,還需要進一步壓縮。
由于測試時通常存在著抗隨機故障(randomresistantfault,rrf),故內(nèi)建自測試方法存在故障覆蓋率不高、測試序列較長的弊端。雖然可以通過加權(quán)或采用混合模式等方法來進一步提高測試效率,但隨著電路規(guī)模的擴大,rrf的增多,所需要的硬件開銷將顯著增加。
靜態(tài)編碼壓縮方法中,由于在cut(circuitundertest,待測電路)與ate(automatictestequipmen,自動測試設(shè)備)之間數(shù)據(jù)傳輸存在著信號難以同步的缺點,不解決好同步問題,將會嚴重影響測試效率,改進通訊方式,又將會增加通訊協(xié)議的復(fù)雜性。另外,基于編碼的測試數(shù)據(jù)壓縮技術(shù)對多掃描鏈結(jié)構(gòu)并不能很好的相容,需要對每一條掃描鏈都提供一個獨立的解壓電路才能使解壓效率最高。
正是由于這些原因,對靜態(tài)編碼壓縮方法的研究僅停留在學(xué)術(shù)界,到目前為止還沒有實用的相關(guān)eda(electronicsdesignautomation,電子設(shè)計自動化)工具出現(xiàn)。
在靜態(tài)編碼壓縮方法中,利用整數(shù)存儲無理數(shù)的方法,理論上可以將整個測試集轉(zhuǎn)換成若干個整數(shù)表示的無理數(shù)存儲。該方法的優(yōu)勢是不需要直接存儲代碼字,而是存儲代碼字的規(guī)律。其缺點是如果期望其壓縮效果好,無理數(shù)所表示的測試數(shù)據(jù)量就比較大,可能是若干個測試向量,甚至是整個測試集,此時無理數(shù)對應(yīng)的整數(shù)表示就比較大。一方面,該大整數(shù)在存儲時占用較大的空間;另一方面,在測試數(shù)據(jù)解壓過程中,大整數(shù)給數(shù)據(jù)運算帶來了復(fù)雜性,有時甚至不能直接運算。
技術(shù)實現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題在于提供了一種提高測試效率、占用空間較小并且運算簡單的二分區(qū)間的數(shù)據(jù)壓縮方法。
本發(fā)明是通過以下技術(shù)方案解決上述技術(shù)問題的:一種二分區(qū)間的數(shù)據(jù)壓縮方法,將若干個測試向量甚至整個測試集映射到區(qū)間(0,1),再通過多次二分區(qū)間的方法找到該位置,存儲該二分區(qū)間的規(guī)律即存儲該若干個測試向量甚至整個測試集。
具體步驟為:
步驟1:統(tǒng)計原始測試數(shù)據(jù)的游程長度y1、y2、……,yn,其中,yn表示為第n個測試向量的游程長度,n為正整數(shù),將該測試向量按0類型游程統(tǒng)計游程長度,直到無關(guān)位結(jié)束;
步驟2:轉(zhuǎn)化成小數(shù),默認小數(shù)的整數(shù)部分為0,步驟1所統(tǒng)計的游程長度依次組成小數(shù)部分,轉(zhuǎn)化的小數(shù)為0.y1y2……yn,0.y1y2……yn屬于區(qū)間(0,1);
步驟3:初始化區(qū)間和原始編碼,記t0=0,t1=1,原始編碼為空;
步驟4:二分區(qū)間,令
優(yōu)化的,所述步驟1中,若無關(guān)位與前一游程可以組成同一游程,舍棄最后一游程長度,只記前若干游程長度;否則記前所有游程長度。
本發(fā)明還公開一種集成電路測試數(shù)據(jù)的存儲方法,包括如下步驟:
步驟10:根據(jù)待測試集成電路的電路結(jié)構(gòu)生成包含若干故障的故障列表;
步驟20:選擇任一故障,運行自動測試向量生成工具以此生成該故障的測試向量,同時將該故障點從故障列表中刪除,最終形成級聯(lián)后原始測試數(shù)據(jù)即測試向量序列s;
步驟30:將若干個測試向量甚至整個測試集映射到區(qū)間(0,1),再通過多次二分區(qū)間的方法找到該位置,存儲該二分區(qū)間的規(guī)律即存儲該若干個測試向量甚至整個測試集。
所述步驟30具體包括以下步驟:
步驟301:游程長度統(tǒng)計,統(tǒng)計級聯(lián)后原始測試數(shù)據(jù)的游程長度y1、y2、……,yn,其中,yn表示為第n個測試向量的游程長度,n為正整數(shù),將該測試向量按0類型游程統(tǒng)計游程長度,直到無關(guān)位結(jié)束;
步驟302:轉(zhuǎn)化成小數(shù),默認小數(shù)的整數(shù)部分為0,步驟301所統(tǒng)計的游程長度依次組成小數(shù)部分,轉(zhuǎn)化的小數(shù)為0.y1y2……yn,0.y1y2……yn屬于區(qū)間(0,1);
步驟303:初始化區(qū)間和原始編碼,記t0=0,t1=1,原始編碼為空;
步驟304:二分區(qū)間,令
優(yōu)化的,步驟302中,若無關(guān)位與前一游程可以組成同一游程,舍棄最后一游程長度,只記前若干游程長度;否則記前所有游程長度。
本發(fā)明相比現(xiàn)有技術(shù)具有以下優(yōu)點:提高了測試效率,由于將若干個測試向量甚至整個測試集映射到區(qū)間(0,1),再通過多次二分區(qū)間的方法找到該位置,存儲該二分區(qū)間的規(guī)律即可存儲該若干個測試向量甚至整個測試集,占用空間較小,并且運算簡單,非常實用。
具體實施方式
下面對本發(fā)明的實施例作詳細說明,本實施例在以本發(fā)明技術(shù)方案為前提下進行實施,給出了詳細的實施方式和具體的操作過程,但本發(fā)明的保護范圍不限于下述的實施例。
本發(fā)明提供了一種二分區(qū)間的數(shù)據(jù)壓縮方法,將若干個測試向量甚至整個測試集映射到區(qū)間(0,1),再通過多次二分區(qū)間的方法找到該位置,存儲該二分區(qū)間的規(guī)律即可存儲該若干個測試向量甚至整個測試集。
具體步驟為:
步驟1:統(tǒng)計原始測試數(shù)據(jù)的游程長度y1、y2、……,yn,其中,yn表示為第n個測試向量的游程長度,n為正整數(shù),將該測試向量按0類型游程統(tǒng)計游程長度,直到無關(guān)位結(jié)束,若無關(guān)位與前一游程可以組成同一游程,舍棄最后一游程長度,只記前若干游程長度;否則記前所有游程長度。
若無關(guān)位與前一游程可以組成同一游程,舍棄最后一游程長度,只記前若干游程長度;否則記前所有游程長度。以0000100110xxx為例,前三個游程是確定的,是4、2、0,后面一個游程可以3,即最后4位是0001;如對于0000100101xxx,前3個游程分別是4、2和1,后面的無關(guān)位不能直接與前一游程拼成同一游程,此時只記前3個游程。此過程主要是將無關(guān)位盡可能的往前一游程填充。
不失一般性,設(shè)原始測試數(shù)據(jù)為:00000001000100001000100000001000001,則游程長度分別為7、3、4、3、7和5;
步驟2:轉(zhuǎn)化成小數(shù),默認小數(shù)的整數(shù)部分為0,步驟1所統(tǒng)計的游程長度依次組成小數(shù)部分,轉(zhuǎn)化的小數(shù)為0.y1y2……yn,0.y1y2……yn屬于區(qū)間(0,1),如步驟1所統(tǒng)計的游程長度依次為7、3、4、3、7和5,轉(zhuǎn)化后的小數(shù)為0.734375,記為t,有t∈(0,1);
步驟3:初始化區(qū)間和原始編碼,記t0=0,t1=1,原始編碼為空;
步驟4:二分區(qū)間,令
從上面可以看出原始的測試數(shù)據(jù)為00000001000100001000100000001000001,壓縮后的數(shù)據(jù)為101110,壓縮前35位,壓縮后6位。
通過以上壓縮方法,提高了測試效率,由于將若干個測試向量甚至整個測試集映射到區(qū)間(0,1),再通過多次二分區(qū)間的方法找到該位置,存儲該二分區(qū)間的規(guī)律即可存儲該若干個測試向量甚至整個測試集,占用空間較小,并且運算簡單,非常實用。
該二分區(qū)間的數(shù)據(jù)壓縮方法可以應(yīng)用在測試集成電路的測試中,其測試方法包括如下步驟:
a、根據(jù)待測試集成電路的電路結(jié)構(gòu)生成包含若干故障的故障列表;
b、選擇任一故障,運行自動測試向量生成工具(如:synopsys公司的tetramax,開源的atalanta,等)以此生成該故障的測試向量,同時將該故障點從故障列表中刪除,最終形成級聯(lián)后原始測試數(shù)據(jù)即測試向量序列s;
c、游程長度統(tǒng)計,統(tǒng)計級聯(lián)后原始測試數(shù)據(jù)的游程長度y1、y2、……,yn,其中,yn表示為第n個測試向量的游程長度,n為正整數(shù),將該測試向量按0類型游程統(tǒng)計游程長度,直到無關(guān)位結(jié)束。若無關(guān)位與前一游程可以組成同一游程,舍棄最后一游程長度,只記前若干游程長度;否則記前所有游程長度;
d、轉(zhuǎn)化成小數(shù),默認小數(shù)的整數(shù)部分為0,步驟c所統(tǒng)計的游程長度依次組成小數(shù)部分,轉(zhuǎn)化的小數(shù)為0.y1y2……yn,0.y1y2……yn屬于區(qū)間(0,1);
e、初始化區(qū)間和原始編碼,記t0=0,t1=1,原始編碼為空;
f、二分區(qū)間,令
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。