《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 模擬設(shè)計(jì) > 設(shè)計(jì)應(yīng)用 > FLASH存儲(chǔ)器的測(cè)試方法研究
FLASH存儲(chǔ)器的測(cè)試方法研究
摘要: 本文是在傳統(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è)試。
Abstract:
Key words :

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è)試算法的研究就顯得十分必要。

  不論哪種類型存儲(chǔ)器的測(cè)試,都不是一個(gè)十分簡(jiǎ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”寫為“0”,而不能從“0”寫為“1”,若想實(shí)現(xiàn)“0”->“1”操作,只能把整個(gè)扇區(qū)或整個(gè)存儲(chǔ)器的數(shù)據(jù)擦除,而擦除操作要花費(fèi)大量的時(shí)間。FLASH存儲(chǔ)器還有其他特性,比如讀寫速度慢、寫數(shù)據(jù)之前要先寫入狀態(tài)字、很多FLASH只適于順序讀寫而不適于跳轉(zhuǎn)操作等,這些特點(diǎn)都制約了FLASH存儲(chǔ)器的測(cè)試。

  為解決FLASH測(cè)試中的這些問題,人們提出了應(yīng)用內(nèi)建自測(cè)試[2]或利用嵌入式軟件[3]等測(cè)試方法測(cè)試相關(guān)性能,都取得了比較好的效果,但這些方法大多不適用于利用測(cè)試儀進(jìn)行批量的產(chǎn)品測(cè)試。而多數(shù)對(duì)通用存儲(chǔ)器測(cè)試很有效的算法,由于受到FLASH器件自身的限制(如不能不能直接從“0”寫為“1”),很難直接適用于FLASH測(cè)試。

  文本在簡(jiǎn)單介紹FLASH芯片的結(jié)構(gòu)與特點(diǎn)之后,說明了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ǔ)器種類多樣,其中最為常用的為NOR型和NAND型FLASH。通常,NOR型比較適合存儲(chǔ)程序代碼,其隨機(jī)讀寫速度快,但容量一般較小(比如小于32 MB),且價(jià)格較高;而NAND型容量可達(dá)lGB以上,價(jià)格也相對(duì)便宜,適合存儲(chǔ)數(shù)據(jù),但一般只能整塊讀寫數(shù)據(jù),隨機(jī)存取能力差。它們對(duì)數(shù)據(jù)的存取不是使用線性地址映射,而是通過寄存器的操作串行存取數(shù)據(jù)。

  一般來說,不論哪種類型的FLASH,都有一個(gè)ID寄存器,用來讀取存儲(chǔ)器信息,可根據(jù)供應(yīng)商提供的芯片資料進(jìn)行具體的類型判斷。另外,F(xiàn)LASH存儲(chǔ)器的擦除過程相對(duì)費(fèi)時(shí),且擦除流程相對(duì)復(fù)雜。圖1為FLASH芯片擦除的一般流程。
 


可見,擦除數(shù)據(jù)的操作限制了FLASH芯片的工作速度。此外,其他一些特性,比如讀寫速度慢、寫數(shù)據(jù)之前要先寫入狀態(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,它們都可通過44 PIN專用適配器和數(shù)字電路測(cè)試儀的數(shù)字通道直接相連。我們所采用的硬件實(shí)驗(yàn)平臺(tái)是北京自動(dòng)測(cè)試技術(shù)所開發(fā)的BC3192數(shù)?;旌蠝y(cè)試系統(tǒng),該系統(tǒng)可提供工作速度快,算法圖形產(chǎn)生方式靈活,非常適合測(cè)試需要。

  4.測(cè)試實(shí)現(xiàn)方法

  假設(shè)存儲(chǔ)器可選址的存儲(chǔ)單元數(shù)為N,由于存儲(chǔ)器芯片每次只能訪問一個(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)在還沒有最佳的統(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ǔ)單元矩陣寫入的數(shù)據(jù)圖案是根據(jù)存儲(chǔ)單元選址地址碼的奇偶性而定的。如果存儲(chǔ)單元的行地址碼和列地址碼中有偶數(shù)個(gè)1,其奇偶性為0,則在該存儲(chǔ)單元中寫入“0”(或“1”);如果有奇數(shù)個(gè)1,其奇偶性為1,則在該存儲(chǔ)單元中寫入“1”(或“0”);存儲(chǔ)單元矩陣存入的信號(hào)數(shù)據(jù)將是行地址碼和列地址碼之間的異或關(guān)系。

  FLASH芯片奇偶性圖形功能檢測(cè)的流程是:首先根據(jù)算法寫入背景圖形,然后逐位讀出并檢驗(yàn)結(jié)果的正確性,再將芯片數(shù)據(jù)擦除,以反碼圖形重復(fù)上述測(cè)試過程。其總的測(cè)試步數(shù)為M=4N。

  由于奇偶性圖形是不對(duì)稱的,任何一位的地址譯碼器失效都會(huì)引起本應(yīng)寫入互為反碼數(shù)據(jù)的兩個(gè)存儲(chǔ)單元之一重復(fù)選址,并且第二次選址改變了第一次選址時(shí)寫入的內(nèi)容,而另一個(gè)存儲(chǔ)單元未被訪問。因此地址奇偶性圖形可以很好地檢驗(yàn)出地址譯碼器的故障。

奇偶性圖形每次都把整個(gè)存儲(chǔ)器單元寫完后再整體讀出,沒有反復(fù)擦除的過程(整個(gè)過程只需擦除兩次),非常適用于FLASH芯片測(cè)試。

  4.2 齊步法

  齊步法[6]是對(duì)存儲(chǔ)器的每個(gè)單元依次進(jìn)行檢驗(yàn)的一種方法。首先從第一個(gè)存儲(chǔ)單元開始,逐個(gè)對(duì)每個(gè)單元進(jìn)行取反和檢驗(yàn),直到最后一個(gè)單元檢測(cè)結(jié)束才完成一遍掃描。然后,在背景為反碼的情況下,從第一個(gè)存儲(chǔ)單元開始,逐個(gè)對(duì)每個(gè)單元進(jìn)行取反和檢驗(yàn),直到最后一個(gè)單元檢測(cè)結(jié)束。整個(gè)過程就像所有單元一起向前走步一樣,因此稱為“齊步法”。根據(jù)FLASH芯片特點(diǎn),我們改變?cè)诜创a背景條件下走步的過程,把它改造如下,形成了適合的齊步算法。

  在圖2中給出了測(cè)試FLASH齊步法的測(cè)試流程:
 


在測(cè)試之前,每個(gè)存儲(chǔ)單元具有信息“1”。首先在存儲(chǔ)矩陣中寫入背景圖案(初始狀態(tài)為全“1”),然后從地址A0開始選址進(jìn)行讀“1”,寫“0”,讀“0”操作,并檢驗(yàn)讀出結(jié)果。接著,依次到下一個(gè)選址單元重復(fù)該操作(讀“1”,寫“0”,讀“0”),直到全部存儲(chǔ)單元(A=N-1)重復(fù)完為止。再在讀操作方式下對(duì)全部存儲(chǔ)單元進(jìn)行一次正向掃描讀出,檢查有無正向?qū)Ψ聪虻亩嘀貙懭雴栴}。然后將存儲(chǔ)器輸入擦除,使之全部單元為全“1”。進(jìn)而開始反向掃描:從最高地址AN-1開始執(zhí)行讀“1”,寫“0”,讀“0”操作,逐位進(jìn)行上述操作過程,直至最終地址為AN-1,最后對(duì)全部存儲(chǔ)單元進(jìn)行讀“0”掃描,以檢驗(yàn)讀出結(jié)果的正確性。

用這種測(cè)試算法檢測(cè)存儲(chǔ)芯片,可使每個(gè)存儲(chǔ)單元都被訪問。既能保證每個(gè)存儲(chǔ)單元都能存儲(chǔ)“1”和“0”數(shù)據(jù),又能保證每個(gè)存儲(chǔ)單元都受到周圍其他單元的讀“1”、讀“0”和寫“1”、寫“0”的打擾。齊步法總的測(cè)試步數(shù)為:

  式(3)中,W表示寫操作,R表示讀操作,Q表示“1”, 表示“0”。Bij表示存儲(chǔ)器第i行j列的存儲(chǔ)單元。如WBij(Q)就表示對(duì)第i行j列的存儲(chǔ)單元進(jìn)行寫“1”操作所用的時(shí)間。

  由式(3)可知,其測(cè)試步數(shù)共9N,且整個(gè)過程只需兩次擦除操作,可見它是一種即快速又有效的方法。

  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)行三次操作:讀、寫和讀即可完成一個(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”為背景圖案寫入全部存儲(chǔ)單元。首先,在第一個(gè)扇區(qū),對(duì)A0存儲(chǔ)單元讀出并驗(yàn)證是“1”,再將該存儲(chǔ)單元改寫成“0”,最后讀出該存儲(chǔ)單元的信息以證明新寫入的“0”仍存于該存儲(chǔ)單元中。第一扇區(qū)測(cè)試地址按有效位的階20遞增,對(duì)每個(gè)存儲(chǔ)單元都要重復(fù)上述的讀“1”,寫“0”讀“0”的操作過程,需要測(cè)試步長(zhǎng)為3n(n為該扇區(qū)的存儲(chǔ)單元數(shù))才能使全部的存儲(chǔ)單元都變成“0”。這次測(cè)試的地址序列是遞增1的,即由地址最低位A0增加到最高位A(n-1),對(duì)A(n-1)存儲(chǔ)單元進(jìn)行讀“1”,寫“0”和讀“0”驗(yàn)證。

對(duì)第二個(gè)扇區(qū),以下一個(gè)地址階21作為地址增量的變化量,每次用不同的地址位作為最低位(分別為第0位和第1位),使地址以此增量的變化通過所有可能的地址。因此在一次測(cè)試程序中所有地址的存儲(chǔ)單元都被測(cè)試一次。

  然后,依次以22、24…2N作為地址增量,重復(fù)上述過程,每完成一個(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)樗]有進(jìn)行對(duì)各單元存取數(shù)據(jù)進(jìn)行反復(fù)打擾,以驗(yàn)證其地址線間信號(hào)改變所帶來的影響,但這種方法分別在各個(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)是按序選擇地址,并通過寫入這些地址而產(chǎn)生的,在兩次讀出之間有一次寫操作。移動(dòng)變反法測(cè)試包括了功能測(cè)試和動(dòng)態(tài)測(cè)試,功能測(cè)試保證被測(cè)存儲(chǔ)單元不受讀、寫其他存儲(chǔ)單元的影響,動(dòng)態(tài)測(cè)試預(yù)測(cè)最壞和最好條件下的取數(shù)時(shí)間,并預(yù)測(cè)地址變換對(duì)這些時(shí)間的影響。

  這種測(cè)試方法易于實(shí)現(xiàn),它是在跳步算法[1]的基礎(chǔ)上,通過改變跳步的長(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ǔ)器各單元寫入0xAAAAAAAA,檢驗(yàn)并擦除,然后對(duì)存儲(chǔ)器寫入0xCCCCCCCC,檢驗(yàn)并擦除,以后依次寫入0xF0F0F0F0,0x0F0F0F0F,0xFF00FF00,0x00FF00FF,0xFFFF0000,0x0000FFFF, 0xFFFFFFFF,0x0,都在檢驗(yàn)所寫的正確性后再擦除數(shù)據(jù)。其原理與地址移動(dòng)變反相同,在此不再贅述。

  4.測(cè)試方法的綜合使用和流水測(cè)試

  以上,從算法的角度上提高了FLASH芯片的可測(cè)性。雖然NOR、NAND型FLASH結(jié)構(gòu)不同,但由于以上算法都可通過計(jì)算,順序產(chǎn)生測(cè)試圖形,因此可通用于以上兩類器件的測(cè)試中。

  上述三種方法各有優(yōu)點(diǎn),在實(shí)際應(yīng)用中可配合使用。地址奇偶性圖形測(cè)試最為方便高效,因?yàn)樵趯懭雸D形過程中每次只改變一位地址線,而且寫入的是相反的數(shù)據(jù),所以如果哪一位地址線出現(xiàn)短路立刻會(huì)被檢查出來,使用該方法最適宜檢驗(yàn)地址譯碼器的故障。齊步法適于用來檢驗(yàn)多重地址選擇與譯碼器的故障,并且可以檢測(cè)寫入時(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ì)問題,有些芯片還有可能出現(xiàn)其他一些不太常見的錯(cuò)誤,這就需要進(jìn)行更詳盡的測(cè)試,這時(shí)使用移動(dòng)變反測(cè)試法就比較合適。這種方法可以很好地測(cè)試芯片的動(dòng)態(tài)錯(cuò)誤,并且可根據(jù)具體需要詳細(xì)展開測(cè)試或簡(jiǎn)化測(cè)試,對(duì)于產(chǎn)品性能分析十分有效。

  在具體程序設(shè)計(jì)時(shí),為簡(jiǎn)化算法執(zhí)行,可以將讀取產(chǎn)品型號(hào)、調(diào)用讀寫命令的語(yǔ)句作為子程序存儲(chǔ)在測(cè)試儀中,每次需要時(shí)都可以無縫調(diào)用。

  在測(cè)試過程中,最耗費(fèi)時(shí)間的是程序擦除操作,一次擦除往往就需要幾秒,其解決辦法是將擦除工序單獨(dú)處理。在實(shí)際應(yīng)用中,可使用兩臺(tái)測(cè)試儀,其中,在擦除時(shí)幾個(gè)芯片并行運(yùn)行。這樣,一臺(tái)設(shè)備用于讀、寫、測(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)的以棋盤格為基礎(chǔ)的測(cè)試圖形[1]相比,奇偶校驗(yàn)法、齊步法和移動(dòng)變反法產(chǎn)生的測(cè)試圖形故障覆蓋率更高,這些算法由于最多只有兩次芯片擦除操作,所以測(cè)試時(shí)間完全能符合工程測(cè)試需要,其中,移動(dòng)變反法沒有擦除操作,所以測(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è)試。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。