IR-drop问题的分析与修复(五):Padding Clock Cells:ICC2 & Innovus
原创
Horizon Qiao
集成电路设计及EDA教程
封面出处:半次元没睡醒的馅子
《IR-drop问题的分析与修复(五):
Padding Clock Cells: ICC2 & Innovus》
时钟网络有其特殊性:
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
如何显示Ce
ll 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有两个命令,分别是
specifyInstPad
和
specifyCellPad
。
ICC2的Keepout margin单位是um,而Innovus的cell padding单位是Cell site或者Row site的个数。
# 原来的红包和资料福利微信群已经满了
#
# 建了一个新群,扫码加群 #
预览时标签不可点
微信扫一扫
关注该公众号
继续滑动看下一个
轻触阅读原文
集成电路设计及EDA教程
向上滑动看下一个
知道了
微信扫一扫
使用小程序
取消
允许
取消
允许
×
分析
:
,
。
视频
小程序
赞
,轻点两下取消赞
在看
,轻点两下取消在看
分享
留言
收藏