IC数字后端知识角

Keepout margin

2022-06-27  本文已影响0人  飞奔的大虎

Keepout margin是在Macro或者标准单元边界周围上定义的区域,在该区域不允许Cell被摆进来。

Keepout margin是ICC2中的叫法,在Innovus中有几个相似的概念,叫做Cell padding和Instance padding,其实和keepout margin是一个东西,但是作用的对象被分开了,分别作用的是ref cell和instance。 此外Innouvs中还有个Halo的概念可以设置在Macro上。 而keepout margin这一个命令就可以实现三个命令的效果,后边加上不同的对象即可。

Keepout margin根据区域在边界外还是边界内分为两种:

outer keepout margin:区域在Macro或者标准单元边界外;

inner keepout margin:区域在Macro或者标准单元边界内;

如下图所示的灰色区域:

四边上Keepout margin的宽度可以相同也可以不同,我们可以用命令来为每条边单独指定。

同时Keepout margin还可以根据类型分为两种:Hard   Soft

定义Keepout margin:

用命令create_keepout_margin创建keepout margin,默认创建的是hard,可以用-type soft来指定创建soft类型的keepout margin。

对象:outer keepout margin:

Hard macro、Design里面Cell的Instance、库里面的某些Cell Reference。

inner keepout margin:

只支持Design里面Cell的Instance,不支持Hard Macro和库里面的Cell Ref。

两种方式指定及例子:

方式1:指定四周的距离,格式为:{left bottom right top},分别是左、下、右、上方向上的距离。

0意味着某个边上没有keepout margin。

例如,想在名为my_macro的Macro的四条边上都定义10 um的hard outer keepout margin,可以用下面的命令:

icc2_shell> create_keepout_margin -outer {10 10 10 10} my_macro

方式2:让工具根据根据Macro pin的数目去推断keepout margin的距离。

这种就不详细讲了。

如何移除keepout margin:可以用命令:remove_keepout_margins

示例:

icc2_shell> create_keepout_margin -outer {1 2 3 4} [get_cells ZINV_1703_inst_609935]

{ZINV_1703_inst_609935/KEEPOUT_hard_OUTER_1568953}

icc2_shell> remove_keepout_margins ZINV_1703_inst_609935/KEEPOUT_hard_OUTER_1568953

作用:

我们可以为那些Clock tree上的clock cell或者Hard macro四周加上Keepout margin,这样可以优化IR-drop。

除此之外还可以防止出现DRC、修Congestion、防止Detour提高QoR。

思考:问题1:

Keepout margin与Placement Blockage有Overlap,这个是否是legal的Placement呢?工具看到了这种情况会把带Keepout margin的Cell挪走吗?

参考答案:

如果是Hard Placement Blockage的话是不能有Overlap的,如果是其他的话是可以的。

如下图所示,黄色的是Hard Placement Blockage

原文链接:https://www.shangyexinzhi.com/article/4169995.html

上一篇 下一篇

猜你喜欢

热点阅读