INVS利用gatearray實現(xiàn)post-mask的function ECO
掃描二維碼
隨時隨地手機看文章
隨著現(xiàn)代IC的設(shè)計發(fā)展,設(shè)計的規(guī)模和復雜度逐步增加,對于驗證完備性的挑戰(zhàn)越來越大,加之TO的時間壓力,芯片設(shè)計通常會出現(xiàn)下列的場景:
- 芯片回片一次點亮
- 大部分的case都可以順利通過
- 小部分的功能需要修正
對于重要的特性三,用戶可以選擇gatearray的cell高效的完成這一個任務(wù)。閑言少敘,ICer GO!
由于·硬件設(shè)計天然的特性,大部分芯片都會有reversion的計劃,有時候也被稱作engineering sample# (ES1,ES2,etc.)。產(chǎn)品的迭代效率通常都是reversion的重要因素,所以基于TO數(shù)據(jù)的bug高效修復(迭代快,成本可控)的要求就顯得極為重要。
TO數(shù)據(jù)space cell方式
基于前端設(shè)計經(jīng)驗,在芯片里邊規(guī)律性的撒一些spare cell,作為后續(xù)版本的bug修復使用,但是這種方法局限性比較大:
- Spare cell的難以匹配設(shè)計修改的要求:
- 繞線挑戰(zhàn)大,可能會占用很多的metal 資源,導致postmask metal fix的mask費用很高,周期很長
- 時序挑戰(zhàn):太遠的距離,導致transiton/cap都有新的變化,甚至需要使用更多的器件實現(xiàn)setup/hold的修復,都是潛在的時序挑戰(zhàn)
- 功能不全:對于bug,通常都具有未知性,很難做到有的放矢,spare cell的功能經(jīng)常被bug fix人員詬病功能不完備
- 距離不合適:bug修復需求的物理位置和spare cell的位置相去甚遠,
- Spare cell對資源的浪費
- 放置資源:spare cell會切實的占用std-cell的某些區(qū)域,為保證分布性,spare cell通常位置較為固定,這個對于APR flow的數(shù)據(jù)優(yōu)化會產(chǎn)生一定程度上的不利影響
- 繞線資源:spare cell的input 都需要tie connection(防止柵極浮空被擊穿),這些tie connection也是對繞線資源的消耗。
所以,實際芯片的funciton bug ECO的時候,眼睜睜的看著分布式的spare cell,就是用不起來,只能干瞪眼。心里默念,要是當時在某某區(qū)域多撒點某某cell該多好啊。像極了學生時代拿到成績的我們:要是考前把那個啥多看看,這部又能提高幾分。永遠的如果,永遠的下一次,反反復復無窮盡?。?/span>
gatearray方式的特點和用法
為了緩解這種問題,現(xiàn)在的std-cell開發(fā)商,在提供標準的std-cell庫的基礎(chǔ)上,也會提供給用戶用于post-mask的ECO 庫,由于設(shè)計結(jié)構(gòu)的原因,這個庫通常被稱為:std-cell gatearray 庫。是一種類似樂高積木的拼接方式來完成std-cell的構(gòu)建。
ECO 庫的特點
基于gatearray設(shè)計的ECO庫,所有的cell的版圖,都是使用基礎(chǔ)單元搭建起來的(gate),然后通過更改metal的方式來實現(xiàn)不同的功能,這個·和傳統(tǒng)的std-cell的設(shè)計思路是完全不同的。
只要是等寬的ECO cell,cell之間通常只有一層或兩層metal不同,意即:只改動metal就可以實現(xiàn)功能變化。譬如下例:等寬度的ECO filler cell 和FILLER cell的GDS比對XOR:
可以看到:ECO filler cell和ECO function cell只有M1不相等(baselayer 是完全一樣的),具體XOR區(qū)別見下圖:
這樣就可以通過嗲用芯片里邊現(xiàn)有的ECO filler cell,基于用戶需求,改變有限的metal層,從而實現(xiàn)任意功能的轉(zhuǎn)化,
- ECO filler -> ECO function cell
- ECO function cell -> ECO filler
ECO 庫的postmask bug fix 的應(yīng)用流程
postmask的改版,最麻煩的當屬功能修正,如果想更換一個cell的功能,通常要動到baselayer和metallayer。但是基于gatearray的ECO庫,則可以有效規(guī)避baselayer的改動,從而可以高效的完成postmask function bug fix。
ECO lib VS. std-cell LIB
在使用ECO庫之前,先看一下ECO cell和普通std-cell的版圖區(qū)別
在原本的std-cell和ECO庫中挑選相同功能/驅(qū)動力的cell
- INVX2
- GAINVX2
版圖差異
通過XOR,可以看到,這兩個cell的畫法是不太相同的
包括有源區(qū),POLY區(qū)個connect去都不太一樣(PS: cell boundary 是一樣的)?;究梢耘卸?,這樣的cell就是不同設(shè)計需求的產(chǎn)物
時序差異
從lib上看,兩者的面積是一樣的,這個case的時序也是基本類似的:
ECO庫的cell特點
為了有效的利用ECO庫,通常都會提供各種功能的器件,同時為了降低ECO庫的設(shè)計難度,通常會弱化對驅(qū)動力不要求。以當前case為例,相較std-cell 庫,ECO擁有了常規(guī)的與或非門,F(xiàn)F等,驅(qū)動力有所限制:
ECO庫的使用方法
為了方便GA(gatearray)進行功能替換,ECO 庫將所有的cell分成兩類:
- FILLER
- Function cell
由于所有的cell的base-layer都是一樣的,那么這里可以利用這個特性實現(xiàn)postmask的function metal fix方法。
- 數(shù)據(jù)準備:
- 在TO的數(shù)據(jù)庫上使用ECO FILLER進行填充。
- 在ECO FILLER不能覆蓋的區(qū)域,使用common filler進行填充,確保NWELL的連續(xù)
- 功能修復
- 基于芯片測試結(jié)果,出具bug fix方案
- 使用ECO function cell構(gòu)建相關(guān)ECO的腳本
- ECO cell 置換
- 在具有ECO FILLER填充的數(shù)據(jù)庫中帶入上述ECO腳本
- 使用ecoPlace方法,完成對與ECO function cell的器件替換
INVS會使用滿足ECO function cell寬度的ECO filler區(qū)域,完成這個替換
- 版層變動驗證
導出GDS,使用GDS XOR工具,確保bug fix后的GDS和原始GDS只有metal layer的差異
- 完成繞線:在APR工具里邊完成繞線
- 對數(shù)據(jù)和進行timing、LV和power的簽收驗證
- 使用最終的數(shù)據(jù)庫再次和原始TO的GDS進行XOR比對:出具版層變動的差異信息。觸發(fā)新的TO
對于上述流程有以下幾點需要注意:
- 設(shè)計人員需要使用ECO lib里的function cell進行bug fix
- ecoPlace的動作比較關(guān)鍵,用戶需要仔細查驗這個動作的日志和數(shù)據(jù)庫。步驟如下:
- 刪除現(xiàn)有所有的ECO filler
- 將ECO function cell放置到相連接cell的附近
- 恢復之前ECO filler的位置,在改動的區(qū)域,對于ECO filler cell做出做適當調(diào)整
INVS將原先的GA_FILLERX4置換成:GA_FILLERX2 + GA_INV,完成了一次post-mask的function ECO動作。通過XOR查驗。整個芯片只有這里的metal發(fā)生變化,其他的部位都沒有變化,符合post-mask的metal fix的設(shè)計預期
PS:具體INVS的流程腳本會上傳到星球,請各位按需取拿
【敲黑板劃重點】
利用gatearray修復postmask的function bug,事半功倍!





