關鍵詞 故障原語,靜態故障,動態故障,存儲器測試,故障覆蓋率
1 引言
隨著深亞微米VLSI技術的發展,大量的不同廠家的電路設計或核集成到一個芯片上。存儲器密度的增長使存儲器的測試面臨著更大的挑戰。嵌入式RAM存儲器是難測試的電路,因為存儲器的測試通常需要大量的測試模式來激活存儲器并將存儲器的單元內容讀出來與標準值進行比較。在可以接受的測試費用和測試時間的限制下,準確的故障模型和有效的測試算法是至關重要的。而為了保證測試時間和故障覆蓋率,測試的好壞大大的依賴于所選的功能故障模型。
以前大部分關于故障模型的論文都是把故障的敏化固定在多一個操作上(如一個讀或一個寫),這些功能故障被叫作靜態功能故障。而基于缺陷注入和SPICE仿真的DRAM的試驗分析表明:在沒有靜態故障的情況下存在另外一種多于一個操作才能敏化的故障(如一個連續的讀和寫操作),即動態故障。大部分的測試算法主要針對靜態故障,對動態故障的覆蓋率比較低,但動態故障的測試也是非常重要的[1]。
2 存儲器故障模型
故障模型可以用故障原語(Fault Primitive)來表示。單個單元故障用符號<S/F/R>表示,兩個單元耦合故障用符號<Sa;Sv/F/R>表示。S表示單個單元的敏化操作序列,Sa表示耦合單元的敏化操作序列,Sv表示被耦合單元的敏化操作序列,F表示故障單元的值F {0,1},R表示讀操作的邏輯輸出值R {0,1,-}。‘-’表示寫操作激活故障,沒有輸出值。故障原語可以構成一個驅動所有存儲器功能故障的操作序列的完整集合。
2.1單個單元靜態故障
單個單元靜態故障有12種可能的故障原語,而這12種故障原語可以看作是一個六個功能故障模型的集合,下面是這六種功能故障:1)狀態故障(State Fault);2)轉換故障(Transition Fault);3)寫干擾故障(Write Disturb Fault);4)讀破壞故障(Read Destructive Fault); 5)偽讀破壞故障(Deceptive Read Destructive Fault);6)錯誤讀故障(Incorrect Read Fault)。這些故障在文章[2]中有詳細的解釋。
在文章[3]中提到固定故障(Stuck-at Faults)的故障原語是< /0/->和< /1/->,所以固定故障被認為是狀態故障與轉換故障的并集。固定開路故障(Stuck Open Fault)[4]是由于斷開的字線引起的,即0w1或1w0的操作是不能完成的,所以可以認為是轉換故障;另外由于存儲器的讀出依賴于靈敏放大器,可以認為是錯誤讀故障,所以把固定開路故障認為是轉變故障和錯誤讀故障的并集。
2.2靜態耦合故障
靜態耦合故障的故障原語有36種,可以被歸納為以下七種類型的功能故障模型[2]:1)狀態耦合故障(State Coupling Fault); 2)干擾耦合故障(Disturb Coupling Fault); 3)轉換耦合故障(Transition Coupling Fault);4)寫破壞耦合故障(Write Destructive Coupling Fault); 5)讀破壞耦合故障(Read Destructive Coupling Fault);6)偽讀破壞耦合故障(Deceptive Read Destructive Coupling Fault); 7)錯誤讀耦合故障(Incorrect Read Coupling Fault)。這些故障在文章[2]中有詳細的解釋。
2.3單個單元的動態故障
只考慮S=xWyRz這種情況。單個單元動態故障的故障原語有12種,可以被歸納為以下三種類型的功能故障模型:1)動態的讀破壞故障(Dynamic Read Destructive Fault);2)動態的偽讀破壞故障(Dynamic Deceptive Read Destructive Fault);3)動態的錯誤讀故障(Dynamic Incorrect Read Fault)。這些故障在文章[1]中有詳細的解釋。
2.4動態耦合故障
主要分析兩個單元的動態耦合故障,它可分為四種類型。只研究其中的兩種(兩個連續的操作都應用在耦合單元和兩個連續的操作都應用在被耦合單元)。兩個單元的動態耦合故障的故障原語有32種,可以被歸納為以下四種類型的功能故障模型[1]:
1)動態干擾耦合故障(Dynamic Disturb Coupling Fault): 耦合單元的連續的兩個寫,讀操作使被耦合單元的值發生跳變。
2)動態的讀破壞耦合故障(Dynamic Read Destructive Coupling Fault):耦合單元的某一特定值使被耦合單元的連續的兩個寫,讀操作改變了存儲單元的邏輯值并輸出錯誤的值。
3)動態的偽讀破壞耦合故障(Dynamic Deceptive Read Destructive Coupling Fault):耦合單元的某一特定值使被耦合單元的連續的兩個寫,讀操作改變了存儲單元的邏輯但輸出正確的值。
4)動態的錯誤讀耦合故障(Dynamic Incorrect Read Coupling Fault):耦合單元的某一特定值使被耦合單元的連續的兩個寫,讀操作返回錯誤的值但存儲單元的值沒有發生改變。
3 存儲器測試
在文章[2]中提到的March SS算法如圖1所示,它被認為能測出上面所提到的所有的靜態簡化故障。在文章[3]中把固定開路故障認為是轉換故障和錯誤讀故障的并集,但是由于固定開路故障的敏化必須使上次讀的值與本次所期望讀的值反向,所以對它的測試的算法是不同于錯誤讀故障的算法。通過對圖1所示March SS算法的分析可以很容易的發現它不能測出固定開路故障,只須在它的四個元素M1,M2,M3,M4中任意一個元素的一個寫操作的后面增加一個讀操作就能測出固定開路故障(如在元素M1的w1面加一個r1)。為了規則性,可以在M1,M2,M3,M4四個元素的后面都增加一個讀操作,得到March SS’算法,其算法如圖2所示。
圖1. March SS算法
圖2. March SS’算法
(a)
(b)
表1. (a)March SS’算法對偽讀破壞故障的覆蓋率,(b) March SS’算法對偽讀破壞耦合故障的覆蓋率
圖3. March SSE算法
表2. March SS和March SSE對單個單元的動態故障的覆蓋率
表3. March SS和March SSE對兩個單元的動態耦合故障的覆蓋率
本文通過對嵌入式存儲器的幾種不同的類型的動態和靜態簡化功能故障的分析,在原有的主要用來測試靜態故障的March SS算法的基礎上提出了March SSE算法。該算法長度為22N , N為存儲器的字的個數,其中每個字包含一位。與March SS算法相比較,March SSE算法在測試長度不變的情況下,其故障覆蓋率有了大幅度的提高。不但能測出March SS算法所測試的全部的功能故障,而且還能檢測出March SS算法所遺漏的固定開路故障,以及85%以上的第2節所描述的動態故障,故障覆蓋率得到了大幅度地提高。
本文作者創新點:本文在March SS算法的基礎提出了一種改進的隨機存取存儲器的測試算法-March SSE算法,該算法在測試長度不變的情況下,不但能檢測出原算法所能檢測的所有故障,而且還能測出原算法不能檢測出的固定開路故障,以及85%以上的由連續的寫、讀兩個操作敏化的動態故障。該算法在測試長度不變的情況下大大地提高了故障覆蓋率。
參考文獻
[1] S. Hamdioui, Z. Al-Ars, and A. J. van de Goor, “Testing static and dynamic faults in random access memories,” in Proc. VLSI Test Symp., 2002, pp. 395-400.
[2] S. Hamdioui, A. J. van de Goor and M. Rodgers, “March SS: A Test for All Atatic Simple RAM Faults,” In Proc. Of the IEEE Int. Workshop on Memory Technology, Design and Testing, Bendor, France, pp. 95-100.
[3] S. Hamdioui, Z. Al-Ars, and A. J. van de Goor, “Linked faults in random access memories: concept, fault models, test algorithms, and industrial results,” In IEEE Trans. On Computer-Aided Design of Integrated Circuits and Systerms, Vol.23, No.5, pp. 195-205, May 2004.
[4] R. Dekker, F. Beenaker, and L. Thijssen, “A realistic Fault model and test algorithm for static random access memories,” IEEE Trans. Computer-Aided Design, Vol.9, pp. 567-572, June 1990.
[5] 曹海源,孫世宇,張志紅, “一種可編程的通用存儲器仿真測試系統,” 微計算機信息, 2005年第21卷第4期, 84-85頁.