劉振田,李維波,林城美,李衛(wèi)超
?
一種改進(jìn)的隨機(jī)存儲(chǔ)器自檢測March算法
劉振田,李維波,林城美,李衛(wèi)超
(海軍工程大學(xué)艦船綜合電力技術(shù)國防科技重點(diǎn)實(shí)驗(yàn)室,武漢 430033)
本文對隨機(jī)存儲(chǔ)器各類故障的失效機(jī)制和當(dāng)前已有的解決算法做了簡要介紹,進(jìn)而對該問題更好的解決和各個(gè)指標(biāo)的優(yōu)化平衡提出了一種改進(jìn)的March算法,從而達(dá)到了較高的故障覆蓋率。
嵌入式RAM 自檢測試 March算法 故障覆蓋率
隨著集成電路的不斷發(fā)展,現(xiàn)代的芯片越來越趨于密集化和集成化,嵌入式片上系統(tǒng)(SOC)應(yīng)用炙手可熱。然而,密封芯片帶來好處的同時(shí),對其內(nèi)部的構(gòu)成檢測,尤其是對嵌入式片上系統(tǒng)內(nèi)部存儲(chǔ)單元的狀態(tài)測試成為一個(gè)難題。根據(jù)半導(dǎo)體工業(yè)協(xié)會(huì)和ITRS2000的統(tǒng)計(jì)分析,2002年嵌入式存儲(chǔ)器在芯片面積的比重為52%,到2014年已達(dá)到94%[1]。此時(shí),以往的通過硬件的內(nèi)建自檢測電路(Built-in Self Test, BIST)的方法已不適用,首先需要芯片有較多的I/O外接口,其次硬件電路增加了芯片占用的面積,還增加了生產(chǎn)成本,最后在已存在的密閉系統(tǒng)添加外部硬件在實(shí)現(xiàn)上存在較大的難度。相比之下,軟件自檢測試方式顯示出極大地優(yōu)越性。
本文在討論業(yè)已成熟的March算法和幾種改進(jìn)算法的基礎(chǔ)上,提出了一種新的改進(jìn)的March算法,達(dá)到了較高的故障覆蓋率,具有一定優(yōu)勢。
RAM又分為靜態(tài)RAM(SRAM: static RAM和動(dòng)態(tài)RAM(DRAM: dynamic RAM)。一般來說,靜態(tài)RAM應(yīng)用較多,其結(jié)構(gòu)構(gòu)成如圖1所示。SRAM可簡化為以下幾個(gè)分機(jī)構(gòu):數(shù)據(jù)寄存器,數(shù)據(jù)存儲(chǔ)矩陣,行列的地址緩存器,行列的地址譯碼器,行列的讀寫驅(qū)動(dòng)器。在這之中的某個(gè)或幾個(gè)分機(jī)構(gòu)都可能發(fā)生或多或少的故障。
圖1 靜態(tài)隨機(jī)存儲(chǔ)器基本結(jié)構(gòu)
在檢測隨機(jī)存儲(chǔ)器SRAM的故障之前,有必要對其故障產(chǎn)生機(jī)理進(jìn)行探究。隨機(jī)存儲(chǔ)器RAM的故障可簡要分為以下兩類,存儲(chǔ)陣列單元中的故障和外圍電路的故障。隨機(jī)存儲(chǔ)器的故障往往發(fā)生在單元陣列中的較多。其中,又可分為某一個(gè)單元自身故障和兩個(gè)或兩個(gè)以上的單元相互的耦合故障兩種情況。
某一個(gè)單元自身可出現(xiàn)以下多種故障,如表1所示:
表1 常見單個(gè)存儲(chǔ)單元故障模型
多個(gè)單元故障主要指的是耦合故障(Coupling Fault,CF)。耦合故障又包括:倒置耦合故障CFin,固化耦合故障CFid,橋耦合故障BF[2],相鄰模式敏感故障NPSF等,其具體定義內(nèi)涵可參見文獻(xiàn)[3,4]。
而外圍電路中發(fā)生的故障主要指的是地址譯碼故障(Address decoder Fault,AF),讀寫邏輯故障等等。Van de Goor 等研究者證明地址譯碼器、讀寫邏輯的故障與存儲(chǔ)單元陣列的故障在功能上是等價(jià)的,因此只需檢測存儲(chǔ)單元陣列的故障[5]。在不少文獻(xiàn)中,作者想盡各種方法,浪費(fèi)大量的操作時(shí)間和復(fù)雜度,過分追求故障來源,從工程上應(yīng)用的角度來說,RAM是內(nèi)嵌式的,一旦出現(xiàn)故障問題,即使得知了故障來源也無濟(jì)于事。鑒于內(nèi)嵌式芯片價(jià)格往往比較低廉,換上一片新的芯片即可。而本文提出的算法則側(cè)重于故障的覆蓋率和一定的操作復(fù)雜度間的平衡。
根據(jù)上面所提到的不同的故障模式,專家學(xué)者提出了諸多的RAM自檢測試算法。常見的有如March算法、Walking算法、Calloping算法等[6]。
在1982年ITC國際測試會(huì)議上推出的March算法(齊步法)是使用比較廣泛和成熟的RAM自檢測算法之一[7]。March算法一方面取得了比較大的故障覆蓋率,另一方面,在操作次數(shù)的簡化上也有較大的優(yōu)勢。
其原理表達(dá)形式如下:
后人在此基礎(chǔ)上又做了不少的改進(jìn),相繼提出了March B算法,March C算法,March C-算法等。其各自算法表達(dá)如下所示:
March B:
March C :
March C-:
其中,上劃線“ˉˉ”表示正序操作,即由低地址到高地址進(jìn)行操作;下劃線“____”表示反序操作,即由高地址到低地址進(jìn)行操作。
March B算法在增加了若干讀寫單元后提高了一定的故障覆蓋率,但操作時(shí)間長度和復(fù)雜度過于冗長。而March C則在時(shí)間操作的復(fù)雜度和長度上有一定的優(yōu)勢。March C-算法改進(jìn)了March C算法,去掉了上述步驟4“讀0”,減少這個(gè)操作使得原來的11次操作變成10次,而并沒有犧牲任何的測試覆蓋率。March C-算法能探測到較多的故障,如固定型故障,開路故障,轉(zhuǎn)換故障,尋址故障和絕大多數(shù)的耦合故障,操作復(fù)雜度低,故得到了較為廣泛地應(yīng)用。但是卻不能檢測到DRF數(shù)據(jù)保持故障[2],也不能檢測到WDF寫干擾故障,DRDF偽讀破壞故障[8]。
March C-算法已經(jīng)有較高的故障覆蓋率,但仍不能準(zhǔn)確檢測到DRF數(shù)據(jù)保持故障,WDF寫干擾故障,DRDF偽讀破壞故障。本文提出的一種新的隨機(jī)存儲(chǔ)器自檢測March新算法正是基于這一出發(fā)點(diǎn),對于相應(yīng)的故障提出相應(yīng)的檢測手段即March單元,以達(dá)到更高的故障覆蓋率。其原理表達(dá)如下所示:
在這一新算法中,新添加了March新元素,使之構(gòu)成了W0,W0,R0和W1,W1,R1兩部分,可有效檢測WDF寫干擾故障,這一工作機(jī)理可解釋為:一次寫0(1)后,再寫0(1),將其讀出和寫入的0(1)作比較,一致則無故障,排除二次寫操作影響原存儲(chǔ)信息;構(gòu)成了R0,R0和R1,R1兩部分,可有效檢測偽讀破壞故障。這一工作機(jī)理可解釋為:讀0(1)后再讀0(1),第二次讀出的信息和原寫入的0(1)作比較,排除第一次讀的動(dòng)作影響原存儲(chǔ)信息。為了消除數(shù)據(jù)保持故障,在兩個(gè)March單元之間插入等待周期DELAY單元。
在提出的改進(jìn)的March算法中,雖然在故障覆蓋率方面有了極大的提升,幾種算法的故障覆蓋率比較如表2所示(注:并未列出全部故障)。由于插入了相應(yīng)故障檢測的操作單元,尤其是DELAY單元的添加,必然加大了時(shí)間長度和復(fù)雜度,可以說新算法比較適合應(yīng)用于對故障覆蓋率要求高,但對操作時(shí)間長度和復(fù)雜度要求不嚴(yán)格的場合。
表2 幾種算法故障覆蓋比較
本文基于故障產(chǎn)生的機(jī)理,提出了一種改進(jìn)的March算法:March C-WD。經(jīng)過一定的測試驗(yàn)證,這種新算法提高了故障覆蓋率,可進(jìn)一步完善了隨機(jī)存儲(chǔ)器的故障完整性檢測。但也有不足之處,即新算法是以犧牲一定的操作時(shí)間為代價(jià)。為了最大限度減小芯片面積,可將自檢測程序放入芯片空閑ROM中。當(dāng)芯片復(fù)位,程序指針指向自檢程序的首地址,運(yùn)行檢測程序,如發(fā)現(xiàn)錯(cuò)誤進(jìn)行報(bào)警,并停止繼續(xù)主程序;如檢測無錯(cuò)誤則程序指針指向用戶主程序。
[1] S.Kirmura, E.M Clarke. A parallel algrithm for bonary decision diagrams. IEEE International Conference on Computer Design, 1990: 220-223.
[2] 宋毅. 嵌入式隨機(jī)存儲(chǔ)器測試與仿真研究. 湖南大學(xué)碩士學(xué)位論文[D], 2008: 14-15.
[3] 姚俊. 基于 BIST 的嵌入式存儲(chǔ)器可測性設(shè)計(jì)算法研究. 哈爾濱工程大學(xué)碩士學(xué)位論文[D], 2007: 16-20: 32-37.
[4] 高樹靜. 嵌入式微處理器可測性設(shè)計(jì)研究與實(shí)現(xiàn). 青島大學(xué)碩士學(xué)位論文[D], 2003: 44-47.
[5] M.L. Bushnell, V.D. Agrawal essentials of electronic testing for digital, memory and mixed- signal VLSI circuits[M]. USA: Kluwer Academic Publishers, 2000.
[6] 左正軍, 程新明, 李加慶, 等. 基于March算法的存儲(chǔ)器測試控制器設(shè)計(jì)[J]. 微計(jì)算機(jī)信息, 2007, 23(23): 107-109.
[7] M. Marinescu. Simple and efficient algorithms for functional RAM testing [J]. Proc. ofInt. Test Conference, pp. 236-239, 1982.
[8] 郭雙友. 嵌入式存儲(chǔ)器測試算法的研究與實(shí)現(xiàn). 西安電子科技大學(xué)碩士論文[D], 2009: 26.
An Improved Algorithm for Random Access Memory Self-test
Liu Zhentian, Li Weibo, Lin Chengmei, Li Weichao
(National Key Laboratory for Vessel Integrated Power System Technology, Naval University of Engineering, Wuhan 430033, China)
TP333.8
A
1003-4862(2014)12-0053-03
2014-05-18
劉振田(1990-),男,碩士研究生。研究方向:電力電子與電力傳動(dòng)。