首页/文章/ 详情

ICC2|玩转polygon

11月前浏览697

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。

来源:白话IC
理论科普
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-09-07
最近编辑:11月前
白山头
签名征集中
获赞 10粉丝 3文章 175课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈