1. 程式人生 > 其它 >數字邏輯基礎與verilog設計_Verilog設計與邏輯綜合例項解析(DFT)

數字邏輯基礎與verilog設計_Verilog設計與邏輯綜合例項解析(DFT)

技術標籤:數字邏輯基礎與verilog設計數控分頻器的設計verilog時鐘倍頻verilog程式碼

//源自微信公眾號 “數字晶片實驗室”

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

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

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

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

3、設計中存在生成時鐘

4、設計中存在門控時鐘

5、設計中存在鎖存器

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

通常,晶片內不應存在三態匯流排,因為它們消耗更多的功耗。如果晶片上存在三態匯流排,應注意避免匯流排競爭,即同一時間在總線上驅動不同的值。

匯流排衝突會消耗更多的功耗,進而導致晶片損壞。 在掃描測試階段避免匯流排競爭的途徑是控制三態緩衝器的使能,即與掃描使能訊號進行“與”運算。

在正常工作模式,scan_en_n訊號為邏輯“1”,允許控制訊號通過。

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

1857c40377b81df4499b8f95a010a154.png

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

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

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

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

f981ef9d441462ec790ea950bff821a0.png

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

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

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

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

dcee58631e5e15fa853030041afc1ffb.png

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

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

解決方法如下:

d7c2b4a748da17446448f79026bda40e.png

74e55821b27e0d8a9d314b635ad0f903.png

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

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

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

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

所示:

6e3a8a6d4871a86f9e2ff68bcc3652ae.png