1.引言
隨著當(dāng)前移動(dòng)存儲(chǔ)技術(shù)的快速發(fā)展和移動(dòng)存儲(chǔ)市場(chǎng)的高速擴(kuò)大,FLASH型存儲(chǔ)器的用量迅速增長(zhǎng),。FLASH芯片由于其便攜,、可靠、成本低等優(yōu)點(diǎn),,在移動(dòng)產(chǎn)品中非常適用,。市場(chǎng)的需求催生了一大批FLASH芯片研發(fā)、生產(chǎn),、應(yīng)用企業(yè),。為保證芯片長(zhǎng)期可靠的工作,這些企業(yè)需要在產(chǎn)品出廠前對(duì)FLASH存儲(chǔ)器進(jìn)行高速和細(xì)致地測(cè)試,,因此,,高效FLASH存儲(chǔ)器測(cè)試算法的研究就顯得十分必要。
不論哪種類(lèi)型存儲(chǔ)器的測(cè)試,,都不是一個(gè)十分簡(jiǎn)單的問(wèn)題,,不能只將存儲(chǔ)器內(nèi)部每個(gè)存儲(chǔ)單元依次測(cè)試一遍就得出結(jié)論,這是因?yàn)槊恳粋€(gè)存儲(chǔ)單元的改變都有可能影響存儲(chǔ)器內(nèi)部其他單元的變化(這種情況又是常常發(fā)生的),。這種相關(guān)性產(chǎn)生了巨大的測(cè)試工作量[1],。另外,F(xiàn)LASH存儲(chǔ)器有其自身的特點(diǎn),,它只能將存儲(chǔ)單元內(nèi)的數(shù)據(jù)從“1”寫(xiě)為“0”,,而不能從“0”寫(xiě)為“1”,若想實(shí)現(xiàn)“0”->“1”操作,,只能把整個(gè)扇區(qū)或整個(gè)存儲(chǔ)器的數(shù)據(jù)擦除,,而擦除操作要花費(fèi)大量的時(shí)間。FLASH存儲(chǔ)器還有其他特性,,比如讀寫(xiě)速度慢,、寫(xiě)數(shù)據(jù)之前要先寫(xiě)入狀態(tài)字、很多FLASH只適于順序讀寫(xiě)而不適于跳轉(zhuǎn)操作等,,這些特點(diǎn)都制約了FLASH存儲(chǔ)器的測(cè)試,。
為解決FLASH測(cè)試中的這些問(wèn)題,人們提出了應(yīng)用內(nèi)建自測(cè)試[2]或利用嵌入式軟件[3]等測(cè)試方法測(cè)試相關(guān)性能,,都取得了比較好的效果,,但這些方法大多不適用于利用測(cè)試儀進(jìn)行批量的產(chǎn)品測(cè)試。而多數(shù)對(duì)通用存儲(chǔ)器測(cè)試很有效的算法,,由于受到FLASH器件自身的限制(如不能不能直接從“0”寫(xiě)為“1”),,很難直接適用于FLASH測(cè)試,。
文本在簡(jiǎn)單介紹FLASH芯片的結(jié)構(gòu)與特點(diǎn)之后,說(shuō)明了FLASH存儲(chǔ)器測(cè)試程序原理,。在此基礎(chǔ)上,,分析和改進(jìn)了幾種通用的存儲(chǔ)器測(cè)試方法,使之能有效地應(yīng)用于FLASH測(cè)試中,。這些方法簡(jiǎn)單高效,故障覆蓋率高,,并且可以快速預(yù)先產(chǎn)生,,與其他一些測(cè)試算法[4][5]相比,更適于應(yīng)用在測(cè)試儀中進(jìn)行工程測(cè)試,。本文分析了這些方法的主要特點(diǎn),在此基礎(chǔ)之上,,介紹了實(shí)際FLASH存儲(chǔ)器測(cè)試中應(yīng)用的流程,。
2.FLASH芯片的結(jié)構(gòu)特征
FLASH存儲(chǔ)器種類(lèi)多樣,其中最為常用的為NOR型和NAND型FLASH,。通常,,NOR型比較適合存儲(chǔ)程序代碼,其隨機(jī)讀寫(xiě)速度快,,但容量一般較小(比如小于32 MB),,且價(jià)格較高;而NAND型容量可達(dá)lGB以上,,價(jià)格也相對(duì)便宜,,適合存儲(chǔ)數(shù)據(jù),但一般只能整塊讀寫(xiě)數(shù)據(jù),,隨機(jī)存取能力差,。它們對(duì)數(shù)據(jù)的存取不是使用線性地址映射,而是通過(guò)寄存器的操作串行存取數(shù)據(jù),。
一般來(lái)說(shuō),,不論哪種類(lèi)型的FLASH,都有一個(gè)ID寄存器,,用來(lái)讀取存儲(chǔ)器信息,,可根據(jù)供應(yīng)商提供的芯片資料進(jìn)行具體的類(lèi)型判斷,。另外,,F(xiàn)LASH存儲(chǔ)器的擦除過(guò)程相對(duì)費(fèi)時(shí),且擦除流程相對(duì)復(fù)雜,。圖1為FLASH芯片擦除的一般流程。
![]() |
可見(jiàn),擦除數(shù)據(jù)的操作限制了FLASH芯片的工作速度,。此外,其他一些特性,,比如讀寫(xiě)速度慢、寫(xiě)數(shù)據(jù)之前要先寫(xiě)入狀態(tài)字,、很多FLASH都設(shè)有冗余單元等等,,這些特點(diǎn)都制約了測(cè)試速度的提高。因此,,設(shè)計(jì)合理的方法,或?qū)讐KFLASH并測(cè),,并且應(yīng)用測(cè)試算法減少測(cè)試時(shí)間就顯得十分必要。
3.系統(tǒng)連接
本文選用的芯片為AMD公司的NOR型FLASH——Am29LV400B及三星公司的NAND型FLASH K9F5608UOB,,它們都可通過(guò)44 PIN專(zhuān)用適配器和數(shù)字電路測(cè)試儀的數(shù)字通道直接相連,。我們所采用的硬件實(shí)驗(yàn)平臺(tái)是北京自動(dòng)測(cè)試技術(shù)所開(kāi)發(fā)的BC3192數(shù)模混合測(cè)試系統(tǒng),,該系統(tǒng)可提供工作速度快,,算法圖形產(chǎn)生方式靈活,非常適合測(cè)試需要,。
4.測(cè)試實(shí)現(xiàn)方法
假設(shè)存儲(chǔ)器可選址的存儲(chǔ)單元數(shù)為N,,由于存儲(chǔ)器芯片每次只能訪問(wèn)一個(gè)存儲(chǔ)單元,每個(gè)單元只有“0”或“1”兩種狀態(tài),,所以所有可能出現(xiàn)的狀態(tài)共2N種,。由于選取的地址又是隨機(jī)的,所以,,當(dāng)測(cè)試步數(shù)為M時(shí),,選址序列組合可能有2N NM種之多。即使采用全“0”或全“1”兩種圖案測(cè)試,,總的測(cè)試圖形也將有2NM種,這是個(gè)巨大的數(shù)字,。
為了能夠有效地檢測(cè)存儲(chǔ)器芯片,,必須分析半導(dǎo)體存儲(chǔ)器的結(jié)構(gòu),確定和選擇幾種能夠有效檢驗(yàn)存儲(chǔ)器功能的圖形,,使之既能達(dá)到檢測(cè)目的,,又使測(cè)試量限定在允許范圍之內(nèi),。但實(shí)際應(yīng)用中,由于每種測(cè)試圖形都有其局限性,,再加上各個(gè)生產(chǎn)廠家以及各種型號(hào)存儲(chǔ)器的特性不完全一致,,現(xiàn)在還沒(méi)有最佳的統(tǒng)一測(cè)試方法。
根據(jù)FLASH芯片的特點(diǎn),,我們主要改進(jìn)并使用了以下幾種辦法:
4.1 奇偶校驗(yàn)圖形檢驗(yàn)法
奇偶校驗(yàn)圖形檢驗(yàn)法[6]是一種比較適合存儲(chǔ)器測(cè)試的方法,。在奇偶性圖形檢驗(yàn)法中,向存儲(chǔ)單元矩陣寫(xiě)入的數(shù)據(jù)圖案是根據(jù)存儲(chǔ)單元選址地址碼的奇偶性而定的,。如果存儲(chǔ)單元的行地址碼和列地址碼中有偶數(shù)個(gè)1,,其奇偶性為0,則在該存儲(chǔ)單元中寫(xiě)入“0”(或“1”),;如果有奇數(shù)個(gè)1,其奇偶性為1,,則在該存儲(chǔ)單元中寫(xiě)入“1”(或“0”),;存儲(chǔ)單元矩陣存入的信號(hào)數(shù)據(jù)將是行地址碼和列地址碼之間的異或關(guān)系。
FLASH芯片奇偶性圖形功能檢測(cè)的流程是:首先根據(jù)算法寫(xiě)入背景圖形,,然后逐位讀出并檢驗(yàn)結(jié)果的正確性,,再將芯片數(shù)據(jù)擦除,以反碼圖形重復(fù)上述測(cè)試過(guò)程,。其總的測(cè)試步數(shù)為M=4N,。
由于奇偶性圖形是不對(duì)稱(chēng)的,任何一位的地址譯碼器失效都會(huì)引起本應(yīng)寫(xiě)入互為反碼數(shù)據(jù)的兩個(gè)存儲(chǔ)單元之一重復(fù)選址,,并且第二次選址改變了第一次選址時(shí)寫(xiě)入的內(nèi)容,,而另一個(gè)存儲(chǔ)單元未被訪問(wèn)。因此地址奇偶性圖形可以很好地檢驗(yàn)出地址譯碼器的故障,。
奇偶性圖形每次都把整個(gè)存儲(chǔ)器單元寫(xiě)完后再整體讀出,,沒(méi)有反復(fù)擦除的過(guò)程(整個(gè)過(guò)程只需擦除兩次),非常適用于FLASH芯片測(cè)試,。
4.2 齊步法
齊步法[6]是對(duì)存儲(chǔ)器的每個(gè)單元依次進(jìn)行檢驗(yàn)的一種方法,。首先從第一個(gè)存儲(chǔ)單元開(kāi)始,逐個(gè)對(duì)每個(gè)單元進(jìn)行取反和檢驗(yàn),,直到最后一個(gè)單元檢測(cè)結(jié)束才完成一遍掃描,。然后,在背景為反碼的情況下,,從第一個(gè)存儲(chǔ)單元開(kāi)始,,逐個(gè)對(duì)每個(gè)單元進(jìn)行取反和檢驗(yàn),直到最后一個(gè)單元檢測(cè)結(jié)束,。整個(gè)過(guò)程就像所有單元一起向前走步一樣,,因此稱(chēng)為“齊步法”,。根據(jù)FLASH芯片特點(diǎn),我們改變?cè)诜创a背景條件下走步的過(guò)程,,把它改造如下,,形成了適合的齊步算法。
在圖2中給出了測(cè)試FLASH齊步法的測(cè)試流程:
![]() |
在測(cè)試之前,,每個(gè)存儲(chǔ)單元具有信息“1”,。首先在存儲(chǔ)矩陣中寫(xiě)入背景圖案(初始狀態(tài)為全“1”),然后從地址A0開(kāi)始選址進(jìn)行讀“1”,,寫(xiě)“0”,,讀“0”操作,并檢驗(yàn)讀出結(jié)果,。接著,,依次到下一個(gè)選址單元重復(fù)該操作(讀“1”,寫(xiě)“0”,,讀“0”),,直到全部存儲(chǔ)單元(A=N-1)重復(fù)完為止。再在讀操作方式下對(duì)全部存儲(chǔ)單元進(jìn)行一次正向掃描讀出,,檢查有無(wú)正向?qū)Ψ聪虻亩嘀貙?xiě)入問(wèn)題,。然后將存儲(chǔ)器輸入擦除,使之全部單元為全“1”,。進(jìn)而開(kāi)始反向掃描:從最高地址AN-1開(kāi)始執(zhí)行讀“1”,,寫(xiě)“0”,讀“0”操作,,逐位進(jìn)行上述操作過(guò)程,,直至最終地址為AN-1,最后對(duì)全部存儲(chǔ)單元進(jìn)行讀“0”掃描,,以檢驗(yàn)讀出結(jié)果的正確性,。
用這種測(cè)試算法檢測(cè)存儲(chǔ)芯片,可使每個(gè)存儲(chǔ)單元都被訪問(wèn),。既能保證每個(gè)存儲(chǔ)單元都能存儲(chǔ)“1”和“0”數(shù)據(jù),,又能保證每個(gè)存儲(chǔ)單元都受到周?chē)渌麊卧淖x“1”、讀“0”和寫(xiě)“1”,、寫(xiě)“0”的打擾,。齊步法總的測(cè)試步數(shù)為:
式(3)中,W表示寫(xiě)操作,,R表示讀操作,,Q表示“1”, 表示“0”,。Bij表示存儲(chǔ)器第i行j列的存儲(chǔ)單元,。如WBij(Q)就表示對(duì)第i行j列的存儲(chǔ)單元進(jìn)行寫(xiě)“1”操作所用的時(shí)間,。
由式(3)可知,其測(cè)試步數(shù)共9N,,且整個(gè)過(guò)程只需兩次擦除操作,,可見(jiàn)它是一種即快速又有效的方法。
4.3 移動(dòng)變反法
移動(dòng)變反測(cè)試法[6]是按順序變反每個(gè)地址存儲(chǔ)單元數(shù)據(jù)的方法,。它需要在變反前后讀出每個(gè)存儲(chǔ)單元的數(shù)據(jù),,而且,還必須借助于前進(jìn)和后退的地址尋址序列產(chǎn)生地址跳躍,,地址以20,、21…、2n-1次方的增量變化(n是地址位數(shù)),。按照以上規(guī)律進(jìn)行地址跳變后,,再對(duì)每個(gè)地址進(jìn)行三次操作:讀、寫(xiě)和讀即可完成一個(gè)循環(huán),。
以上操作的目的主要在于地址間產(chǎn)生有效相互打擾,,但顯然如果以整個(gè)芯片為單元進(jìn)行上述操作需要多次擦除數(shù)據(jù),因此對(duì)FLASH測(cè)試芯片應(yīng)做如此改進(jìn):以扇區(qū)為單元完成操作,。假設(shè)FLASH芯片有N個(gè)扇區(qū),,移動(dòng)變反法的功能測(cè)試先要以“1”為背景圖案寫(xiě)入全部存儲(chǔ)單元,。首先,,在第一個(gè)扇區(qū),對(duì)A0存儲(chǔ)單元讀出并驗(yàn)證是“1”,,再將該存儲(chǔ)單元改寫(xiě)成“0”,,最后讀出該存儲(chǔ)單元的信息以證明新寫(xiě)入的“0”仍存于該存儲(chǔ)單元中。第一扇區(qū)測(cè)試地址按有效位的階20遞增,,對(duì)每個(gè)存儲(chǔ)單元都要重復(fù)上述的讀“1”,,寫(xiě)“0”讀“0”的操作過(guò)程,需要測(cè)試步長(zhǎng)為3n(n為該扇區(qū)的存儲(chǔ)單元數(shù))才能使全部的存儲(chǔ)單元都變成“0”,。這次測(cè)試的地址序列是遞增1的,,即由地址最低位A0增加到最高位A(n-1),對(duì)A(n-1)存儲(chǔ)單元進(jìn)行讀“1”,,寫(xiě)“0”和讀“0”驗(yàn)證,。
對(duì)第二個(gè)扇區(qū),以下一個(gè)地址階21作為地址增量的變化量,,每次用不同的地址位作為最低位(分別為第0位和第1位),,使地址以此增量的變化通過(guò)所有可能的地址。因此在一次測(cè)試程序中所有地址的存儲(chǔ)單元都被測(cè)試一次,。
然后,,依次以22,、24…2N作為地址增量,重復(fù)上述過(guò)程,,每完成一個(gè)循環(huán)便產(chǎn)生一個(gè)循環(huán)進(jìn)位,。
由于各個(gè)扇區(qū)的大小不同,移動(dòng)變反法功能測(cè)試圖形步長(zhǎng)為3n(n為最大扇區(qū)存儲(chǔ)單元個(gè)數(shù)),。以扇區(qū)為單元的測(cè)試實(shí)際上是一種對(duì)芯片功能的抽測(cè),,因?yàn)樗](méi)有進(jìn)行對(duì)各單元存取數(shù)據(jù)進(jìn)行反復(fù)打擾,以驗(yàn)證其地址線間信號(hào)改變所帶來(lái)的影響,,但這種方法分別在各個(gè)扇區(qū)對(duì)鄰近地址線一一做了打擾測(cè)試,,由于各個(gè)扇區(qū)結(jié)構(gòu)根本上是相同的,因此這種抽測(cè)很有代表性,,并且把測(cè)試時(shí)間減少了一個(gè)數(shù)量級(jí),。
移動(dòng)變反法測(cè)試圖形是一種良好的折衷測(cè)試方案。因?yàn)樗鼛缀蹙哂懈鞣N測(cè)試圖形的最好特點(diǎn),,可以用較少的試驗(yàn)步數(shù)測(cè)試盡可能多的存儲(chǔ)單元間打擾的相互影響,。在具體程序中,“1”場(chǎng)變反為“0”場(chǎng)是按序選擇地址,,并通過(guò)寫(xiě)入這些地址而產(chǎn)生的,,在兩次讀出之間有一次寫(xiě)操作。移動(dòng)變反法測(cè)試包括了功能測(cè)試和動(dòng)態(tài)測(cè)試,,功能測(cè)試保證被測(cè)存儲(chǔ)單元不受讀,、寫(xiě)其他存儲(chǔ)單元的影響,動(dòng)態(tài)測(cè)試預(yù)測(cè)最壞和最好條件下的取數(shù)時(shí)間,,并預(yù)測(cè)地址變換對(duì)這些時(shí)間的影響,。
這種測(cè)試方法易于實(shí)現(xiàn),它是在跳步算法[1]的基礎(chǔ)上,,通過(guò)改變跳步的長(zhǎng)度,,減小了算法的復(fù)雜度。移動(dòng)變反法測(cè)試是一種具有良好功能測(cè)試和動(dòng)態(tài)測(cè)試特點(diǎn)的測(cè)試圖形,,并且所需的測(cè)試時(shí)間較短,,在很多情況下都有很好的效果。尤其是對(duì)于較大容量存儲(chǔ)器的測(cè)試,,該方法特別有效,。
移動(dòng)變反法還可以作進(jìn)一步擴(kuò)展,即對(duì)數(shù)據(jù)做移動(dòng)變反處理,。以芯片為32位總線為例,,首先對(duì)存儲(chǔ)器各單元寫(xiě)入0xAAAAAAAA,檢驗(yàn)并擦除,,然后對(duì)存儲(chǔ)器寫(xiě)入0xCCCCCCCC,,檢驗(yàn)并擦除,,以后依次寫(xiě)入0xF0F0F0F0,0x0F0F0F0F,,0xFF00FF00,,0x00FF00FF,0xFFFF0000,,0x0000FFFF,, 0xFFFFFFFF,0x0,,都在檢驗(yàn)所寫(xiě)的正確性后再擦除數(shù)據(jù),。其原理與地址移動(dòng)變反相同,在此不再贅述,。
4.測(cè)試方法的綜合使用和流水測(cè)試
以上,,從算法的角度上提高了FLASH芯片的可測(cè)性。雖然NOR,、NAND型FLASH結(jié)構(gòu)不同,,但由于以上算法都可通過(guò)計(jì)算,順序產(chǎn)生測(cè)試圖形,,因此可通用于以上兩類(lèi)器件的測(cè)試中,。
上述三種方法各有優(yōu)點(diǎn),在實(shí)際應(yīng)用中可配合使用,。地址奇偶性圖形測(cè)試最為方便高效,,因?yàn)樵趯?xiě)入圖形過(guò)程中每次只改變一位地址線,而且寫(xiě)入的是相反的數(shù)據(jù),,所以如果哪一位地址線出現(xiàn)短路立刻會(huì)被檢查出來(lái),,使用該方法最適宜檢驗(yàn)地址譯碼器的故障,。齊步法適于用來(lái)檢驗(yàn)多重地址選擇與譯碼器的故障,,并且可以檢測(cè)寫(xiě)入時(shí)噪聲對(duì)存儲(chǔ)芯片特性的影響,它能保證正確的地址譯碼和每個(gè)存儲(chǔ)單元存儲(chǔ)“1”和“0”信息的能力,。在大多數(shù)生產(chǎn)測(cè)試中,,聯(lián)合使用這兩種方法可以判別出FLASH絕大多數(shù)的故障。當(dāng)然,,各個(gè)廠家生產(chǎn)的芯片在結(jié)構(gòu)和工藝上有一定區(qū)別,,因此出現(xiàn)各種錯(cuò)誤的概率也不同,可以根據(jù)實(shí)際情況調(diào)整方法,。由于設(shè)計(jì)問(wèn)題,,有些芯片還有可能出現(xiàn)其他一些不太常見(jiàn)的錯(cuò)誤,這就需要進(jìn)行更詳盡的測(cè)試,,這時(shí)使用移動(dòng)變反測(cè)試法就比較合適,。這種方法可以很好地測(cè)試芯片的動(dòng)態(tài)錯(cuò)誤,,并且可根據(jù)具體需要詳細(xì)展開(kāi)測(cè)試或簡(jiǎn)化測(cè)試,對(duì)于產(chǎn)品性能分析十分有效,。
在具體程序設(shè)計(jì)時(shí),,為簡(jiǎn)化算法執(zhí)行,可以將讀取產(chǎn)品型號(hào),、調(diào)用讀寫(xiě)命令的語(yǔ)句作為子程序存儲(chǔ)在測(cè)試儀中,,每次需要時(shí)都可以無(wú)縫調(diào)用。
在測(cè)試過(guò)程中,,最耗費(fèi)時(shí)間的是程序擦除操作,,一次擦除往往就需要幾秒,其解決辦法是將擦除工序單獨(dú)處理,。在實(shí)際應(yīng)用中,,可使用兩臺(tái)測(cè)試儀,其中,,在擦除時(shí)幾個(gè)芯片并行運(yùn)行,。這樣,一臺(tái)設(shè)備用于讀,、寫(xiě),、測(cè)試,另一臺(tái)設(shè)備用于擦除數(shù)據(jù),,就可以有效地形成流水線操作,,大大節(jié)省測(cè)試時(shí)間。此外,,將幾種方法綜合使用,,還有助于提高故障覆蓋率。
5.實(shí)驗(yàn)結(jié)果
根據(jù)上述思想,,我們?cè)趪?guó)產(chǎn)BC3192的測(cè)試系統(tǒng)平臺(tái)[7][8]上,,對(duì)AMD公司的NOR型FLASH——Am29LV400B及三星公司的NAND型FLASH——9F5608UOB都進(jìn)行了測(cè)試。實(shí)驗(yàn)表明,,和傳統(tǒng)的以棋盤(pán)格為基礎(chǔ)的測(cè)試圖形[1]相比,,奇偶校驗(yàn)法、齊步法和移動(dòng)變反法產(chǎn)生的測(cè)試圖形故障覆蓋率更高,,這些算法由于最多只有兩次芯片擦除操作,,所以測(cè)試時(shí)間完全能符合工程測(cè)試需要,其中,,移動(dòng)變反法沒(méi)有擦除操作,,所以測(cè)試速度最快。在實(shí)驗(yàn)中,我們采用上述三種方法中任意一種,,按照流水的方法測(cè)試,,在相同故障覆蓋率下,都可以使測(cè)試效率可提高40%以上,。
6.結(jié)論
本文是在傳統(tǒng)存儲(chǔ)器測(cè)試?yán)碚摶A(chǔ)上對(duì)FLASH測(cè)試的嘗試,,該方法保留了傳統(tǒng)方法的優(yōu)點(diǎn),較好地解決了FLASH存儲(chǔ)器測(cè)試的困難,。該方法方便快捷,,流程簡(jiǎn)單,所有測(cè)試圖形都可以事先生成,,這樣就可以直接加載到測(cè)試儀中,,有利于直接應(yīng)用于測(cè)試儀進(jìn)行生產(chǎn)測(cè)試。