Innovus LAB7-1:手工 Floorplan 与 Blockage / Halo
1. 本章学习目标
本章主要介绍如何利用 Innovus GUI 中的常用控件进行 手工 floorplan。
Floorplan 阶段主要完成两件事情:
- 摆放 macro / IP
- 摆放 port
其中,macro 在 Innovus 中通常也叫做 block。
本 Lab 主要关注:
- 如何加载已有 floorplan
- 如何查看 macro / IP 的属性
- 如何理解和设置 placement halo
- 如何添加 routing blockage
- 如何保存 floorplan
- 如何区分 placement blockage、routing blockage 和 halo
Lab 中提到的 relative floorplan 内容,实际项目中使用较少,可以暂时跳过。
2. 核心概念:Halo
2.1 Halo 是什么意思?
halo 本意是:
光环、晕圈、环绕的一圈区域。
在 Innovus / 数字后端中,halo 可以理解为:
围绕 macro / block 外面额外加的一圈保护区域。
简单说:
1 | halo = macro 周围的一圈保护圈 |
2.2 Placement Halo 是什么?
Placement Halo 可以理解为:
Macro 周围的摆放保护圈。
它的作用是:
在 macro / block 周围留出一圈区域,不允许普通 standard cell 摆进去。
示意图:
1 | +--------------------------+ |
2.3 Placement Halo 的作用
设置 Placement Halo 主要是为了防止 standard cell 离 macro 太近。
| 作用 | 说明 |
|---|---|
| 减少布线拥塞 | Macro 周围 pin 多,信号线容易堵 |
| 预留布线空间 | 给 macro 和外部逻辑之间的连线留空间 |
| 降低 DRC 风险 | 防止 standard cell 太靠近 macro |
| 方便电源连接 | 给 power ring / power stripe 留空间 |
| 方便后续优化 | 给 buffer、decap、tie cell 等留空间 |
2.4 Placement Halo 参数理解
图中显示:
1 | Placement Halo {20.0 20.0} {20.0 20.0} |
可以简单理解为:
该 macro 的上下左右各留 20 μm 的摆放保护区。
也就是说,普通 standard cell 不能放进这圈区域。
如果 macro 本体范围是:
1 | Box {355.28 355.44} {655.28 635.44} |
macro 本体大小为:
1 | Width = 300 |
如果四周各加 20 μm placement halo,则保护区大致变成:
1 | 左下角:{335.28 335.44} |
整体保护区大小约为:
1 | Width = 300 + 20 + 20 = 340 |
一句话记:
1 | Placement Halo {20 20} {20 20} |
3. 核心概念:Routing Blockage
3.1 Routing Blockage 是什么?
Routing Blockage 可以理解为:
布线阻塞区。
它的作用是:
在版图中指定一块区域,限制或禁止信号线 / 金属线从这里经过。
也就是说,Routing Blockage 主要限制的是 routing 走线,不是限制 cell 摆放。
3.2 Routing Blockage 的作用
在 Innovus 中,Routing Blockage 常用于告诉工具:
1 | 这块区域不要走线,或者某些金属层不要走线。 |
常见用途如下:
| 用途 | 说明 |
|---|---|
| 保护 macro 周围区域 | 防止布线太靠近 SRAM、PLL 等 macro |
| 预留电源线空间 | 给 power ring / power stripe 留位置 |
| 避免布线拥塞 | 控制 routing 工具不要把线挤到某些区域 |
| 满足工艺规则 | 防止某些 layer 在特定区域走线导致 DRC |
| 保护模拟模块 | PLL、ADC 等模拟 IP 周围常限制数字信号布线 |
3.3 Routing Blockage 可以限制哪些层?
Routing Blockage 通常可以指定限制哪些金属层,例如:
| Layer | 说明 |
|---|---|
| M1 | 第一层金属 |
| M2 | 第二层金属 |
| M3 | 第三层金属 |
| M4 / M5 | 更高层金属 |
可以设置成:
1 | 只禁止 M1 / M2 走线,但允许 M3 / M4 经过。 |
也可以设置成:
1 | 所有 routing layer 都禁止经过。 |
具体取决于设置 blockage 时选择了哪些 layer。
4. Placement Blockage、Routing Blockage 与 Halo 的区别
4.1 Placement Blockage 和 Routing Blockage 的区别
在 Innovus 后端设计中,Placement Blockage 和 Routing Blockage 都属于阻塞区域,但它们限制的对象不同。
核心记忆:
1 | Placement Blockage:挡 cell |
| 对比项 | Placement Blockage | Routing Blockage |
|---|---|---|
| 中文含义 | 摆放阻塞区 | 布线阻塞区 |
| 限制对象 | standard cell | metal route / signal net |
| 主要作用 | 不让标准单元摆进去 | 不让金属线从这里走 |
| 影响阶段 | Placement 阶段 | Routing 阶段 |
| 是否影响 cell 摆放 | 影响 | 一般不影响 |
| 是否影响布线 | 一般不直接影响 | 影响 |
| 常用位置 | macro 周围、预留区域、拥塞区域 | macro 周围、电源线区域、模拟模块周围 |
| 类比 | 这块地不能盖房子 | 这条路不能走车 |
4.2 Placement Blockage
Placement Blockage 用来限制标准单元摆放。
也就是说:
1 | 这块区域不允许 standard cell 放进去。 |
常见用途:
| 用途 | 说明 |
|---|---|
| 保护 macro 周围区域 | 防止 standard cell 贴得太近 |
| 预留布线通道 | 给后续 routing 留空间 |
| 降低拥塞 | 避免 cell 过于密集 |
| 预留电源结构空间 | 给 power ring / stripe 留位置 |
| 方便后续优化 | 给 buffer、decap、tie cell 留空间 |
示意图:
1 | +---------------------------+ |
4.3 Routing Blockage
Routing Blockage 用来限制布线。
也就是说:
1 | 这块区域不允许 metal route 经过。 |
常见用途:
| 用途 | 说明 |
|---|---|
| 保护敏感模块 | 如 PLL、ADC 等模拟模块 |
| 预留电源线空间 | 给 power ring / power stripe 留位置 |
| 避免布线拥塞 | 控制线不要挤到某些区域 |
| 降低 DRC 风险 | 避免 spacing、short 等问题 |
| 指定禁用金属层 | 可以禁止某些 metal layer 经过 |
示意图:
1 | +---------------------------+ |
4.4 Halo 和 Placement Blockage 的区别
Placement Halo 本质上可以看成一种特殊的 Placement Blockage。
但是二者有一个关键区别:
1 | Placement Halo 是跟着 macro 走的保护圈; |
| 对比项 | Placement Halo | Placement Blockage |
|---|---|---|
| 中文理解 | Macro 周围的摆放保护圈 | 摆放阻塞区 |
| 作用对象 | 通常绑定在 macro / block 周围 | 任意指定区域 |
| 是否跟随 macro 移动 | 会跟随 macro 一起移动 | 一般固定在版图坐标上 |
| 形状 | 通常是 macro 外围一圈 | 可以是矩形或多边形区域 |
| 作用 | 不让 standard cell 靠 macro 太近 | 不让 standard cell 放进指定区域 |
| 常用场景 | SRAM、ROM、PLL 周围留空 | 预留通道、限制拥塞、保护区域 |
| 本质 | 特殊的 placement blockage | 通用的摆放限制区域 |
4.5 三者放在一起理解
| 名称 | 限制对象 | 是否绑定 macro | 主要作用 |
|---|---|---|---|
| Placement Blockage | standard cell | 不一定 | 指定区域不让 cell 摆放 |
| Routing Blockage | metal route / signal net | 不一定 | 指定区域不让线经过 |
| Placement Halo | standard cell | 是 | macro 周围自动留摆放保护圈 |
简单类比:
| 概念 | 类比 |
|---|---|
| Placement Blockage | 地上划出来的“禁止停车区” |
| Routing Blockage | 道路上的“禁止通行区” |
| Placement Halo | 人或设备自带的一圈“安全距离” |
5. LAB 操作流程
5.1 加载已有 Floorplan
在给 macro 或 IP 添加 block halo 前,可以先加载一个保存好的 floorplan。
GUI 操作路径:
1 | File → Load → Floorplan |
选择:
1 | dtmf_blocks.fp |
加载后的 layout 如下:
5.2 查看 PLL 的属性
操作步骤:
- 鼠标左键选择设计中左下角的 PLL。
- 按快捷键
q。 - 弹出该 PLL 的 attribute 属性窗口。
从属性窗口中可以看到 PLL 的 Placement Halo 都是 20 μm。
需要重点关注的属性:
| 属性 | 含义 |
|---|---|
| Object Type | 当前对象类型,例如 Block |
| Cell Type | macro / IP 的类型 |
| Location | 当前对象在版图中的坐标 |
| Box | 该 macro 的边界范围 |
| Placement Halo | macro 周围的摆放保护区 |
| Routing Halo | macro 周围的布线保护区 |
| Status | 当前放置状态 |
5.3 刷新 Layout 显示
点击确定后,layout 不一定会马上发生变化。
原因是:
Innovus 中很多 GUI 改动需要刷新后才会更新显示。
可以使用以下方式刷新:
1 | 按 f |
或者:
1 | Ctrl + r |
刷新后即可显示最新结果。
5.4 添加 Routing Blockage
在给 macro 添加 blockage 时,需要使用 Innovus 菜单栏中的相关控件。
一般操作步骤:
- 选择对应的 blockage 控件。
- 按下
F3或Ctrl + F3。 - 设置对应的选项信息。
- 在 layout 中绘制 blockage 区域。
相关界面如下:
注意:
1 | F3 / Ctrl + F3 通常用于设置当前 GUI 绘制工具的参数选项。 |
在设置 Routing Blockage 时,通常需要关注:
| 参数 | 作用 |
|---|---|
| Blockage 类型 | 选择 routing blockage |
| Layer | 指定禁止哪些金属层走线 |
| Shape | 指定 blockage 的形状 |
| Area | 指定 blockage 的位置和范围 |
| 是否允许 PG route | 是否允许电源地网络通过 |
5.5 保存 Floorplan
完成 macro 摆放、halo、blockage 等设置后,需要保存 floorplan。
GUI 操作路径:
1 | File → Save → Floorplan |
保存 floorplan 后,后续可以重新加载该 floorplan,避免重复手工设置。
6. 常用快捷键总结
| 快捷键 | 作用 |
|---|---|
q |
Query,查看选中 object 的属性 |
f |
Fit view,将 layout 适配到窗口中显示 |
Ctrl + r |
刷新 layout 显示 |
F3 / Ctrl + F3 |
设置当前 GUI 工具的参数选项 |
7. 本章核心总结
本章主要学习如何利用 Innovus GUI 手工进行 floorplan 操作,重点包括:
- 加载已有 floorplan。
- 查看 macro / IP 属性。
- 理解并查看 Placement Halo。
- 添加 Routing Blockage。
- 保存 floorplan。
- 区分 Placement Blockage、Routing Blockage 和 Placement Halo。
最重要的记忆方式:
1 | Placement Blockage:挡 cell |
进一步理解:
1 | Placement Blockage 是独立画出来的禁放区域; |