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

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

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

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

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

可以看到,這里有30871個(gè)cell的位置被改變,ECO的cell其實(shí)只有7081個(gè)cell。可見大約有23K個(gè)cell的移動(dòng),是為了來給ECO cell騰挪空間的。 - CMD: place_eco_cell -eco_changed -displacement_threshold 10 -max_displacement_threshold 10

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

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





