(4) Innovus LAB7-1

Innovus LAB7-1:手工 Floorplan 与 Blockage / Halo

1. 本章学习目标

本章主要介绍如何利用 Innovus GUI 中的常用控件进行 手工 floorplan

Floorplan 阶段主要完成两件事情:

  1. 摆放 macro / IP
  2. 摆放 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
4
5
6
7
8
+--------------------------+
| Placement Halo |
| +------------------+ |
| | Macro | |
| | SRAM / PLL | |
| +------------------+ |
| Placement Halo |
+--------------------------+

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
2
Width  = 300
Height = 280

如果四周各加 20 μm placement halo,则保护区大致变成:

1
2
左下角:{335.28 335.44}
右上角:{675.28 655.44}

整体保护区大小约为:

1
2
Width  = 300 + 20 + 20 = 340
Height = 280 + 20 + 20 = 320

一句话记:

1
2
Placement Halo {20 20} {20 20}
= macro 上下左右各留 20 μm 的禁放区域

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 BlockageRouting Blockage 都属于阻塞区域,但它们限制的对象不同。

核心记忆:

1
2
Placement Blockage:挡 cell
Routing Blockage:挡线
对比项 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
2
3
4
5
6
7
+---------------------------+
| Placement Blockage |
| +-------------------+ |
| | Macro | |
| | SRAM / PLL | |
| +-------------------+ |
+---------------------------+

4.3 Routing Blockage

Routing Blockage 用来限制布线。

也就是说:

1
这块区域不允许 metal route 经过。

常见用途:

用途 说明
保护敏感模块 如 PLL、ADC 等模拟模块
预留电源线空间 给 power ring / power stripe 留位置
避免布线拥塞 控制线不要挤到某些区域
降低 DRC 风险 避免 spacing、short 等问题
指定禁用金属层 可以禁止某些 metal layer 经过

示意图:

1
2
3
4
5
6
+---------------------------+
| Routing Blockage |
| +-------------------+ |
| | PLL | |
| +-------------------+ |
+---------------------------+

4.4 Halo 和 Placement Blockage 的区别

Placement Halo 本质上可以看成一种特殊的 Placement Blockage

但是二者有一个关键区别:

1
2
Placement Halo 是跟着 macro 走的保护圈;
Placement Blockage 是固定在版图上的禁放区域。
对比项 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 的属性

操作步骤:

  1. 鼠标左键选择设计中左下角的 PLL。
  2. 按快捷键 q
  3. 弹出该 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 菜单栏中的相关控件。

一般操作步骤:

  1. 选择对应的 blockage 控件。
  2. 按下 F3Ctrl + F3
  3. 设置对应的选项信息。
  4. 在 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 操作,重点包括:

  1. 加载已有 floorplan。
  2. 查看 macro / IP 属性。
  3. 理解并查看 Placement Halo。
  4. 添加 Routing Blockage。
  5. 保存 floorplan。
  6. 区分 Placement Blockage、Routing Blockage 和 Placement Halo。

最重要的记忆方式:

1
2
3
Placement Blockage:挡 cell
Routing Blockage:挡线
Placement Halo:跟着 macro 走的挡 cell 保护圈

进一步理解:

1
2
3
Placement Blockage 是独立画出来的禁放区域;
Placement Halo 是 macro 自带或指定的一圈禁放区域;
Routing Blockage 是限制布线经过的区域。
ESC 关闭 | 导航 | Enter 打开
输入关键词开始搜索