引言
隨著微電子產(chǎn)業(yè)日新月異的發(fā)展,IC設(shè)計的規(guī)模與集成度越來越大。SoC是現(xiàn)階段IC設(shè)計的標(biāo)準(zhǔn)結(jié)構(gòu)之一,通常由CPU核、存儲器、邏輯電路、各種外設(shè)及接口組成,而存儲器通常占據(jù)芯片的絕大部分。常用的嵌入式存儲器有ROM、Flash、SRAM、DRAM等。典型的存儲器的基本結(jié)構(gòu)如圖1所示,存儲器主要由地址線、數(shù)據(jù)線、控制線、地址譯碼器、存儲單元陣列、輸入/輸出電路、讀出放大器、寫驅(qū)動電路等部分組成。
嵌入式存儲器的測試主要分為3類:
①直流參數(shù)測試(DC Parameter Testing)——校驗工作電流、電平、功率、扇出能力、漏電流等參數(shù)特性。
②交流參數(shù)測試(AC Parameter Testing)——檢測建立時間、保持時間、訪問時間等時間參數(shù)特性。
③功能測試(Functional Testing)——測試存儲器件的邏輯功能是否正常,對存儲單元、讀出放大器、寫驅(qū)動等產(chǎn)生的物理故障進行檢測。
本文主要討論第3類中嵌入式存儲器的功能測試。
1 采用的方法
現(xiàn)有的嵌入式存儲器測試算法都是直接對存儲器內(nèi)部單元直接測試,所用的算法在測試復(fù)雜度和故障覆蓋率之問難以找到一個平衡點。本文介紹的方法采用外圍互連線測試和內(nèi)部單元結(jié)合的測試算法,摒棄了以往只是測試內(nèi)部單元的算法,提高了測試效率,故障覆蓋率也有所提升。
外圍互連線測試:假設(shè)存儲器本身功能正常,控制線也總是可控的,故障只是由于器件裝配引起的,需要對存儲器的地址線和數(shù)據(jù)線可能的短路和開路故障進行測試。
內(nèi)部單元測試:對存儲器的譯碼、讀寫等功能進行測試。
兩種測試的目的不一樣。內(nèi)部單元測試的目的在于判斷內(nèi)存單元的好壞,所以在程序設(shè)計中只要發(fā)現(xiàn)故障就可以終止退出,同時報告發(fā)生故障的內(nèi)存單元;外圍互連測試的目的不僅僅在于發(fā)現(xiàn)故障,而且還要求能對故障進行精確定位。所以在算法設(shè)計中需要將這兩步測試過程按順序執(zhí)行完畢。
2 嵌入式存儲器測試的故障模型
對故障機理進行分析,建立相應(yīng)的故障模型是產(chǎn)生算法的前提。
2.1 外圍互連線測試的故障模型
對于外圍互連線,本文采用的是固定故障模型,固定故障也是存儲器外嗣互連線的主要故障。固定故障模型包括固定邏輯故障、固定開路故障和橋接短路故障。固定邏輯故障是指由于物理缺陷,數(shù)據(jù)線或者地址線的狀態(tài)不受輸入的控制,綁定到邏輯O或者1狀態(tài),包括S-A-1(Stuck-at-1)和S-A-0(stuck-at-0)故障。而在外圍互連線測試中,固定開路故障和橋接短路故障往往可以等價于S-A-0或S-A-1的固定邏輯故障,在此不作贅述。
2.2 內(nèi)部單元測試的故障模型
對于內(nèi)部單元,除了上文提到的類似的固定邏輯故障和固定開路故障模型,還有狀態(tài)轉(zhuǎn)換故障(transitionfault)、數(shù)據(jù)保持故障(data-maintaining fault)、狀態(tài)耦合故障(coupiing fault)和多重寫入故障(multiple access fault)等。
狀態(tài)轉(zhuǎn)換故障:0→1或1→0的狀態(tài)轉(zhuǎn)換至少有一個不被正確執(zhí)行。
數(shù)據(jù)保持故障:存儲單元無法保持一個邏輯值持續(xù)一定的時間。
狀態(tài)耦合故障:當(dāng)且僅當(dāng)單元j處于某一個特定狀態(tài)y(y∈{0,1})時,單元i總是為某一個確定值x(x∈{0,1}),則稱單元i耦合于單元j。耦合關(guān)系不一定具有對稱性,也就是說單元i耦合于單元j,并不一定單元j也耦合于單元i。
多重寫入故障:對單元i寫入x(x∈{0,1})導(dǎo)致單元j也寫入了x,則稱單元i有多重寫入故障。多重寫入故障不一定具有對稱性。
3 存儲器的測試算法
目前存儲器的測試算法中比較著名的有March算法及其各種變種算法、Gallop算法,這些算法太過復(fù)雜,測試效率不高。本文所提出的算法不僅故障覆蓋率能夠達到實際應(yīng)用標(biāo)準(zhǔn),而且測試效率有明顯提高。
3.1 外圍互連線的測試算法
存儲器外圍互連線包括控制線、數(shù)據(jù)線和地址線。對于控制線的測試沒有比較規(guī)范的測試方法,但是如果控制線存在故障,存儲器基本無法正常工作。一般而言,控制線的故障在對數(shù)據(jù)線和地址線的簡單測試中就能被發(fā)現(xiàn),所以不作專門測試。
數(shù)據(jù)線和地址線的測試的目的不只是發(fā)現(xiàn)故障,更主要的是精確定位故障以便很容易地進行修復(fù)或更換。采用“三步法”,該算法不僅能夠精確地定位故障,而且還能區(qū)分固定邏輯故障和橋接短路故障這兩種不同類型,具體算法如表1所列。
第一步測試數(shù)據(jù)線是否存在開路故障和固定邏輯故障,第二步測試數(shù)據(jù)線是否存在短路故障,第三步測試地址線是否存在開路或短路故障。在第二步測試結(jié)束時進行數(shù)據(jù)線故障診斷,在第三步測試結(jié)束時進行地址線故障診斷。
3.2 內(nèi)部存儲單元測試算法
內(nèi)部單元的測試算法有Checkboard測試、MSCAN算法、March算法、GALPAT、跨步法等算法,本文對內(nèi)部存儲器單元進行測試,采用如圖2所示的棋盤和跨步相結(jié)合的算法,在檢測數(shù)據(jù)單元時采用棋盤圖形,在檢測地址譯碼時采用跨步圖形,將棋盤測試法和跨步法各自的優(yōu)點合二為一。
4 測試結(jié)果
將本文所涉及的算法進行測試效率與故障覆蓋率的分析,并將結(jié)果進行比較,如表2所列。其中d為地址線數(shù)目,n為數(shù)據(jù)線數(shù)目,M為待測存儲器空間大小,一般M=2d。從表中可以看出這些算法的測試效率比典型的March算法效率高很多,三步法的測試復(fù)雜度只有4(n+d+1),棋盤跨步相結(jié)合的算法的測試復(fù)雜度也有5M,在故障覆蓋率也滿足應(yīng)用要求,完全可以為實際項目所采用。