//源自微信公眾號 「數字晶元實驗室」

可測試性(DFT)用來確保設計最終是可以測試的。DFT在增加故障覆蓋率(fault coverage)的同時也增加了面積。

影響設計可測試性的主要因素是什麼?

1、設計中存在三態匯流排

2、由一個觸發器的輸出驅動另一個觸發器的複位

3、設計中存在生成時鐘

4、設計中存在門控時鐘

5、設計中存在鎖存器

晶元上片上三態匯流排對可測試性有什麼影響,該如何處理它?

通常,晶元內不應存在三態匯流排,因為它們消耗更多的功耗。如果晶元上存在三態匯流排,應注意避免匯流排競爭,即同一時間在匯流排上驅動不同的值。匯流排衝突會消耗更多的功耗,進而導致晶元損壞。 在掃描測試階段避免匯流排競爭的途徑是控制三態緩衝器的使能,即與掃描使能信號進行「與」運算。

在正常工作模式,scan_en_n信號為邏輯「1」,允許控制信號通過。

測試模式下,scan_en_n信號為邏輯「0」假定這些使能的控制輸入來自觸發器的輸出。 如下圖所示:

這些緩衝器的Verilog示例代碼如下所示:

assign wire1 = (control_in1 & ~scan_en_n) ? in1 : 1』bz ;
assign wire1 = (control_in2 & ~scan_en_n) ? in2 : 1』bz ;

晶元中的一些觸發器的複位由其他觸發器驅動對可測試性有什麼影響,該如何處理它?

通常,觸發器的非同步置位或複位來自模塊和設計的輸入引腳。有時候,不可避免地由一個觸發器的輸出驅動另一個觸發器的非同步置位/複位。在這種情況下,在掃描測試期間,如果驅動觸發器獲得一個測試向量,使其複位另一個觸發器,則會發生功能錯誤。 為防止這種情況,複位信號應該和test_mode測試模式信號異或。如下圖所示:

在正常工作模式, test_mode為1b0。但是,在測試期間,test_mode信號為1b1,從而使非同步複位失效。

晶元中存在生成時鐘對可測試性有什麼影響,該如何處理它?

生成時鐘由時鐘分頻器通過觸發器或晶元中的PLL產生。

在這種情況下,需要在時鐘路徑中添加多路復用器,使用test_mode作為控制信號,多路復用器的輸入是常規時鐘和生成時鐘。

晶元中有門控時鐘對可測試性有什麼影響,該如何處理它?

在某些設計中,門控時鐘是不可避免的,它可以用來降低功耗。 因為時鐘現在通過組合邏輯,從而無法掃描測試。

解決方法如下:

組合反饋邏輯對可測試性有什麼影響,該如何處理它?

在任何設計的任何階段都應該避免存在組合邏輯反饋。我們應該使用lint和綜合工具定期地檢查。組合邏輯反饋電路的存在會導致設計中不可預測的邏輯行為。 由於組合邏輯環的行為依賴於延遲,我們無法使用任何ATPG演算法進行測試。 因此,在邏輯上應該避免組合邏輯環。

鎖存器對可測試性有什麼影響,該如何處理它?

為了使鎖存器具有可控性,需要使能和測試模式信號進行異或。如下圖

所示:


推薦閱讀:
相關文章