曾健平 王振宇 袁甲 彭偉 曾云



摘? ?要:面向March C+算法故障覆蓋率的問題,本文提出一種改進的March CS算法來完成存儲器SRAM的內建自測試.通過增加原算法元素的讀寫操作來敏化存儲單元的故障,檢測原算法不能敏化的靜態故障和動態故障,從而提高故障覆蓋率.最后,通過對1 024*32位靜態隨機存儲器進行故障仿真驗證,以及FPGA對SRAM芯片的應用性測試,March CS算法檢測靜態故障和動態故障的覆蓋率分別達到91.67%和76.93%.
關鍵詞:March CS算法;靜態故障; 動態故障; 故障覆蓋率;
中圖分類號: TN47? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文獻標志碼:A
An Improved SRAM Fault Built-in-self-test Algorithm
ZENG Jianping1,WANG Zhenyu1,YUAN Jia2,PENG Wei1,ZENG Yun1
(1.School of Physics and Microelectronics Science,Hunan University,Changsha 410000,China;
2. Institute of Microelectronics,Chinese Academy of Sciences,Beijing 100029,China)
Abstract: This paper proposed an improved March CS algorithm to complete the built-in self-test of SRAM
memory due to the problem of March C + algorithm's fault coverage. The static and dynamic fault of memory cell were sensitized by the original algorithm increasing the read-write operation of the algorithm element, so that the fault coverage was enhanced. Finally, the March CS algorithm achievesd 91.67% and 76.93% coverage of static and dynamic faults respectively through the simulation experiments of the 1 024*32-size fault static Randon-Access memory and the measurement of FPGA to SRAM chips.
Key words: March CS algorithm;static fault;dynamic fault;fault coverage
集成電路的發展一直遵循著摩爾定律,片上系統SoC(System-on-Chip)已經成為了集成電路IC(Integrated Circuit Design)設計的主流之一[1].隨著IC設計的發展與更新,集成電路的測試也成為一個備受關注的焦點問題.在如今的存儲器測試方法中,內建自測試BIST(Built-in-Self-Test)成為了一種主流測試方法[2-3].存儲器內建自測試MBIST不僅能簡化測試中的步驟,而且可以縮短測試所需時間,對故障的覆蓋比較全面[4].
存儲器內建自測試MBIST的研究集中在測試算法中,通過采用一種或多種測試算法對靜態隨機存儲器SRAM進行故障測試.目前比較常用的算法包括:MSCAN算法、棋盤算法、GALPAT算法以及March算法等.其中March算法[5]在當今存儲器測試應用較多,比較常用的有March C算法、March C+算法等,它們具有較高的故障覆蓋率,且測試時間短,但仍然有許多故障不能被覆蓋[6].
隨著集成電路內建自測試技術的發展,國外芯片公司已經設計出比較成熟的內建自測試的工具,比如Mentor公司的MBIST Architect軟件以及Synopsys開發出的DFT Compiler軟件.本文的算法是通過MBIST Architect軟件實現內建自測試[7],并且是對于memory compile生成的1024X32的SRAM進行功能仿真與驗證.
1? ?存儲器的故障概念
存儲器的故障一般指邏輯與功能上故障,其中主要包括固定故障(SAF)、轉換故障(TF)、讀破壞故障(RDF)、寫干擾故障(WDF)以及耦合故障(CF)
等[8].故障原語FP(Fault Primitive)是用來表示存儲器的故障行為,其通常的表現形式有兩種,分別為〈S/F/R〉與〈Sa;Sv /F/R〉,其中, 〈S/F/R〉通常表示單個單元的故障行為,而〈Sa;Sv /F/R〉通常表示兩個單元的故障敏化序列.其中S表示存儲器故障行為的操作和狀態,F表示故障單元的狀態值,R表示存儲器的讀操作的結果.而對于兩個單元的故障原語,Sa表示施主單位的敏化序列,a表示施主單元的地址.Sv表示故障單位的敏化序列,v表示故障單元的地址[9].
存儲器的故障類型一般有固定故障、轉換故障、寫干擾故障、讀破壞故障以及耦合故障等類型.其中,耦合故障(CF)是發生在多個存儲單元之間,是指某個單元的變化而影響到其他存儲單元發生變化.耦合故障的類型主要是以下幾種:反相耦合故障(CFin)是指某個存儲單元跳變為0或1時,而導致其它一個的存儲單元的值進行翻轉.定值耦合故障(CFid)是指某個存儲單元跳變為0或1時,而導致其它的存儲單元的值變為了一個固定值.狀態耦合故障(CFst)是指存儲單元在某一個確定狀態時,而導致了另一個存儲單元跳變到了錯誤狀態.