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