對于我每天一千來字的文章來說券时,這個題目起的著實有點大。要知道現(xiàn)在的DFT所涉及的內(nèi)容實在太多了础拨,以至于催生了專門的DFT team和專門做DFT的工程師束昵。但是對于芯片設計中的每一環(huán),對DFT所要做的工作都必須有所了解聘鳞,今天我就把我所理解的DFT簡單介紹一下薄辅。
DFT全稱為Design for Test要拂,可測性設計。就是說我們設計好一個芯片后站楚,在仿真時可能99%的用例都通過了脱惰,怎么保證流片出來的實際芯片也能正常工作呢?這里大家必須建立一個概念就是窿春,不管是前端后端拉一,總之只要是設計階段,不管是waveform還是版圖旧乞,他都不能完全代表最終出來的芯片的樣子蔚润,那些設計圖紙只是我們美好的想象,實際的制造結果可能會有工藝的偏差的尺栖。比如GDS里沒有short嫡纠,但是有可能制造出來的芯片真的有short,這就關系到我們所謂的良率問題决瞳。那么DFT的終極目標就是在流片后货徙,我也能通過某些測試的方法,保證芯片和我們的設計圖紙吻合皮胡,不出現(xiàn)異常痴颊。
這其實是一件很難的事情。因為芯片太小了屡贺,我們不可能拿著電子顯微鏡一點一點地去看吧蠢棱,那要怎么做呢?其實它蘊含的思想很簡單甩栈,或者說人類還沒有發(fā)明出更高級的辦法泻仙。大家肯定有在家里用過電筆的經(jīng)歷,或者稍微專業(yè)一點的都知道萬用表量没,他們都是有內(nèi)部的自建電路玉转,然后利用探針來測被測電路的某一點電勢,進而判斷是否發(fā)生open/short殴蹄。對于芯片的測試也沒有更高級究抓,也是用這種方法,可以利用探針探測芯片的輸入輸出引腳袭灯,看看輸入輸出是否正常刺下,第二種比較厲害的是用探針直接伸到芯片內(nèi)部,測里面某些點的邏輯信號稽荧。這個方法邏輯上聽起來也沒什么大不了橘茉,但是實際實現(xiàn)是非常難的,需要把芯片放到專用的測試機器上,我們叫ATE機臺畅卓,測試的價格也非常高昂擅腰。每次到這我都想感嘆一下人類真是太強了。
既然有了這種ATE機臺髓介,理論上我們就可以測芯片中每一點的邏輯信號惕鼓,進而判斷芯片是否良好筋现。但是實際上是不可能行得通的唐础,因為會耗費巨大的時間,可能到宇宙盡頭也測不完矾飞,其次它實在是太貴了一膨,探針每選擇一個點的價格都是我們打工人想象不到的程度。如何更為經(jīng)濟洒沦、快速的來測豹绪,就是DFT工程師的主要工作目的了。
對于DFT工程師來說申眼,芯片的open/short可以等效為兩種fault:Stuck at 0瞒津、stuck at 1,說的是不管信號如何變化括尸,某些點可能一直保持0或者1巷蚪,其實就是發(fā)生了open/short。噢濒翻,我這里還說的不太準確屁柏,也有可能是cell內(nèi)部的錯誤,不是metal的open/short有送。舉一個簡單的例子淌喻,一個二輸入與門,它在輸入10雀摘、01裸删、00的時候輸出都為0,看起來是正常的阵赠,但是輸入11的時候輸出也為0涯塔,這就不對了,發(fā)生了stuck at 0的錯誤豌注;如果對于所有的輸入都輸出1伤塌,那也不對,發(fā)生了stuck at 1的錯誤轧铁。那么反過來每聪,我現(xiàn)在想測這個與門是否正常,怎么來測?思路是先測是否有stuck at 0药薯,再測是否有stuck at 1.那么我如何測出它是否有stuck at 0绑洛?我就先假設它有SA0,我就找它應該輸出為1的輸入是什么童本,然后灌進去這個輸入(這個例子里就是11)真屯,如果測到輸出為0,那么他就發(fā)生SA0穷娱,如果輸出為1绑蔫,那么他就沒有SA0. SA1也是一樣,我把所有應該產(chǎn)生0的輸入灌進去(10泵额、01配深、00),如果至少有一個的輸出為1嫁盲,那么就發(fā)生SA1篓叶,如果全部輸出為0,那么就沒有發(fā)生SA1. 聽起來這個邏輯關系好像很簡單羞秤,對于這個與門的例子一個小學生可能都會自發(fā)的想出要這么測缸托。但我這里費了這么多筆墨要把這件事講清楚,就是當電路復雜的時候瘾蛋,需要這樣一步一步來推導所需要的輸入是什么俐镐。
不知不覺寫了這么多了,明天再繼續(xù)講瘦黑。
這是我的第22篇文章京革。微信公眾號:偉醬的芯片后端之路