一種可以提高DFT設計測試覆蓋率的有效方法
伴隨著現(xiàn)代大規(guī)模集成電路制造工藝的快速發(fā)展,設計工程師必需直面芯片制造過程中可能產(chǎn)生的物理缺陷。現(xiàn)今流行的可測試性設計(DFT:Design For Testability)應運而生,并為保證芯片的良品率擔任著越來越重要的角色。
在DFT設計中,測試覆蓋率及其測試效率是最重要的指標。一方面,理想的設計目標當然希望測試能夠遍及整個芯片的邏輯,盡管理想值100%是不容易達到的;另一方面,測試效率亦非常重要,設計工程師總希望用最少的測試向量達到預期的測試覆蓋率,來降低芯片的測試成本。
當然,DFT設計必須保證正常的邏輯功能為前提。不幸的是,功能設計總會忽略一些潛在的問題,導致最終的測試覆蓋率往往不盡如人意。這種情況下,設計中有一些邏輯無論如何都不能被觀測到或控制到,因此即使測試矢量的數(shù)量有很大的增幅,也不能使結果改善很多。
在實際的DFT設計中,存在對測試覆蓋率有較大損害的兩種情況:一種存在于數(shù)字邏輯-模擬邏輯(包括存儲器)輸入-輸出處之陰影部分,另一種存在于特定的多芯片封裝情況下未綁出的輸入-輸出焊墊處。二者的共同點在于:測試模式下部分邏輯的不可控或不可觀測。
設計背景
本文探討的設計目標是一個來自意法半導體的數(shù)字音頻信號處理芯片,要求對數(shù)字功能邏輯進行掃描鏈測試,覆蓋率達到98%以上。其功能邏輯中存在一些模擬模塊,如鎖相環(huán)、模數(shù)轉換器和一些存儲器單元等。更為重要的是,該芯片需要基于不同的應用系統(tǒng)需要,不但需要單獨封裝形式,也需要多芯片共享同一封裝。這樣,在某些多芯片封裝中,就有部分焊墊未引出或接地。而測試的設計初衷是產(chǎn)生一組測試向量適用于所有封裝形,就要求考慮最嚴格的封裝下可用的管腳資源。
DFT設計有兩個基本原則:可控制性和可觀測性,即DFT設計要求所有輸入邏輯是可控的和輸出邏輯是可測的。顯然,考慮到本設計中的模擬模塊接口和封裝形式的資源有限性,不可控邏輯和不可觀測邏輯對不小于98%的目標測試覆蓋率給出了很大的挑戰(zhàn)。
如圖1所示,在某種芯片封裝情況下,除信號test_si和test_so外,其余焊墊并未綁出(接地或懸空),從而造成信號port_A、port_B、port_C和port_D的不可控,以及信號port_Z1、port_Z2和port_Z3的不可觀測(懸空)。導致很多相關邏輯不能正常參于DFT測試,測試覆蓋率受到較大的損害。
圖1 封裝造成的測試邏輯不可控和不可測
DFT設計的可控制性和可觀測性是通過原始的管腳來實現(xiàn)的,事實上功能設計不可能專門為DFT保留足夠多的管腳。如圖2所示的數(shù)字-模擬接口,由于PLL模塊的存在,顯然信號net_1、net_2和net_3上得到的測試結果不可直接觀測(不可測),組合邏輯1相應的測試覆蓋率降低了;同時,由于PLL模塊的存在,信號net_4、net_5和的net_6不能直接賦值(不可控),導致組合邏輯2的部分邏輯不能正常參于DFT測試,相應的測試覆蓋率受到較大的損害??偟膩碚f,芯片的測試覆蓋率降低了。
圖2 模擬模塊造成的測試邏輯不可控和不可測
解決方案
針對設計中的上述情況,可以通過適當添加測試點的方式,使原來不可控和不可測的邏輯變化反映到掃描鏈上,使之變得間接可控和可測,以期提高整個芯片的測試覆蓋率和測試效率。
對于圖1所示的某些封裝中,不可控和不可測的未綁出(接地或懸空)管腳,圖3給出了相應的定制的解決方案。
圖3 添加控制點和觀測點提高測試覆蓋率(封裝部分管腳未綁出情況)
對于輸入管腳,添加一個帶有選擇端的寄存器。當控制選擇信號為“0”時,電路處于正常工作狀態(tài),功能邏輯從輸入端接收到正常的輸入數(shù)值。當選擇控制為“1”時,電路處于測試狀態(tài)。在移位過程中,這些點由測試鏈預置相應的值;在捕獲過程中,將之接地防止不定態(tài)在設計中的傳播。
在輸出管腳處,添加少量異或門和選擇器件。當控制選擇信號為“0”時,電路處于正常工作狀態(tài),輸出管腳正常輸出功能信號。當選擇控制為“1”時,電路處于測試狀態(tài),用異或門將未能綁出的管腳的變化引出,相當于這些管腳也可以被觀測了。
針對圖2所示的數(shù)字-模擬接口,部分模擬模塊輸入信號通過組合邏輯給出,但在測試時并沒有邏輯將這些“終點”的信號影響引出觀察,因此這些點是不可觀測的。這與DFT設計可觀測要求(需管腳直接輸出)不相符,可能造成測試覆蓋率的損害。同時,部分模擬模塊輸出信號控制相應的組合邏輯,但在測試中,這些點是“浮空”(不可控制)的。這與DFT設計可控要求(需管腳直接輸入)不相符,造成測試覆蓋率的降低。圖4給出了類似前者的定制解決方案,其實質也是把這些不可控和不可測點連到測試鏈上去,讓這些邏輯間接可觀測或可控制以改善測試結果。
圖4添加控制點和觀測點提高測試覆蓋率(數(shù)字-模擬接口情況)
如圖所示,在模擬模塊輸入信號處添加少量異或門和選擇器件,并將它們連到掃描鏈上去。當控制選擇信號為“0”時,電路處于正常工作狀態(tài),模擬模塊的輸入管腳正常接收功能信號。當選擇控制為“1”時,電路處于測試狀態(tài),用異或門或者其他器件將未能觀測管腳的變化引出,相當于這些管腳間接可以被觀測了。
如圖所示,在模擬模塊輸出信號處添加一個帶有選擇端的寄存器。當控制選擇信號為“0”時,電路處于正常工作狀態(tài),模擬模塊信號正常輸出到后續(xù)的功能邏輯。當選擇控制為“1”時,電路處于測試狀態(tài):在移位過程中,這些點由測試鏈預置相應的值;在捕獲過程中,將之接地防止不定態(tài)在設計中的傳播。
對于其他的模擬模塊如ADC, 存儲器等,采用類似的方法可改善整個芯片的測試覆蓋率和測試效率,達到目標測試效果。
結語
在前面提及的實際項目DFT設計中,功能邏輯部分含有萬余寄存器。為提高測試覆蓋率,添加僅12個寄存器及很少部分組合邏輯作為測試點后,即可將測試覆蓋率從原來的95%提高到 98.3%。由此看來,這種方法是很有效率的。并且可根據(jù)項目實際需要,添加更多點以期達到更高覆蓋率,理論上測試覆蓋率可接近100%。
推薦RTL功能設計時就能考慮這種測試結構。這樣做設計工程師之間能夠了解彼此的設計需求,功能測試結構明晰,在DFT設計過程中省去很多麻煩。如果發(fā)現(xiàn)這類問題在RTL完成之后,一些DFT工具也提供用戶自定義的測試點插入,但是要注意測試控制信號選取一定要與需要的測試模式匹配,否則無法完成相應的測試期望。這種方法的關鍵是了解在哪里加測試點更為有效。
評論