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