黃 瑋
江蘇信息職業(yè)技術(shù)學(xué)院,江蘇無錫 214153
隨著集成電路的規(guī)模越來越大,嵌入的存儲器也隨著變多,傳統(tǒng)的測試方法受測試難度和測試成本所制約,已不為芯片設(shè)計廠商所接受。目前存儲器最常用的測試方法是通過內(nèi)建自測試存儲器電路[1](MBIST:存儲器內(nèi)建自測試)來實現(xiàn),其通過eda軟件,自動生成存儲器的測試電路,根據(jù)相應(yīng)的算法對存儲器地址進行讀寫,完成存儲器的測試。該種測試方法雖然會在電路中加入一些控制邏輯,從而增加芯片的面積,但是對于大規(guī)模測試電路,其能夠?qū)崿F(xiàn)測試自動化,減小測試時間,提高測試覆蓋率,很大程度上節(jié)約測試成本。
本文采用MBIST測試方法,完成對電路中存儲器的測試,同時加入了標志位移位電路,能夠準確判斷錯誤存儲器的位置,從而減少測試診斷時間。
MBIST是以存儲器為目標,通過采用特定的算法,來檢測存儲器中存在的某些缺陷的一種測試方法,其主要由bist控制電路,測試向量生成電路,測試響應(yīng)比較電路三部分組成[2-3],其常用的結(jié)構(gòu)圖如圖1所示。
圖1中bist控制電路其內(nèi)部為一個狀態(tài)機電路,控制bist電路對存儲器進行讀寫操作;測試向量生成電路根據(jù)所選的算法生成不同的測試向量,不同的算法可以得到不同的存儲器測試覆蓋率;測試響應(yīng)比較電路是通過對實際存儲器輸出值與控制電路生成的理想值做對比,來判斷存儲器是否有問題。當(dāng)測試完成時,該電路會同時生成test_done和fail_h兩個標志信號來判定測試結(jié)果,test_done表示測試是否完成,fail_h表示測試是否有問題,只有當(dāng)test_done為“1”,fail_h為“0”時,才能判定測試沒有問題。
嵌入式SRAM的MBIST的測試結(jié)構(gòu)有兩種:并行MBIST結(jié)構(gòu)和串行MBIST結(jié)構(gòu),并行測試結(jié)構(gòu)是一組MBIST控制邏輯同時控制多片SRAM進行讀寫操作,由于其同時對多片SRAM進行測試,這樣可以節(jié)約測試時間,適用于設(shè)計中存儲器比較多的情況下,但由于同時測試時,會產(chǎn)生較大的功耗,可能會燒壞芯片,這是設(shè)計中常常需要注意的;串行測試結(jié)構(gòu)是MBIST控制邏輯逐一對每片SRAM進行測試,其能夠有效地節(jié)省功耗,但測試時間較長,當(dāng)SRAM數(shù)量較大時測試成本較高,所以適用于存儲器較少的設(shè)計。本文的設(shè)計中包含70個SRAM,其中core中含有39個,ARM IP中含有31個,由于ARM IP是一個硬核,其包含的2個MBIST結(jié)構(gòu)已經(jīng)存在,不需另行設(shè)計,故文本主要完成core的MBIST設(shè)計。由于core中的存儲器屬于同一個時鐘域,考慮到layout布局時floorplan信息,故只生成一個bist電路來控制,同時由于core中的存儲器數(shù)量較多,故采用并行結(jié)構(gòu)完成MBIST的設(shè)計。
MBIST結(jié)構(gòu)通過測試算法來完成存儲器中各種故障的檢測,目前常用的測試算法有:Checkerboard算法,March算法,GALPAT算法等。不同的算法復(fù)雜度不同,得到的故障覆蓋率也各不相同,其中Checkerborad算法最為簡單,能夠檢測的故障覆蓋率也最低,March C算法是MBIST中最為常用的一種算法,其能夠檢測出存儲器的大部分故障,GALPAT算法能夠得到最高的故障覆蓋率,但算法較為復(fù)雜,故需要更多的測試時間。考慮到測試時間增加帶來的測試成本,本文折衷選擇March C算法來實現(xiàn)設(shè)計中存儲器的自測試。
March C算法是依次通過對存儲器地址升序和降序讀寫來完成存儲器測試的一種方法[4],其能夠檢測出存儲器中固定故障,狀態(tài)轉(zhuǎn)換故障,耦合故障,翻轉(zhuǎn)耦合故障等。March C算法主要通過6個步驟完成整個測試[5]:
1)按照升序?qū)Υ鎯ζ鞯拿總€地址進行寫0操作。
2)按照升序?qū)Υ鎯ζ鞯拿總€地址進行讀0寫1操作。
3)按照升序?qū)Υ鎯ζ鞯拿總€地址進行讀1寫0操作。
4)按照降序?qū)Υ鎯ζ鞯拿總€地址進行讀0寫1操作。
5)按照降序?qū)Υ鎯ζ鞯拿總€地址進行讀1寫0操作。
整個設(shè)計的MBIST頂層結(jié)構(gòu)如上圖所示,其主要由4部分組成:core的MBIST結(jié)構(gòu),標志位移位(scan out)電路和兩個內(nèi)嵌的ARM MBIST結(jié)構(gòu)。fail_h,test_done,bist_clk為頂層結(jié)構(gòu)的輸入輸出引腳,用來控制和判定測試結(jié)果,其中core和ARM共用一個bist_clk,測試時core和ARM中的MBIST結(jié)構(gòu)同時測試,test_done用來判定每個MBIST是否測試結(jié)束,當(dāng)信號為“1”時,表示測試完成,fail_h信號來觀測存儲器的測試結(jié)果,如果為“1”時,說明測試有問題,存儲器存在故障;為“0”時,則表示通過測試。但集成的fail_h信號僅能用來判定存儲器是否存在故障,無法定位故障存儲器的位置,為此電路中加入了一個標志位移位(scan out)電路,其電路結(jié)構(gòu)如圖 所示,當(dāng)測試結(jié)果出現(xiàn)問題時,其能夠準確找出哪個存儲器存在故障,為MBIST測試結(jié)果的診斷提供了便利。
圖3為控制位移位(scan out)電路,其由兩部分組成,圖3a是將每個存儲器collar生成的fail_h信號通過或操作得到一個fail_total標志信號,然后傳輸給core bist電路。fail_total判定整個設(shè)計的測試結(jié)果,如果core中任意存儲器存在故障,則該存儲器相對應(yīng)的fail_h為“1”,經(jīng)過一個或門后,得到的fail_total也為“1”,說明電路中存在故障,將fail_total傳輸給core bist,得到頂層的判斷信號fail_h_top;圖3b是將存在故障的fail_h移位輸出,從而判斷出哪個存儲器存在故障,其主體電路是一個移位寄存器電路。 每個存儲器 collar生成的fail_h信號在scanen的控制下移位輸出,然后再與scanen與操作,得到每個存儲器所對應(yīng)的fail_h_scanout信號,來判斷該存儲器是否存在故障。其中控制信號scanen信號決定了fail_h的傳輸,其verilog描述如下:
當(dāng)測試完成標志信號test_done為“1”時,說明測試已經(jīng)完成,每個存儲器所對應(yīng)的fail_h信號產(chǎn)生完畢,同時當(dāng)count信號為111時,scanen信號為“1”,這時進行fail_h的移位輸出。
基于NC_verilog軟件對設(shè)計中生成的MBIST結(jié)構(gòu)進行仿真驗證,得到的仿真結(jié)果如下所示。圖4中可以發(fā)現(xiàn),由于arm核中的存儲器數(shù)量和規(guī)模較core中小,arm早于core完成MBIST測試,當(dāng)core電路對應(yīng)的test_done信號為“1”時,core完成MBIST測試,此時的fail_h信號為“0”,說明測試中存儲器不存在故障。圖5是波形放大后的scan out的仿真結(jié)果,為了便于測試觀察,在圖5中可以看到在2,074,525ns和2,076,525ns處電路中加入了兩個脈沖,當(dāng)?shù)谝幻}沖到來時,使能信號scanen變?yōu)椤?”,這時開始輸出每個存儲器測試完成后相對應(yīng)的fail_h, 當(dāng)?shù)诙€脈沖時,core中所有存儲器的fail_h輸出完畢,在兩個脈沖之間的scan_out信號一直為“1”,說明存儲器不存故障。
本文基于實際項目完成了電路中MBIST結(jié)構(gòu)的插入,同時插入了一個簡單的存儲器診斷電路,在實際測試中,如果某個存儲器發(fā)生故障,能夠通過和MBIST電路相結(jié)合準確檢測出來,最后通過NC_verilog仿真驗證了結(jié)構(gòu)的準確性。
[1]DEKKER R, BEENAKER F, THIJSSEN L.A realistic fault model and test algorithm for static random access memories[J].IEEE Trans Comp Aid Des,1990,9(6):567-572.
[2]BUSHNELL M L,AGRAWAL V D. 超大規(guī)模集成電路測試—數(shù)字、存儲器和混合信號系統(tǒng)[M].蔣安平,馮建華,王新安,譯.北京:電子工業(yè)出版社,2005.
[3]MBIST Architect Process Guide[M].Mentor Graphics,2008.
[4]Mentor Graphics. Embedded Deterministic Test(EDTTM)-DFT Technology for High-Quality LowCost Manufacturing Test [M]. Technical Publication,2006-03.
[5]Hwang Sungbae, Abraham J A, Test data compression and test time reduction using an embedded micropr ocessor[J].IEEE T ransactions o n Very Lar ge Scale Integration (VLSI) Systems, 2003, 11(5):853-862.