Design For testability
DFT(Design for Test):可測試性設計(DFT)是一種集成電路設計技術,它將一些特殊結構在設計階段植入電路,以便設計完成后進行測試。電路測試有時並不容易,
這是因為電路的許多內部節點信號在外部難以控制和觀測。通過添加可測試性設計結構,例如掃描鏈等,內部信號可以暴露給電路外部。
總之,在設計階段添加這些結構雖然增加了電路的復雜程度,看似增加了成本,但是往往能在測試階段節約更多的時間和金錢。
DFT的理念基於 結構化測試(分治法)。它並不是直接對芯片的邏輯功能進行測試來確保功能正常。而是盡力保證電路之間的低層級模塊和它們之間的連接正確。
或者說,模塊和網表在布局布線為實際電路的制造過程中沒有錯誤。舉個例子就是,我們檢測完網表和模塊實現是正確的,那么我們就認為DFT測試通過。
這一點和功能測試區別很大。這個理念極大地減少了測試的工作量,同樣也和FPGA的set up debug wire有着異曲同工之妙。
DFT的關鍵也就在於取舍,測試邏輯的代價和效果的平衡。核心目的在於提高Observability 和Controllability。
DFT主要負責制造時產生的缺陷檢測,邏輯上的錯誤鞭長莫及。具體例子就是芯片挑體質。
在RTL設計階段開始介入,設計插入DFT邏輯,設計並驗證測試向量(功能仿真),綜合時序也要收斂,
得到芯片后進行機台調試。
DFT有三種主流的方法,SCAN,MBIST(Memory built in self-test)和Boundary scan.
它們分別針對寄存器、memory/ip核、chip互聯。
Scan技術(掃描鏈插入和基於掃描鏈的ATPG(Automatic Test Pattern Generation),自動測試向量生成)
其核心是基於掃描結構的觸發器。ATPG基於自動生成test vector的tool。
BIST,顧名思義Build In Self-test。自動生成隨機的輸入給到組合邏輯,根據組合邏輯的輸出判斷是否有問題。下圖是MBIST和其他SRAM測試方式的對比。
Boundry scan 涉及到一個JTAG協議,還有Boundary Scan cell。Jtag是IEEE的一個標准協議,包括5個引腳。
- TCK——測試時鍾輸入;
- TDI——測試數據輸入,數據通過TDI輸入JTAG口;
- TDO——測試數據輸出,數據通過TDO從JTAG口輸出;
- TMS——測試模式選擇,TMS用來設置JTAG口處於某種特定的測試模式。
- 可選引腳TRST——測試復位,輸入引腳,低電平有效。
邊界掃描測試是通過在芯片的每個 I/ O 腳附加一個邊界掃描單元 (BSC ,boundary scan cell) 以及一些附加的測試控制邏輯實現的,BSC主要是由寄存器組成的。每個I/ O管腳都有一個 BSC ,每個BSC有兩個數據通道 :一個是測試數據通道 ,測試數據輸入TDI (test data input) 、測試數據輸出TDO (test data output) ;另一個是正常數據通道,正常數據輸入NDI ( normal data input ) 、正常數據輸出 NDO (normal data output) 。
在正常工作狀態,輸入和輸出數據可以自由通過每個BSC,正常工作數據從NDI進,從NDO出。在測試狀態,可以選擇數據流動的通道:對於輸入的IC(集成電路,integrated circuit)管腳,可以選擇從NDI或從TDI輸入數據;對於輸出的IC管腳,可以選擇從BSC輸出數據至NDO,也可以選擇從BSC輸出數據至TDO。
圖2所示是邊界掃描測試應用的示意圖。為了測試兩個JTAG設備的連接,首先將JTAG設備1某個輸出測試腳的BSC置為高或低電平,輸出至NDO,然后,讓JTAG設備2的輸入測試腳來捕獲從管腳輸入的NDI值,再通過測試數據通道將捕獲到的數據輸出至TDO,對比測試結果,即可快速准確的判斷這兩腳是否連接可靠。
FPGA中也有類似的設計,就是set up debug(在綜合以后)。假如對某根信號線設置為true,那么Vivado會使用額外的邏輯和布線資源來構造額外的電路
來采集這個信號。通過設置采樣深度(一般1024T)我們就能得到這個信號的運行情況。最后再布局布線,生成bit流文件燒入FPGA。
同樣會增加布線壓力,消耗邏輯、布線以及存儲資源。注意,輸入和輸出信號不能設為debug,要加buffer。