眾所周知,在prePlace階段打完P(guān)ower后,需要使用APR工具把網(wǎng)表中存在的例化完的instance來全局放置在core內(nèi),這個布局階段(place)會暴露出設(shè)計Case在不加任何約束下按工具默認的globaldensity等設(shè)置擺放cell所存在的風(fēng)險。
實際上在后端范圍,工程師通常提到的高風(fēng)險模塊指的就是congestion較高的模塊以及時序風(fēng)險較高的模塊,這兩者實際上都和place有著千絲萬縷的聯(lián)系,前者可能是因為place階段不合理/面積切分不合理導(dǎo)致局部繞線資源緊張,后者則有可能因為place的原因使得局部density過高導(dǎo)致timing eco階段hold插爆引起不能修的short drc。
這篇文章小編就來以APR placement flow為例,分析工具在place階段到底做了哪些事情,并且結(jié)合項目心得,講述幾種常見的解congestion的方法和思路。
實際上placement不止和route最后的drc結(jié)果息息相關(guān),更是和下個階段的cts時鐘樹密切相關(guān),一個優(yōu)秀的placement,擺的寄存器的位置比較合理/緊湊的話可以讓cts解drv的時候線長減短,進而減少很多為了解transition而插的INV,進而一定程度上優(yōu)化時鐘樹長和skew。
在數(shù)字電路中,單元的放置是很規(guī)范的,std cell的面積都是site的整數(shù)倍,而row是由site大小決定生成的,std cell也通常為一倍/二倍row高度,對應(yīng)的std cell也會snap到row上放置,其實從綜合工具DCG看初始狀態(tài)這些cell全部都是堆疊擺放的。而placement最重要的任務(wù),就是把這些cell擺好,不能有Overlap,不能有l(wèi)egalization的問題,不能有FE DRC。這就很類似于一堆散亂的樂高積木,我們要把它一個個的在地上(core row)鋪好,但是又要擺放的符合前端代碼(RTL)關(guān)系。
上述內(nèi)容就是指導(dǎo)innovus進行block placement的基礎(chǔ)flow了,由注釋可以發(fā)現(xiàn)主要包括設(shè)置placemode;設(shè)置opt mode,設(shè)置OCV derate參數(shù)加嚴時序,add_tie_cell來鉗位住logic 0/1的Pin,一端接pg net,一端接constant pin;進行Place以及Place_opt操作;存完db后,報timing以分析時序,也許有些ICer會疑惑PlaceOpt怎么就一個place_opt_design就一筆帶過了?事實上,APR布局布線的PlaceOpt階段工具是其中的一個重要步驟,主要負責(zé)對芯片的物理布局進行優(yōu)化,以滿足電氣約束和布局規(guī)則。
PlaceOpt階段工具的主要作用如下:
優(yōu)化芯片的物理布局:PlaceOpt階段工具可以通過對芯片的物理布局進行優(yōu)化,使得芯片的面積更小、功耗更低、性能更好。PlaceOpt階段工具會針對芯片的電氣約束和布局規(guī)則進行優(yōu)化,以達到最佳的布局效果。
解決布局沖突:在布局布線的過程中,可能會出現(xiàn)布局沖突的情況,比如兩個器件之間的距離過近,或者某些器件之間的間距不符合規(guī)定等。PlaceOpt階段工具可以檢測這些沖突,并進行解決,以保證芯片的物理布局符合規(guī)范。
優(yōu)化時序和功耗:PlaceOpt階段工具可以通過優(yōu)化芯片的物理布局,來改善芯片的時序和功耗。例如,可以通過減小器件之間的距離,來縮短信號傳輸?shù)臅r間,從而提高芯片的時序性能。又如,可以通過合理的布局,來降低芯片的功耗。
生成布局報告:PlaceOpt階段工具會生成布局報告,其中包括芯片的面積、功耗、時序等信息,以便設(shè)計人員對布局結(jié)果進行評估和調(diào)整。
需要注意的是,PlaceOpt階段工具只是APR布局布線過程中的一個步驟,它需要與其他工具配合使用,才能完成整個布局布線的過程。例如,在PlaceOpt階段工具之后,還需要進行時鐘樹合成、布局布線、后仿真等步驟,以完成芯片設(shè)計的整個流程。那么問題來了,如果在place完畢后,工程師在查閱log/報告時候發(fā)現(xiàn)局部區(qū)域overflow(congestion)確實很大,存在很大的繞線風(fēng)險時候一般怎么解決呢?
可以通過調(diào)整flooplan來解決,通常MEM的溝道/出PIN位置附近會有縱向/橫向的overflow,這種congestion通??梢酝ㄟ^調(diào)整溝道寬度/MeM的相對位置(使得走線規(guī)整)解決
打PlaceBlk,對于cell density過高的區(qū)域可以加partitial place blk來降低density,可以密度逐層遞增,打多層
增加keepout margin,通過設(shè)置Pin keep out來給PIN足夠空間出
打routing blk,對于Macro周邊底層signal如M2 M3等出PIN導(dǎo)致的signal overflow尤其是拐角處,在周邊區(qū)域走線資源充足的情況下,可以對堵塞區(qū)域設(shè)置對應(yīng)層的no_signal rblk,route完畢后刪掉,以免報drc錯誤
設(shè)置padding,對于高Pin Density的區(qū)域,經(jīng)常有AIO,MUX,MBIT等多Pin std cell,雖然cell的密度不高,但是走線出Pin太多,這種情況可以通過設(shè)置一類lib cell的padding來解,通??梢约?~2site的距離,不夠再加,注意,這樣操作很有可能會影響timing,需要謹慎使用。
merge bit,對于寄存器導(dǎo)致發(fā)生overflow的區(qū)域,工程師可以設(shè)置Merge bit以減少時鐘PIN
修改RTL代碼,有可能是邏輯設(shè)計不合理,MUX等多PIN邏輯太多了,后端確實解不了
修改Power Plan,對于H overflow,則加密縱向走線,放松橫向Power走線,反之加密橫向Power走線,放松縱向Power走線
規(guī)劃std cell,整理signal 線,在Power net高層空間允許的情況下,走高層NDR來釋放風(fēng)險
少部分的signal線,可以自己手動拉線走高層/或者換層
最終殺招,和項目經(jīng)理商量要不要增加點面積,或者砍點macro放到其他模塊去,H overflow就增加高度,V overflow就增加寬度。
審核編輯:劉清
-
寄存器
+關(guān)注
關(guān)注
31文章
5359瀏覽量
120818 -
RTL
+關(guān)注
關(guān)注
1文章
385瀏覽量
59878 -
apr
+關(guān)注
關(guān)注
0文章
11瀏覽量
6487 -
MEM
+關(guān)注
關(guān)注
0文章
6瀏覽量
8470 -
DCG
+關(guān)注
關(guān)注
0文章
7瀏覽量
2386
原文標題:基于方法學(xué)flow來聊聊APR工具placement
文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論