Innovus基础命令:createPlaceBlockage

本文详细介绍了Innovus中的createPlaceBlockage命令,用于创建放置障碍物,包括硬约束和软约束,以及partial blockage的密度设定。示例展示了如何创建针对特定实例的软约束blockage,强调了blockage在不同阶段的作用以及各种类型的placement blockage,如hard、soft和partial,以及它们在优化布局和解决拥堵问题中的应用。

createPlaceBlockage

描述

对目标创建blockage

参数

-allMacro
指定打在所有的hard macro上
-allPartition
指定打在所有的partition上
-box {x1 y1 x2 y2}
以box方式创建
-boxlist {{lx1 ly1 ux2 uy2} {lx2 ly2 ux2 uy2} ... }
以boxlist的方式创建
-cover
指定完全覆盖在所选择的object上,可以配合-inst | -hinst | -allPartition | -allMacro这些object使用
-density <integer>
指定partial blockage的density, 范围5%-100%以5%为步进,使用时需要配合-type
-excludeFlops
指partial blockage并不会对flop或者latch等时序器件起作用
-hinst <hInst>
可以指定placemnet blockage打在哪个inst,或者hinst上
-innerRingByEdge {<edge1> <edge2> <edge3> <edge4> ... }
针对多边形生效,指定blockage向内缩进的距离,edge指定顺序为顺时针
-innerRingBySide {<left> <bottom> <right> <top>}
针对box生效,指定blockage向内所进的距离,分别对应左下右上
-inst <inst>
指定打在哪个inst上,可以随着inst移动
-name <string>
placement blockage 的名字
-noCutByCore
指定后placement blockage不会被core boundary切掉,可以创建在core外面
-outerRingByEdge {<edge1> <edge2> <edge3> <edge4> ...}
指定blockage向外扩张的距离,其他同上
-outerRingBySide {<left> <bottom> <right> <top>}
同上
-polygon {{x1 y1} {x2 y2} ... }
以多边形方式创建,指定顺寻从左下角顶点开始
-prefixOn
增加一个前缀
-snapToSite
会自动snap到row site上面去
-type {hard soft partial macroOnly}
指定blockage类型

示例

createPlaceBlockage -inst $my_block -type soft -density 50 -outerRingBySide 2

针对my_block创建一个类型为soft、密度为50%、向外扩张距离为2的blockage。

相关

Placement blockage是在做floorplan时加入的人为约束,可以有效控制区域density,从而避免congestion的问题,提高routing效率。其中Placement blockage的种类有:

  • hard: 是约束最严格的blockage,该区域范围内,place,legalize, optimize,CTS等任何阶段都不能摆放instance。
  • soft: 该区域内,在placement阶段不允许摆放instance,但是在legalize,optimize阶段时允许摆放instance的。
  • partial: 如果要使用partial blockage,首先要人为设计一个阻碍百分比值。在该区域内,工具会block住阻碍值的instance。如果设定了block百分比值是40%,就说明该区域至少会block40%的instance,也就是说该区域最多允许摆放60%的instance. 值得注意的是partial blockage也是只在placement阶段起作用,在legalize,optimize阶段时都不起作用。
  • hard_macro: 该区域内不允许摆放hard macro,在自动macro placement阶段工具不会摆放macro在该区域。
  • category: 这是一种特殊的partial blockage,在某些区域,如果我们不想摆放某种指定的instance,可以把这些instance都指定为一个category,然后category blockage下面的区域就不会摆放这些instance
  • register: 这也是一种特殊的partial blockage, 该blockage区域不允许摆放register,当然也是只在placement阶段起作用,在legalize,optimize阶段时都不起作用。
  • rp_group: 这也是一种特殊的partial blockage,rp_group blockage的区域不允许摆放relative placement instance,很少用到。
  • allow_buffer_only: 这也是一种特殊的partial blockage, 该blockage区域只允许摆放buffer,当然也是只在placement阶段起作用,在legalize,optimize阶段时都不起作用。
  • allow_rp_only: 这也是一种特殊的partial blockage, 该blockage区域只允许摆放relative placement group,不过hard macro依然可以摆放。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值