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