1 引言
存儲(chǔ)器是各種電子設(shè)備中保存信息的主要部件,隨著存儲(chǔ)器芯片的密度和復(fù)雜度的日益提高,設(shè)計(jì)一個(gè)良好的測(cè)試算法來(lái)測(cè)試存儲(chǔ)器變得尤為重要。
2 存儲(chǔ)器的故障模型
研究存儲(chǔ)器的檢測(cè)方法,就必須先建立存儲(chǔ)器單元的故障模型,也就是要求把物理故障模型化為邏輯故障,通??梢杂霉δ苣P突蚧蚁蛔幽P蛯?a href="http://www.brongaenegriffin.com/jiadian/dianshiji/200604174129.html" target="_blank">存儲(chǔ)器故障模型化,典型RAM功能模型如圖1所示,該模型是由Vande Goor提出的簡(jiǎn)化功能DRAM模型[1]。

?
對(duì)于圖1的功能模型,存儲(chǔ)器的故障主要表現(xiàn)有3類:
(1)地址解碼器故障(AF)[2],主要表現(xiàn)為4種形式(如圖2所示)。

?
(2)讀寫邏輯模塊故障。主要表現(xiàn)為在讀寫電路中,某些檢測(cè)放大器的出或者寫入驅(qū)動(dòng)器的邏輯部分,可能產(chǎn)生開(kāi)路、短路或者I/O固定的故障,在讀寫電路的數(shù)據(jù)
線之間存在交叉耦合的干擾。
(3)存儲(chǔ)單元陣列故障,由于存儲(chǔ)單元陣列是存儲(chǔ)器內(nèi)規(guī)模最為復(fù)雜的一個(gè)模塊,因此出現(xiàn)故障的概率最大,故障的類型也最為復(fù)雜,主要是由于存儲(chǔ)器單元內(nèi)的數(shù)據(jù)線開(kāi)路、短路以及串?dāng)_所引起的。
對(duì)于上述的功能模型去掉其中的某些邏輯模塊,就可用于ROM的測(cè)試。
3 存儲(chǔ)器的簡(jiǎn)化功能故障[2、5、6]
基于以上各模塊的故障表現(xiàn)形式,又由于地址譯碼故障和讀寫邏輯故障可以等效的功能映射為存儲(chǔ)器單元陣列故障,故可把存儲(chǔ)器故障簡(jiǎn)化為下列四種功能故障:
(1)固定故障(stuck-At Fault,SAF)
單元或連線的邏輯值總為0或總為1的故障,單元/連線總是處于有故障的狀態(tài),并且故障的邏輯值不變。
(2)轉(zhuǎn)換故障(Transition Fault.TF)
轉(zhuǎn)換故障是SAF的一種特殊情況,當(dāng)寫數(shù)據(jù)時(shí),某一存儲(chǔ)單元失效使得0→1轉(zhuǎn)變或1→0轉(zhuǎn)變不能發(fā)生,表現(xiàn)為固定故障的形式。
(3)耦合故障(Coupling Fault,CF)
存儲(chǔ)單元中某些位的跳變導(dǎo)致其他位的邏輯發(fā)生非預(yù)期的變化,它既可以發(fā)生在不同單元之間,也可以發(fā)生在同一單元不同位之間。
(4)相鄰矢量敏化故障(Neighborhood Pattern Sensitive Faults,NPSF)
一個(gè)單元因相鄰單元的活動(dòng)導(dǎo)致?tīng)顟B(tài)不正確,一個(gè)單元的相鄰單元可能有5個(gè),也可能有9個(gè),如圖3的(a)、(b)所示。

?
4 存儲(chǔ)器故障診斷算法分析
針對(duì)存儲(chǔ)器故障模型中的各種故障,人們提出了各種診斷算法,目前主要使用的算法有:Checkerboard算法(棋盤法)、Gallop算法(奔跳法)、March算法(進(jìn)行法)等。
4.1 Checkerboard算法(棋盤法)[7]
棋盤法的測(cè)試過(guò)程是首先對(duì)每一個(gè)存儲(chǔ)單元賦值,使得每一個(gè)單元與其緊相鄰的各個(gè)單元的值都不同,如圖4所示,即把整個(gè)存儲(chǔ)陣列分為兩塊a、b,然后采用如下過(guò)程對(duì)a、b進(jìn)行讀寫;
(1)對(duì)分塊a(b)中的單元寫0(1);
(2)讀所有單元;
(3)對(duì)分塊a(b)中的單元寫1(0);
(4)讀所有單元;
(5)該算法理論上操作的次數(shù)是O(N),其中N為存儲(chǔ)器容量,可以檢測(cè)SAF故障和相鄰單元的橋接故障,其故障覆蓋率較低。

?
4.2 Gallop算法(奔跳法)
Gallop算法也稱為1(0)漫游或乒乓測(cè)試,測(cè)試過(guò)程如下:
(1)部分地址單元清0(1);
(2)A0寫1(0),然后A1讀0(1),A0讀1(0),然后A2讀0(1),A0讀1(0),接著A3讀0(1),A0讀1(0),直到全部單元;
(3)將A0改寫為0(1),寫A1為1(0),重復(fù)以上步驟。
整個(gè)過(guò)程就像1(0)在整個(gè)陣列中漫游一樣,圖5表示1漫游的情況,該算法具有較高的故障覆蓋率,能檢測(cè)SAF故障、TF故障以及CF故障,單位該算法操作次數(shù)是O(N2)需要較長(zhǎng)的測(cè)試時(shí)間。

?
4.3 March算法(進(jìn)行法)[3,4]
(1)全部單元中寫0;
(2)讀A0單元的0,然后再改寫為1,然后讀A1的0,再改寫A1為1,直到An-1。這樣所有單元均為1;
(3)然后從An-1到A0作讀1寫0再讀0的操作。
該算法的操作次數(shù)為O(N),能檢測(cè)全部的SAF故障、AF故障以及TF故障。
5 一種基于棋盤算法的改進(jìn)及實(shí)現(xiàn)
通過(guò)研究和對(duì)比上述3個(gè)算法發(fā)現(xiàn),Checkerboard(棋盤)算法和March算法以線性方式進(jìn)行讀寫,因此存儲(chǔ)器操作次數(shù)與存儲(chǔ)器容量N成正比,Gallop算法雖然有較高的故障覆蓋率,但由于其對(duì)存儲(chǔ)器刺激次數(shù)過(guò)多,因此,在實(shí)際測(cè)試中不是一種很經(jīng)濟(jì)的測(cè)試算法,Checkerboad算法只實(shí)現(xiàn)了0→1或1→0的讀寫,所以不能測(cè)試變遷故障。而March算法恰恰實(shí)現(xiàn)了這兩個(gè)狀態(tài)的轉(zhuǎn)換,但March算法操作次數(shù)(6N)要多于Checkerboard算法的操作次數(shù)(4N),對(duì)于大容量存儲(chǔ)器的測(cè)試,March算法將需要比Checkerboard算法更多的測(cè)試時(shí)間來(lái)完成整個(gè)測(cè)試過(guò)程,因此結(jié)合March算法的特點(diǎn),對(duì)Checkerboard算法進(jìn)行如下改進(jìn)。
(1)對(duì)分塊a(b)中單元寫1(0);
(2)對(duì)分塊a(b)中的單元寫0(1);
(3)讀所有單元;
(4)對(duì)分塊a(b)中的單元寫1(0);
(5)讀所有單元。
這樣整個(gè)存儲(chǔ)器就同時(shí)經(jīng)歷了由0→1和1→0兩個(gè)讀寫狀態(tài),就可以測(cè)試出變遷故障,寫改進(jìn)后Checkboard算法對(duì)存儲(chǔ)器的操作次數(shù)為5N次,而March算法對(duì)存儲(chǔ)
器的操作次數(shù)則需要6N次,大大地節(jié)省了測(cè)試時(shí)間。
以一個(gè)X(行地址)、Y(列地址)地址復(fù)用的128×128的存儲(chǔ)器矩陣為例,按改進(jìn)后的算法編寫的測(cè)試圖形片斷如圖6。

?
實(shí)際的算法圖形要配合讀寫的時(shí)序,因此圖形更為復(fù)雜,但對(duì)存儲(chǔ)器的操作次數(shù)與理論是一致的,改進(jìn)的Checkerboard算法雖然使用了較少的存儲(chǔ)器操作次數(shù),但其只能診斷出部分AF故障,與March算法相比,是以犧牲故障覆蓋率為代價(jià)來(lái)提高測(cè)試速度的。
在實(shí)際的生產(chǎn)型測(cè)試中,地址譯碼模塊由于結(jié)構(gòu)較存儲(chǔ)矩陣要簡(jiǎn)單得多,因此出現(xiàn)故障的概率遠(yuǎn)遠(yuǎn)小于存儲(chǔ)矩陣,且改進(jìn)的Checkerboard算法也能診斷部分的AF故障,是一種經(jīng)濟(jì)的測(cè)試算法。
6 結(jié)語(yǔ)
改進(jìn)的算法雖然提高了測(cè)試速度,但這種改進(jìn)犧牲了故障覆蓋率。但就實(shí)際的測(cè)試需要而言,是完全符合要求且行之有效的,在實(shí)際應(yīng)用中,要根據(jù)存儲(chǔ)器的故障類型和測(cè)試需求來(lái)選擇合適的診斷算法,才能達(dá)到滿意的效果。
電子發(fā)燒友App





評(píng)論