DFT設計的主要目的是為了將defect-free的芯片交給客戶。
產品質量,通常使用Parts Per million(PPM)來衡量。
但是隨着IC從SSI到VLSI的發展,在test上花銷的時間越來越多,test的quality卻很難提高,這使得DFT的engineer不斷的發展着DFT的技術。
DFT engineer面對的第一個問題是設計內部的狀態的可測試性問題。在1970-1980年間,提出了ad hoc等可測試性設計的方法。
可以提高一個design的可測試性,但是對於sequential的電路還是很難進行ATPG的產生。
對於combinational的電路,有很多ATPG的算法可以用來進行test pattern的生成,但是對於sequential的電路卻很難。
后來帶有直接外部訪問的storage elements的提出,才解決了sequential的可測性與可觀性。這樣的cell叫做scan cells。
scan design是目前為止,使用最多的structure的DFT方法,通過將多個storage element連接為多個shift register來實現。
一個design中,所有的storage element都做了scan inserting,這樣的design叫做full-scan design;
一個design中,大多數的(超過98%)的storage element做了scan inserting,這樣的design叫做almost full-scan design。
一些不用SDFF替代的cell,可能是不想要在scan mode下被改變的register,本身就是shift register的寄存器(包括sync FF)
timing非常critical的path等。
一個design中,一些storage element做了scan inserting,並且使用了sequential的ATPG,這樣的design叫做partial-scan design。
其中的storage element主要為了break sequential feedback來選擇,從90年代起,隨着沈亞微米技術的發展,full_scan逐漸代替
partial_scan成為主流。
每一個DFF的D端值,可以表示為某些DFF的Q值和組合邏輯的函數來得到,Di=f(Qx, Input)。在SE為1的情況下,所有的Qx都有了確定的值。
如果整個chip的input pad也是固定值,那每一個DFF的D端值一定是可以計算出來的。
一些analog和ram類的輸出信號,着這種會進行bypass處理,保證Di是一個確定值。如果沒有相應的mux,那TMAX計算出的Di為不確定值。
相應DFF在移位出scan chain的時候,對應的cycle應該進行mask處理。
這些hardblock如果沒有bypass處理,會影響test coverage。
為了提高fault coverage,一些scan design rules必須被遵循。除了scan_design外,還有Built_in self_test(BIST)和test compression
也得到了很廣泛的應用。
而近幾年,DFT的測試開始從netlist轉向RTL level來減小test development的時間,以及testable的code。
scan register的替換,帶來的area increased,大約在15%
compression logic帶來的area increased,大約在1%
bist logic帶來的area increased,大約在2%--5%
defect的model類型有:
Stuck At
Transition
Path Delay
Bridge Test
IDDQ
針對芯片的三大部分,我們DFT工程師手里有三大法寶
BSCAN技術-- 測試IO pad,主要實現工具是Mentor-BSDArchit,sysnopsy-BSD Compiler
MBIST技術-- 測試mem, 主要實現工具是Mentor的MBISTArchitect 和 Tessent mbist
ATPG 技術-- 測試std-logic, 主要實現工具是:產生ATPG使用Mentor的 TestKompress 和synopsys TetraMAX;
插入scan chain主要使用synopsys 的DFT compiler/cadence的RTL Compiler
Mentor的工具更新為Tessent平台,包括工具:Tessent FastScan Tessent MemoryBIST
Tessent testKompress Tessent LogicBIST
Tessent Scan
Tessent Diagnosis
Insert scan:
1. 雖然教科書會介紹很多種DFT DRC,但是在實際設計中95%的工作在修復scan_clk和scan_reset的DRC violation
2. 修復clk/reset violation 的方法主要是用DC插入mux ,目的是使在scan_mode下clk和reset被芯片scan_clk和scan_reset pad控制。
同時,scan_clk和scan_reset pad會用於ATE給芯片施加激勵
3. 插入scan時,DFT Compiler必須修復的DRC violations 類別為D1/D2/D3/D9
4. 做全片級的DFT設計時,需要在scan_in,scan_out,scan_reset,scan_clk的IO pad 的OEN/IE/REN端插入mux,控制pad的輸入和輸出方向
Atpg patterns產生和仿真
1. 所有的模擬模塊,例如PLL,POR等,一般設置為black-box,無法用ATPG測試其內部
2. 芯片clk,power,reset的控制寄存器,一般不會放到scan_chain上,以免在測試時由於寄存器的動作,改變芯片工作狀態
3. 考慮power domain的開關,一般必須保證在scan測試時,所有power domain都打開,每個數字標准單元都能測試到。
4. 如果有模擬的IO pad,一般必須在產生pattern時mask掉,因為他們不是數字的,ATPG工具無法控制它們
5. 業界一般使用DC插入OCC (on chip clocking)模塊,實現at-speed scan測試電路
MBIST工具
目前使用較多的是MBISTArchi,但是Tessent MBIST以后會成為主流。原因是Mentor公司2013年已經宣布MBISTArchi將不再提供技術支持,
而且Tessent MBIST技術更為先進。
1. 所有的MBIST設計應該考慮diagnose,加入diagnose電路,方便診斷mem故障,這會在芯片量產時大大提高成品率。
2. 由於ARM與Mentor有合作,Coretex-A9以上的ARM核具有share-bus接口,可以很好支持Tessent Mbist,
就能夠實現ARM內核的mem的高速測試和訪問,也提高了ARM CPU的性能。
3. Tessent MBIST會使用JTAP,只占用TCK/TMS/TDO/TDI/TRST五個pad,比MBISTArich使用更少的pad資源
BSCAN 工具
1. 所有的模擬IO,一般無法用bscan來測試,不要加上bscan_cells
2. 所有需要測試的數字pad的OEN/IE/REN 在bscan_mode下,需要插mux來控制
3. 所有需要測試的數字pad的PU/PD 在bscan_mode下,一般需要插mux來控制,保證在bscan_mode下,
PU和PD=0,才能使bscan HIGHZ測試仿真通過
4. 所有JTAG的強制要求指令如IDCODE,EXIST必須在bscan電路中實現,特別是BYPASS
chip中的test mode可以分為analog(BIST),function,BIST,SCAN,IO
Yield:良率 (number of acceptable parts)/(total number of parts fabricated)
icg_mode,在shift時,設置為1,capture時,根據ATPG的情況來判斷。
icc_bypass,用在ac stuck at model下的測試,相比較於dc stuck at,低頻clock的clock define點不同,可以不需要在修
timing,而如果沒有ac stuck at,一些經過同一低頻clock,不同occ clock的邏輯,可能是異步的,但是在dc mode
在被作為同步,designer需要為此修很多timing,增加buffer。
ac mode下,會有很多低頻的clock mux,用於測試不同的邏輯。