IR-drop問題的分析與修復(五):Padding Clock Cells: ICC2 & Innovus


本文轉自:自己的微信公眾號《集成電路設計及EDA教程》

 

時鍾網絡有其特殊性:1、頻率最高;2、翻轉最頻繁;3、扇出最大。時鍾單元:Buffer、Inverter、ICG;由於時鍾網絡的扇出很大,因此時鍾樹上的Buffer或者Inverter的驅動強度必須足夠大。另外,由於時鍾頻率非常高,翻轉非常頻繁,因此如果有普通的Cell離時鍾單元非常近的話很有可能會產生動態IR-drop問題。 解決方案:在時鍾單元(Buffer、Inverter、ICG)周圍添加Keepout Margin(在Innovus中稱為Padding),防止其他Cell擺的離時鍾單元太近,防止產生動態IR-drop,如下圖所示。

 

 

 命令:ICC2:我們可以針對一些Instance添加Keepout margin來解IR-Drop,思路在推文:IR-drop問題的分析與修復(含腳本分享)(一):Partition boundary cells clustering

已經介紹過,相關命令如下:create_keepout_margin -outer {3.6 0.576 3.6 0.576} $cells但是對於CTS的Cell,我們更希望對一些庫里面的Cell來設置Keepout Margin,這樣在CTS例化這些Cell來創建時鍾樹的時候就直接加上Keepout Margin了。命令如下:create_keepout_margin  -type hard -outer "3.6 0.576 3.6 0.576" [get_lib_cells "*/*CLK* "] "3.6 0.576 3.6 0.576"分別是左、下、右、上四條邊的keepout margin值。關於Keepout margin的更多呢內容可以查看推文: 后端概念分享--Keepout margin

Innovus:Innovus有兩個加Padding的命令,一個是針對Instance來添加,命令為:specifyInstPad相關用法已經在詳細介紹過了,這里就不講了。這里我們更希望的是對某一類Cell的Reference來設置Padding,命令如下:specifyCellPad CLK* -top 1 -bottom 1 -left 2 -right 2

 

 

如何顯示Cell Padding:

 

 

 

 

如果想看設計里面CLK Cell的位置其它們周邊的Padding,可以用下面的命令:selectInst [dbGet top.insts.cell.name CLK* -p2]

 

 

 

 最后,講一下ICC2與Innovus兩個命令之間的區別:

ICC2:create_keepout_margin  -type hard -outer "3.6 0.576 3.6 0.576" [get_lib_cells "*/*CLK* "]  Innovus:specifyCellPad CLK* -top 1 -bottom 1 -left 2 -right 2 ICC2無論是給Instance還是給Cell加Padding,用的都是create_keepout_margin命令,而Innovus有兩個命令,分別是specifyInstPadspecifyCellPad。ICC2的Keepout margin單位是um,而Innovus的cell padding單位是Cell site或者Row site的個數。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM