DFT的簡單介紹(上)

對於我每天一千來字的文章來說,這個題目起的著實有點大。要知道現在的DFT所涉及的內容實在太多了,以至於催生了專門的DFT team和專門做DFT的工程師。但是對於晶片設計中的每一環,對DFT所要做的工作都必須有所瞭解,今天我就把我所理解的DFT簡單介紹一下。

DFT全稱為Design for Test,可測性設計。就是說我們設計好一個晶片後,在模擬時可能99%的用例都通過了,怎麼保證流片出來的實際晶片也能正常工作呢?這裡大家必須建立一個概念就是,不管是前端後端,總之只要是設計階段,不管是waveform還是版圖,他都不能完全代表最終出來的晶片的樣子,那些設計圖紙只是我們美好的想象,實際的製造結果可能會有工藝的偏差的。比如GDS裡沒有short,但是有可能製造出來的晶片真的有short,這就關係到我們所謂的良率問題。那麼DFT的終極目標就是在流片後,我也能透過某些測試的方法,保證晶片和我們的設計圖紙吻合,不出現異常。

這其實是一件很難的事情。因為晶片太小了,我們不可能拿著電子顯微鏡一點一點地去看吧,那要怎麼做呢?其實它蘊含的思想很簡單,或者說人類還沒有發明出更高階的辦法。大家肯定有在家裡用過電筆的經歷,或者稍微專業一點的都知道萬用表,他們都是有內部的自建電路,然後利用探針來測被測電路的某一點電勢,進而判斷是否發生open/short。對於晶片的測試也沒有更高階,也是用這種方法,可以利用探針探測晶片的輸入輸出引腳,看看輸入輸出是否正常,第二種比較厲害的是用探針直接伸到晶片內部,測裡面某些點的邏輯訊號。這個方法邏輯上聽起來也沒什麼大不了,但是實際實現是非常難的,需要把晶片放到專用的測試機器上,我們叫ATE機臺,測試的價格也非常高昂。每次到這我都想感嘆一下人類真是太強了。

既然有了這種ATE機臺,理論上我們就可以測晶片中每一點的邏輯訊號,進而判斷晶片是否良好。但是實際上是不可能行得通的,因為會耗費巨大的時間,可能到宇宙盡頭也測不完,其次它實在是太貴了,探針每選擇一個點的價格都是我們打工人想象不到的程度。如何更為經濟、快速的來測,就是DFT工程師的主要工作目的了。

對於DFT工程師來說,晶片的open/short可以等效為兩種fault:Stuck at 0、stuck at 1,說的是不管訊號如何變化,某些點可能一直保持0或者1,其實就是發生了open/short。噢,我這裡還說的不太準確,也有可能是cell內部的錯誤,不是metal的open/short。舉一個簡單的例子,一個二輸入與門,它在輸入10、01、00的時候輸出都為0,看起來是正常的,但是輸入11的時候輸出也為0,這就不對了,發生了stuck at 0的錯誤;如果對於所有的輸入都輸出1,那也不對,發生了stuck at 1的錯誤。那麼反過來,我現在想測這個與門是否正常,怎麼來測?思路是先測是否有stuck at 0,再測是否有stuck at 1。那麼我如何測出它是否有stuck at 0?我就先假設它有SA0,我就找它應該輸出為1的輸入是什麼,然後灌進去這個輸入(這個例子裡就是11),如果測到輸出為0,那麼他就發生SA0,如果輸出為1,那麼他就沒有SA0。 SA1也是一樣,我把所有應該產生0的輸入灌進去(10、01、00),如果至少有一個的輸出為1,那麼就發生SA1,如果全部輸出為0,那麼就沒有發生SA1。 聽起來這個邏輯關係好像很簡單,對於這個與門的例子一個小學生可能都會自發的想出要這麼測。但我這裡費了這麼多筆墨要把這件事講清楚,就是當電路複雜的時候,需要這樣一步一步來推導所需要的輸入是什麼。

不知不覺寫了這麼多了,明天再繼續講。

這是我的第22篇文章。微信公眾號:偉醬的晶片後端之路