版圖ECO的那點事(中)
時間:2026-02-01 14:41:55
手機看文章
掃描二維碼
隨時隨地手機看文章
令人又愛又恨的ECO,它又回來了。
在上一講中,和大家一起討論地兩個關(guān)鍵話題:
- 功能ECO的介入時機
-
eco_netlist的用法和技巧
點擊查看上期文章:版圖ECO的那點事(上)
ECO版圖實現(xiàn)的技巧和經(jīng)驗
在實際的ECO中,版圖的實現(xiàn)是非常重要的步驟。是否能完成STA的腳本期望,是數(shù)據(jù)庫能否走向收斂的關(guān)鍵點。一般的STA對應的ECO和相應的修復方法如下:
可以看到,ECO的物理實現(xiàn)就是兩種情形
- size_cell
-
add buffer
這里邊最會產(chǎn)生的影響其實是面積和器件的位置變動(dis-placement)
通常的版圖和ECO流程如下圖,在sign-off階段,理想的是以類似silicon-freeze的方式進行操作
ECO的簡明流程如下:

這里的關(guān)鍵節(jié)點是在,placement/legalization,任何器件的位置變動帶來的意外的影響都有可能導致ECO無法按照期望方向進行,這是因為,原有數(shù)據(jù)庫的cell的放置被調(diào)整,之前的繞線需要做相應的調(diào)整,同時帶來更多的timing/驅(qū)動能力的問題,這樣就會給數(shù)據(jù)庫帶來不期望的抖動。為了盡可能保證原有數(shù)據(jù)庫的狀態(tài),這里需要引入一個新名詞:Minimal Physical Impact Flow(MPI):
為了實現(xiàn)MPI的效果,ICC給出了它的一套解決方案。
【敲黑板劃重點】

較小的dis-placement帶來更為穩(wěn)定的版圖數(shù)據(jù),繞線的挑戰(zhàn)也比較小,這個是MPI的核心思想下邊一起來看一下,如何使用合理的命令和流程來弱化legalization帶來的影響:

傳統(tǒng)的legalize命令在跑流程的時候,可以很好的進行增量性的legalization,但是到了ECO這里,legalize的動作相對于版圖的穩(wěn)定性而言,就是有點太大了,需要使用place_eco_cells來實現(xiàn)MPI:

從上邊這個截圖可以看出來,傳統(tǒng)的legalize模式,帶來的明顯的average/max dis-placement,但是place_eco_cell可以非常好的避免這種情況的發(fā)生。place_eco_cell可以實現(xiàn)MPI的目標,而且run-time速度也很快,這到底是為什么呢?天底下還有這么既省時又省力的兩全其美的好事情?
通常使用的legalize_placement -increment命令,它是一個全局命令,它會在需要legalize的cell就近找尋位置,如果找不到,那么就會push周圍的cell,從而在ECO cell就近產(chǎn)生足夠的空間,這樣會產(chǎn)生明顯的漣漪效應,尤其在高利用率的區(qū)域。但是place_eco_cell的行為完全不一樣,它的操作范圍完全是有用戶決定的,它的目的就是一個:在規(guī)定的范圍內(nèi),完成目標cell的legalization,如果在規(guī)定的區(qū)域內(nèi)(dis-placement threshold)找不到,它就直接放棄,較小的作用范圍,帶來的就是高速的執(zhí)行速度。這里有一個test-case,一個全局的的時序修復(size_cell),基于同樣的改變,看看兩個命令的表現(xiàn):
-
CMD: legalize_placement -increment

可以看到,這里有30871個cell的位置被改變,ECO的cell其實只有7081個cell??梢姶蠹s有23K個cell的移動,是為了來給ECO cell騰挪空間的。 - CMD: place_eco_cell -eco_changed -displacement_threshold 10 -max_displacement_threshold 10

仔細看圖片描述,place_eco_cell的作用范圍只有10um,目標cell也只有eco_changed的7081個cell,所以runtime極快。
在使用place_eco_cell之后,如何原始數(shù)據(jù)庫的cell并沒有被動到,只有ECO_changed cell 被動到,所以有一些沒法完成legalize的cell,需要使用legalize_placement -increment 再次調(diào)整,保證整個數(shù)據(jù)庫的legalization:

這里可以看到,使用legalize_placement -increment ,moved cell較之前會有所好轉(zhuǎn)。這樣通過兩步走的手段,可以有效地保證eco_changed的cell的legalization,也能最大限度地完成其他cell的原地不動。這里附帶完整腳本流程圖如下:





