嵌入式存儲器的測試及可測性設(shè)計
引言
近年來,消費者對電子產(chǎn)品的更高性能和更小尺寸的要求持續(xù)推動著SoC(系統(tǒng)級芯片)產(chǎn)品集成水平的提高,并促使其具有更多的功能和更好的性能。要繼續(xù)推動這種無止境的需求以及繼續(xù)解決器件集成領(lǐng)域的挑戰(zhàn),最關(guān)鍵的是要在深亞微米半導(dǎo)體的設(shè)計、工藝、封裝和測試領(lǐng)域獲得持續(xù)的進(jìn)步。
SoC是采用IP復(fù)用技術(shù)的一種標(biāo)準(zhǔn)設(shè)計結(jié)構(gòu),在多功能電子產(chǎn)品中得到了廣泛的應(yīng)用。SoC的典型結(jié)構(gòu)包括CPU、存儲器、外圍邏輯電路、多媒體數(shù)字信號編解碼器和接口模塊等?,F(xiàn)在的SoC中,存儲器通常占據(jù)整個芯片的大部分面積,并且可能包括各種類型的嵌入式存儲器,如DRAM、SRAM及Flash存儲器等,可滿足不同的應(yīng)用需要。目前SoC設(shè)計要求存儲器的容量不斷地增大,嵌入式存儲器在SoC中所占的面積百分比也隨之不斷增加。另外,SoC的復(fù)雜度不斷地提高而集成電路工藝尺寸在不斷減小,這就導(dǎo)致嵌入式存儲器的制造缺陷比例也不斷地增加。因此嵌入式存儲器的故障率對于SoC的總成品率的影響越來越大,而保證低故障率的關(guān)鍵是高效率和高故障覆蓋率的嵌入式存儲器測試方案。
在我國,集成電路測試及可測性設(shè)計,特別是存儲器的測試研究相對國際上的研究比較落后。目前,我國自主研究的測試算法以及開發(fā)的測試設(shè)備還沒有形成產(chǎn)業(yè)化,還不能與國際上先進(jìn)的集成電路測試設(shè)備相抗衡。而近幾年來,我國在集成電路領(lǐng)域加大了投入,集成電路產(chǎn)業(yè)也得到了長足的進(jìn)步。
集成電路測試也是一個知識密集型的高投入領(lǐng)域,一直是我國集成電路產(chǎn)業(yè)發(fā)展的制約因素。半導(dǎo)體工業(yè)成本發(fā)展的特點就是它的單位功能制造成本以每年平均25%~30%的比例下降,而測試成本卻以每年平均10.5%的比例提高。隨著集成電路復(fù)雜度的不斷提高,為其設(shè)計的測試電路也越來越復(fù)雜,測試電路占用的芯片面積及設(shè)計制造成本也變得更高。
本文對嵌入式存儲器的測試及可測性設(shè)計進(jìn)行研究總結(jié),為我國存儲器測試的研究以及集成電路測試產(chǎn)業(yè)的發(fā)展奠定堅實的技術(shù)基礎(chǔ)。
嵌入式存儲器測試方法
半導(dǎo)體存儲器自20世紀(jì)60年代開始設(shè)計生產(chǎn)以來,在設(shè)計結(jié)構(gòu)、產(chǎn)品的性能和存儲的密度等各方面發(fā)生了巨大的變化,現(xiàn)在嵌入式存儲器技術(shù)的發(fā)展已經(jīng)取得了很大的成就,并被廣泛應(yīng)用于各類基于SoC芯片設(shè)計的電子產(chǎn)品中,已經(jīng)成為大多數(shù)電子系統(tǒng)中必不可少的組成部分,在人們的生產(chǎn)生活中起到了舉足輕重的作用。嵌入式存儲器的測試方法主要包括以下三類:
存儲器直接存取測試
此類測試方法把嵌入式存儲器部分從整個系統(tǒng)中分離出來,由專用的存儲器測試電路連接到存儲器接口上對嵌入式存儲器進(jìn)行測試,系統(tǒng)框圖如圖1所示。
圖1 存儲器直接存取測試
專門設(shè)計的存儲器接口電路僅在需要對存儲器進(jìn)行測試時才通過I/O多路選擇器選擇使用,并利用測試儀產(chǎn)生的存儲器測試向量對存儲器進(jìn)行測試。因此這種測試方法可以從芯片的封裝引腳直接對嵌入式存儲器進(jìn)行測試,也可以直接對存儲器測試的邏輯狀態(tài)和存儲器運(yùn)行的過程進(jìn)行監(jiān)控和測試,可以方便地實現(xiàn)嵌入式存儲器的多種測試算法。但這種測試方法也存在不足之處,對存儲器進(jìn)行測試的測試向量需要串行化后才能通過I/O端口的多路選擇器送入存儲器接口電路,這樣不僅增加了測試的復(fù)雜度,而且還增加了測試的時間。
片上微處理器測試
這種測試方法利用SoC上的微處理器構(gòu)造測試系統(tǒng)對嵌入式存儲器進(jìn)行測試。首先,選擇對嵌入式存儲器進(jìn)行測試的測試算法,利用微處理器的匯編語言編寫相應(yīng)的測試算法程序;然后,通過微處理器匯編語言的編譯器得到可執(zhí)行代碼;接下來,將可執(zhí)行代碼下載到系統(tǒng)中,通過微處理器的運(yùn)行產(chǎn)生相應(yīng)的測試向量,并按照測試算法對嵌入式存儲器進(jìn)行測試。測試的結(jié)果由微處理器進(jìn)行比較評估,也可以由專門設(shè)計的結(jié)果處理電路進(jìn)行結(jié)果判定。
這種測試方法的優(yōu)點是利用SoC現(xiàn)有資源,而不需要設(shè)計額外的測試電路,也不需要對現(xiàn)有電路進(jìn)行任何修改,因此不會增加額外的面積開銷,也不會降低性能。這種測試方法可以采用任何一種測試算法對嵌入式存儲器進(jìn)行測試,可以提供全故障診斷和進(jìn)行全速測試。但是這種測試方法也有一定的缺點,首先芯片中的嵌入式存儲器部分或者全部與微處理器不相連,需要有專用的接口電路對測試算法的二進(jìn)制代碼進(jìn)行處理,其次不同測試算法的編程和程序修改需要大量的時間和人力,還有這種測試方法不能測試存儲測試程序的存儲器。
存儲器內(nèi)建自測試
存儲器內(nèi)建自測試(Build-in Self Test, BIST)是近幾年里大量應(yīng)用于存儲器測試領(lǐng)域里的一種非常重要的技術(shù)。這種技術(shù)利用芯片內(nèi)部專門設(shè)計的BIST電路進(jìn)行自行測試,能夠?qū)η度胧酱鎯ζ鳌⒔M合和時序邏輯電路等具有復(fù)雜電路結(jié)構(gòu)的嵌入式模塊進(jìn)行全面的測試。存儲器BIST電路將產(chǎn)生測試向量的電路模塊以及檢測測試結(jié)果的比較模塊都置于芯片的內(nèi)部,在測試完成后,將測試的結(jié)果通過芯片的測試管腳送出到芯片的外部,從而增加了很少的管腳用于進(jìn)行測試。存儲器BIST電路的結(jié)構(gòu)包含三類:與系統(tǒng)正常運(yùn)行并發(fā)的存儲器BIST電路結(jié)構(gòu);與系統(tǒng)正常運(yùn)行不能并發(fā)的存儲器BIST電路結(jié)構(gòu),在存儲器BIST電路運(yùn)行期間,必須中斷系統(tǒng)的正常運(yùn)行,同時存儲器內(nèi)不能保存系統(tǒng)運(yùn)行的任何信息;與系統(tǒng)正常運(yùn)行不能并發(fā),但是在存儲器BIST電路運(yùn)行期間,可以保存系統(tǒng)運(yùn)行時的內(nèi)容,并在系統(tǒng)測試結(jié)束后恢復(fù)運(yùn)行。
針對不同的嵌入式存儲器,需要專門針對可能產(chǎn)生的各種缺陷類型,采用一種或多種測試算法來設(shè)計專用BIST電路。通常嵌入式存儲器的BIST電路包括測試向量產(chǎn)生模塊、測試算法控制模塊和結(jié)果分析模塊。結(jié)構(gòu)框圖如圖2所示。
圖2 存儲器BIST電路結(jié)構(gòu)
存儲器的測試算法
存儲器測試需要根據(jù)測試算法的要求產(chǎn)生大量的測試向量,要反復(fù)對所有的存儲器單元進(jìn)行讀/寫操作,并與預(yù)期值進(jìn)行比較。測試算法設(shè)計的目標(biāo)是能夠盡可能多地檢測出存儲器的各種故障。為了在盡可能短的測試時間和測試費用限制下測試出最多的存儲器故障,選擇高效的測試算法是至關(guān)重要的。目前應(yīng)用比較廣泛的存儲器測試算法主要包括偽隨機(jī)存儲器測試算法、確定性存儲器測試算法,以及March系列存儲器測試算法三類。
偽隨機(jī)存儲器測試算法
這類算法利用n位反饋移位寄存器產(chǎn)生偽隨機(jī)序列對嵌入式存儲器進(jìn)行測試。反饋移位寄存器可以通過如式(1)所示的n元反饋函數(shù)的多項式來進(jìn)行構(gòu)造。如果移位寄存器以作為反饋函數(shù),則稱之為反饋移位寄存器。
如果n級反饋移位寄存器呈線性結(jié)構(gòu),則稱之為線性反饋移位寄存器,可構(gòu)造為如式(2)所示的多項式形式,共包含2n個移位寄存器。
不滿足公式(2)的反饋移位寄存器稱為非線性反饋移位寄存器,其共包含個移位寄存器。與線性反饋移位寄存器包含的移位寄存器總個數(shù)比較發(fā)現(xiàn),非線性反饋移位寄存器具有的移位寄存器總數(shù)更多,結(jié)構(gòu)更復(fù)雜。
確定性存儲器測試算法
這類算法的形式很多,需要根據(jù)被測存儲器的結(jié)構(gòu)特征和關(guān)注的故障選擇適合的測試算法,產(chǎn)生測試向量,以便提高測試故障覆蓋率,主要用于存儲器結(jié)構(gòu)相對規(guī)則,并與關(guān)注的故障類型相關(guān)度高的存儲器測試。下面介紹三種比較典型的確定性存儲器測試算法。
(1)MSCAN(Memory SCAN)算法
這種算法就是簡單地對存儲器的每個單元寫0,然后讀出每個單元的內(nèi)容驗證是否為0;再對每個單元寫1,然后讀出驗證。算法公式如式3所示。
MSCAN測試算法的復(fù)雜度與存儲單元數(shù)量N成正比,其測試復(fù)雜度為
從測試復(fù)雜度可以看出此算法花費的測試時間較短,另外此算法能夠測試SAF故障,也能測試存儲器在最差情況下所消耗的功耗,還可以作為進(jìn)行其它較復(fù)雜測試算法之前對存儲器的初始化操作,但是此算法的測試故障覆蓋率較低。
(2)Checkerboard算法
這種測試算法在向存儲單元賦值時要求0和1交替賦值,也就是每個存儲器單元與周圍的四個單元的值都不同。然后再讀取每個存儲器單元的數(shù)值,并檢驗其正確性。算法公式如式5所示。
Checkerboard測試算法的復(fù)雜度同樣與存儲單元數(shù)量N成正比,其測試復(fù)雜度為
在如上的測試完成后,還需要交換0和1的位置再按照算法的要求交替寫入和讀取并驗證。這種算法執(zhí)行速度較快,能夠測試數(shù)據(jù)保留故障、固定故障和一半的轉(zhuǎn)換故障。
(3)GALPAT(Galloping Pattern)算法
這種算法也稱為漫游或者乒乓測試。首先需要初始化存儲器的所有單元為0(或1),然后按照地址從小到大的順序?qū)δ潮粶y單元寫1(或0)的操作,接下來讀取被測單元的數(shù)值進(jìn)行驗證。算法公式如式7所示。
GALPAT測試算法的復(fù)雜度為
這種測試算法的測試故障覆蓋率較高,能夠測試固定故障、狀態(tài)傳輸故障、圖形敏感故障以及大部分耦合故障。但根據(jù)公式8可知,該測試算法需要花費的測試時間較長,對于大容量存儲器來說并不適合。
March系列算法
March系列算法是在存儲器測試領(lǐng)域得到廣泛研究和應(yīng)用的測試算法,原因在于其具有較高的故障覆蓋率,并花費較少的測試時間。此系列算法已經(jīng)成功運(yùn)用到大容量的SRAM測試,SDRAM測試等存儲器測試領(lǐng)域,并出現(xiàn)了大量的改進(jìn)算法。
March系列算法通過有限狀態(tài)機(jī)的控制,對存儲器的每個單元進(jìn)行讀寫操作,讀寫的順序會按照算法的要求,分為地址升序和降序等方式。這樣,通過算法設(shè)計的對存儲單元的各種讀寫過程,能夠測試出絕大部分存儲器故障。
常見的March系列算法包含MATS算法、March X算法、March C-算法等。各種算法的不同之處就是包含的March元素各不相同。每種March算法包含多個March元素,每個March元素都由地址變化順序、讀寫的操作和操作的數(shù)據(jù)三部分組成。用表示讀寫的順序可以是升序,也可以是降序;表示讀寫的順序為升序;表示讀寫的順序為降序;表示從存儲器單元中讀取的向量應(yīng)該為第n個向量;表示向存儲器單元中寫入第n個向量。
結(jié)束語
嵌入式存儲器的測試及可測性設(shè)計是隨著SoC的發(fā)展而逐步發(fā)展的研究領(lǐng)域,近些年的研究成果取得長足的進(jìn)步,但是其測試難度也是相當(dāng)大的,主要問題如下:無法通過芯片的封裝引腳直接訪問嵌入式存儲器,造成對嵌入式存儲器的可控制性以及可觀測性較低;任何一種測試算法都不能測試所有的故障類型,增加了測試的難度;隨著嵌入式存儲器容量的不斷增加,所花費的測試時間也不斷地增加,測試向量也越來越多,超過了目前的ATE處理能力??傊?,嵌入式存儲器測試及可測性設(shè)計仍需要廣大學(xué)者繼續(xù)努力研究。
評論