劉振田,李維波,林城美,李衛(wèi)超
?
一種改進的隨機存儲器自檢測March算法
劉振田,李維波,林城美,李衛(wèi)超
(海軍工程大學艦船綜合電力技術國防科技重點實驗室,武漢 430033)
本文對隨機存儲器各類故障的失效機制和當前已有的解決算法做了簡要介紹,進而對該問題更好的解決和各個指標的優(yōu)化平衡提出了一種改進的March算法,從而達到了較高的故障覆蓋率。
嵌入式RAM 自檢測試 March算法 故障覆蓋率
隨著集成電路的不斷發(fā)展,現(xiàn)代的芯片越來越趨于密集化和集成化,嵌入式片上系統(tǒng)(SOC)應用炙手可熱。然而,密封芯片帶來好處的同時,對其內部的構成檢測,尤其是對嵌入式片上系統(tǒng)內部存儲單元的狀態(tài)測試成為一個難題。根據(jù)半導體工業(yè)協(xié)會和ITRS2000的統(tǒng)計分析,2002年嵌入式存儲器在芯片面積的比重為52%,到2014年已達到94%[1]。此時,以往的通過硬件的內建自檢測電路(Built-in Self Test, BIST)的方法已不適用,首先需要芯片有較多的I/O外接口,其次硬件電路增加了芯片占用的面積,還增加了生產成本,最后在已存在的密閉系統(tǒng)添加外部硬件在實現(xiàn)上存在較大的難度。相比之下,軟件自檢測試方式顯示出極大地優(yōu)越性。
本文在討論業(yè)已成熟的March算法和幾種改進算法的基礎上,提出了一種新的改進的March算法,達到了較高的故障覆蓋率,具有一定優(yōu)勢。
RAM又分為靜態(tài)RAM(SRAM: static RAM和動態(tài)RAM(DRAM: dynamic RAM)。一般來說,靜態(tài)RAM應用較多,其結構構成如圖1所示。SRAM可簡化為以下幾個分機構:數(shù)據(jù)寄存器,數(shù)據(jù)存儲矩陣,行列的地址緩存器,行列的地址譯碼器,行列的讀寫驅動器。在這之中的某個或幾個分機構都可能發(fā)生或多或少的故障。

圖1 靜態(tài)隨機存儲器基本結構
在檢測隨機存儲器SRAM的故障之前,有必要對其故障產生機理進行探究。隨機存儲器RAM的故障可簡要分為以下兩類,存儲陣列單元中的故障和外圍電路的故障。隨機存儲器的故障往往發(fā)生在單元陣列中的較多。其中,又可分為某一個單元自身故障和兩個或兩個以上的單元相互的耦合故障兩種情況。
某一個單元自身可出現(xiàn)以下多種故障,如表1所示:
表1 常見單個存儲單元故障模型

多個單元故障主要指的是耦合故障(Coupling Fault,CF)。耦合故障又包括:倒置耦合故障CFin,固化耦合故障CFid,橋耦合故障BF[2],相鄰模式敏感故障NPSF等,其具體定義內涵可參見文獻[3,4]。
而外圍電路中發(fā)生的故障主要指的是地址譯碼故障(Address decoder Fault,AF),讀寫邏輯故障等等。Van de Goor 等研究者證明地址譯碼器、讀寫邏輯的故障與存儲單元陣列的故障在功能上是等價的,因此只需檢測存儲單元陣列的故障[5]。在不少文獻中,作者想盡各種方法,浪費大量的操作時間和復雜度,過分追求故障來源,從工程上應用的角度來說,RAM是內嵌式的,一旦出現(xiàn)故障問題,即使得知了故障來源也無濟于事。鑒于內嵌式芯片價格往往比較低廉,換上一片新的芯片即可。而本文提出的算法則側重于故障的覆蓋率和一定的操作復雜度間的平衡。
根據(jù)上面所提到的不同的故障模式,專家學者提出了諸多的RAM自檢測試算法。常見的有如March算法、Walking算法、Calloping算法等[6]。
在1982年ITC國際測試會議上推出的March算法(齊步法)是使用比較廣泛和成熟的RAM自檢測算法之一[7]。March算法一方面取得了比較大的故障覆蓋率,另一方面,在操作次數(shù)的簡化上也有較大的優(yōu)勢。
其原理表達形式如下:


后人在此基礎上又做了不少的改進,相繼提出了March B算法,March C算法,March C-算法等。其各自算法表達如下所示:
March B:

March C :

March C-:

其中,上劃線“ˉˉ”表示正序操作,即由低地址到高地址進行操作;下劃線“____”表示反序操作,即由高地址到低地址進行操作。
March B算法在增加了若干讀寫單元后提高了一定的故障覆蓋率,但操作時間長度和復雜度過于冗長。而March C則在時間操作的復雜度和長度上有一定的優(yōu)勢。March C-算法改進了March C算法,去掉了上述步驟4“讀0”,減少這個操作使得原來的11次操作變成10次,而并沒有犧牲任何的測試覆蓋率。March C-算法能探測到較多的故障,如固定型故障,開路故障,轉換故障,尋址故障和絕大多數(shù)的耦合故障,操作復雜度低,故得到了較為廣泛地應用。但是卻不能檢測到DRF數(shù)據(jù)保持故障[2],也不能檢測到WDF寫干擾故障,DRDF偽讀破壞故障[8]。
March C-算法已經有較高的故障覆蓋率,但仍不能準確檢測到DRF數(shù)據(jù)保持故障,WDF寫干擾故障,DRDF偽讀破壞故障。本文提出的一種新的隨機存儲器自檢測March新算法正是基于這一出發(fā)點,對于相應的故障提出相應的檢測手段即March單元,以達到更高的故障覆蓋率。其原理表達如下所示:

在這一新算法中,新添加了March新元素,使之構成了W0,W0,R0和W1,W1,R1兩部分,可有效檢測WDF寫干擾故障,這一工作機理可解釋為:一次寫0(1)后,再寫0(1),將其讀出和寫入的0(1)作比較,一致則無故障,排除二次寫操作影響原存儲信息;構成了R0,R0和R1,R1兩部分,可有效檢測偽讀破壞故障。這一工作機理可解釋為:讀0(1)后再讀0(1),第二次讀出的信息和原寫入的0(1)作比較,排除第一次讀的動作影響原存儲信息。為了消除數(shù)據(jù)保持故障,在兩個March單元之間插入等待周期DELAY單元。
在提出的改進的March算法中,雖然在故障覆蓋率方面有了極大的提升,幾種算法的故障覆蓋率比較如表2所示(注:并未列出全部故障)。由于插入了相應故障檢測的操作單元,尤其是DELAY單元的添加,必然加大了時間長度和復雜度,可以說新算法比較適合應用于對故障覆蓋率要求高,但對操作時間長度和復雜度要求不嚴格的場合。
表2 幾種算法故障覆蓋比較

本文基于故障產生的機理,提出了一種改進的March算法:March C-WD。經過一定的測試驗證,這種新算法提高了故障覆蓋率,可進一步完善了隨機存儲器的故障完整性檢測。但也有不足之處,即新算法是以犧牲一定的操作時間為代價。為了最大限度減小芯片面積,可將自檢測程序放入芯片空閑ROM中。當芯片復位,程序指針指向自檢程序的首地址,運行檢測程序,如發(fā)現(xiàn)錯誤進行報警,并停止繼續(xù)主程序;如檢測無錯誤則程序指針指向用戶主程序。
[1] S.Kirmura, E.M Clarke. A parallel algrithm for bonary decision diagrams. IEEE International Conference on Computer Design, 1990: 220-223.
[2] 宋毅. 嵌入式隨機存儲器測試與仿真研究. 湖南大學碩士學位論文[D], 2008: 14-15.
[3] 姚俊. 基于 BIST 的嵌入式存儲器可測性設計算法研究. 哈爾濱工程大學碩士學位論文[D], 2007: 16-20: 32-37.
[4] 高樹靜. 嵌入式微處理器可測性設計研究與實現(xiàn). 青島大學碩士學位論文[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算法的存儲器測試控制器設計[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] 郭雙友. 嵌入式存儲器測試算法的研究與實現(xiàn). 西安電子科技大學碩士論文[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-),男,碩士研究生。研究方向:電力電子與電力傳動。