ICC2|玩转polygon

本文介绍了在ICC2中如何利用polygon提高工作效率,特别是在floorplan和pv阶段的应用,如修复DRC和添加blockage。文章强调了理解poly_rect和geo_mask的概念,并解释了它们之间的区别和联系。此外,还探讨了实际图形对象(如shape、cell等)与geo_mask的关系,以及如何进行多边形操作和转化,以实现高效的图形运算。

ICC2中,操作好多边形计算,就会加倍提高效率,写出效果显著的脚本,尤其在floorplan & pv阶段。例如修DRC,针对某种类型的DRC计算出多边形进行金属填充。或者在floorplan阶段,对于一些边边角角添加blockage。

那么在ICC2中,需要深入理解两个概念。

poly_rect: 单个多边形,是坐标点组成的集合

geo_mask: poly_rect组成的集合

对于这两个概念,都是抽象化的geometry object,有坐标点,也可以进行逻辑运算,但是你在图形界面里是看不到的。如果想看到它们,你必须把它们转化为实际的图形对象( real geometry object)。

另外,对于图形处理命令,除了create_poly_rect, 会产生poly_rect之外,象其他的polygon操作命令,所产生的objec都属于geo_mask。

那么实际的图形对象,都有哪些呢?shape, cell, voltage area, blockage,bound ...  一般来说,能看到的有boundary的对象, 都算是实际的图形对象(real geometry object)。

象这些对象,无需转化,直接就可当geo_mask来进行图形运算。

set geo [resize_plygons [get_cells $macro] -size 1]; #直接用cell进行图形运算,产生一个geo_mask
create_routing_blockage -boundary $geo -layer M4; # 转化为M4的blockage

关于多边形的操作命令以及转化关系,见下图:

因为geo_mask为collection, 所以有可能内部有多个ploy_rect, 那么,就需要用foreach_in_collection。

polygon 操作命令:

应用举例

比如我们想获得stdcell区域的面积 (core_area - hard_macro_area - placement_blockage_area)。

set non_std [create_geo _mask [add_to_collection [get_cells -physical_context -filter is_hard_macro] [get_placement_ blockages]]]
set std [compute _polygons -objects1 [create_geo_mask [get_attribute [get_core_area] boundary]] -objects2 $non_std -operation not]
compute_area $std 

然后通过前面的文章,计算stdcell的面积,就可以很方便的计算出stdcell区域的utilization。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值