Innovus LAB10-1 Placement 笔记整理版

1. 本章目标

本节主要练习 Innovus 中的 placement 流程:

1
2
3
4
5
6
7
8
9
10
11
12
13
导入设计与 floorplan

查看 / 设置 place mode

读入 scan DEF

执行 placement 优化

分析 density 和 routing overflow

查看 scan chain

保存设计

核心目标:

  • 跑通 placement;
  • 理解 placement 前读入 scan DEF 的作用;
  • 学会查看 placement 后的 density / routing overflow;
  • 掌握 scan chain DEF 的读入与写出;
  • 掌握保存与恢复设计的方法。

2. 导入设计和 Floorplan

前面 lab 已经完成过设计和 floorplan 的导入,本节是在已有设计基础上继续做 placement。

导入完成后的界面示意如下:


3. 查看 Place Mode

加载好设计和 floorplan 后,先查看当前 placement 设置。

命令

1
getPlaceMode

作用:

查看当前 Innovus 中所有 placement 相关设置。

工具会输出当前的 place mode 参数:

其中很多选项是工具默认值,不需要全部背下来,常用选项在项目中慢慢积累即可。

例如:

1
place_global_timing_effort = medium

表示工具在 global placement 阶段优化 timing 的力度是中等。

如果设计 timing 较紧,可以考虑提高优化强度:

1
setPlaceMode -place_global_timing_effort high

4. Scan DEF 读入

如果综合或 DFT 阶段写出了 scan chain 的 DEF 文件,可以在 placement 前读入。

命令

1
defIn scan_input.def

作用:

在 placement 前读入 scan chain 信息,让 Innovus 知道 scan chain 的结构和顺序。

示意图:


5. Scan 与 Scan DEF 简要理解

5.1 Scan 是什么?

scan 是 DFT(Design For Test,可测性设计)中的技术,用于提高芯片制造后的可测试性。

普通寄存器加入 scan 功能后,可以被串成扫描链:

1
scan_in → scan flop1 → scan flop2 → scan flop3 → scan_out

这样测试机可以:

  • 通过 scan_in 控制内部寄存器状态;
  • 通过 scan_out 观察内部寄存器结果。

5.2 Scan Chain 的两个核心能力

能力 含义
可控性 Controllability 通过 scan_in 控制内部寄存器
可观测性 Observability 通过 scan_out 读出内部寄存器

测试流程可以简单理解为:

1
2
3
4
5
6
7
1. 打开 scan enable,进入 scan 模式
2. 从 scan_in 移入测试向量
3. 关闭 scan enable,切回功能模式
4. 打一拍功能时钟
5. 再打开 scan enable
6. 从 scan_out 移出结果
7. 和期望值比较

5.3 Scan DEF 是什么?

scan_input.def 是一个保存 scan chain 信息的 DEF 文件。

它主要记录:

  • 设计中有几条 scan chain;
  • 每条 scan chain 的入口 scan_in
  • 每条 scan chain 的出口 scan_out;
  • 每条 scan chain 经过哪些 scan flop;
  • scan flop 的连接顺序;
  • 哪些 segment 可以 reorder,哪些顺序固定。

5.4 为什么 placement 前要读入 Scan DEF?

Placement 阶段会决定 standard cell 和 scan flop 的物理位置。

如果提前读入 scan DEF,Innovus 就可以知道:

1
2
哪些 flop 属于同一条 scan chain;
scan flop 之间的连接顺序是什么。

这样工具可以在摆放时优化 scan 线:

  • 减少 scan 线长度;
  • 减少 scan 线来回穿越芯片;
  • 降低 routing congestion;
  • 改善后续 routing 质量;
  • 便于后续 scan chain reorder。

6. scan_input.def 常见字段

6.1 SCANCHAINS

1
SCANCHAINS 2 ;

表示设计中有 2 条 scan chain。


6.2 START PIN

1
+ START PIN scan_in_1

表示该 scan chain 的输入端口是 scan_in_1


6.3 STOP PIN

1
+ STOP PIN scan_out_1 ;

表示该 scan chain 的输出端口是 scan_out_1


6.4 ( IN SI ) ( OUT Q )

1
DTMF_INST/SPI_INST/bit_cnt_reg_0 ( IN SI ) ( OUT Q )

含义:

字段 说明
DTMF_INST/SPI_INST/bit_cnt_reg_0 scan flop 实例名
IN SI scan 输入端是 SI
OUT Q scan 输出端是 Q

可以理解为:

1
2
前一个 scan cell 的 Q → 当前 scan cell 的 SI
当前 scan cell 的 Q → 下一个 scan cell 的 SI

6.5 FLOATINGORDERED

关键字 含义
FLOATING scan cell 顺序可以由后端工具根据物理位置优化
ORDERED scan cell 顺序已经指定,工具应尽量保持

7. 写出 Scan Chain DEF 文件

如果需要从当前 Innovus / Encounter 数据库中写出 scan chain 信息,可以使用:

1
defOutBySection -noNets -noComps -scanChains scan.def

参数含义:

参数 作用
defOutBySection 按 DEF section 导出内容
-noNets 不导出普通 net
-noComps 不导出普通 component / cell
-scanChains 只导出 scan chain 信息
scan.def 输出文件名

该命令生成的不是完整 DEF,而是只包含 SCANCHAINS 信息的 DEF 片段。


8. 执行 Placement

命令

1
place_opt_design

作用:

执行 placement,并在 placement 阶段做一定的 timing / congestion 优化。

执行完成后,可以从 log 中查看 placement 结果,例如 density、routing overflow 等。

Placement 后示意图:


9. 查看 Scan Chain 连接

可以在图形界面中高亮 scan chain:

1
Place → Display → Scan Chain

选择某条 scan chain,例如 scan1,工具会显示扫描链连接路径。

示意图:

作用:

  • 查看 scan chain 是否连接正确;
  • 观察 scan chain 是否绕线过长;
  • 判断是否需要 scan chain reorder;
  • 观察 scan chain 对 congestion 的影响。

10. Placement 结果分析

示例结果:

1
2
Density: 48.590%
Routing Overflow: 0.02% H and 0.01% V

10.1 Density

1
Density: 48.590%

表示布局密度 / 单元利用率约为 48.59%。

可以理解为:

1
标准单元面积 / 可放置区域面积 = 48.590%

这个密度不算高,说明当前 placement 比较宽松,后续 routing、buffer 插入、CTS 和 ECO 还有一定空间。


10.2 Routing Overflow

1
Routing Overflow: 0.02% H and 0.01% V

Routing Overflow 表示布线资源不够用的比例。

简单理解:

1
需要走的线数量 > 可用 routing track 数量

就会产生 overflow。


10.3 H 和 V 的区别

符号 含义 对应方向
H Horizontal 水平方向布线资源
V Vertical 垂直方向布线资源

示意:

1
2
3
4
5
6
7
H:水平方向
←────────────→

V:垂直方向



示例中:

1
0.02% H and 0.01% V

说明横向和纵向布线资源都只有极少量溢出,congestion 很轻,整体 placement 结果比较健康。

相关界面示意:


11. Track / Routing Grid 笔记

11.1 Track 是什么?

track 可以理解为后端布线轨道。

后端 route 时,金属线不是随便画在任意位置,而是尽量沿着工艺规定好的 routing track 走。

1
2
3
4
5
6
7
8
9
Horizontal tracks:
────────────────
────────────────
────────────────

Vertical tracks:
│ │ │ │
│ │ │ │
│ │ │ │

11.2 Track 和 H / V Overflow 的关系

方向 含义
H overflow 水平方向 routing track 不够用
V overflow 垂直方向 routing track 不够用

如果某个方向 overflow 很高,说明该方向布线资源紧张。


11.3 Track 和 Placement Row 的区别

概念 作用
Placement Row 给 standard cell 摆放用
Routing Track 给 metal wire 布线用

简单理解:

1
2
placement row:放 cell 的行
routing track:走 wire 的轨道

11.4 Macro 附近为什么容易拥塞?

RAM / SRAM / hard macro 通常会占用或阻挡部分 metal layer,导致其周围布线资源减少。

因此 macro 附近要重点关注:

  • routing channel 是否足够;
  • H / V overflow 是否明显;
  • blockages 是否设置合理;
  • pin access 是否困难。

12. 保存和恢复设计

12.1 保存设计

1
saveDesign place_Opt.inn

作用:

保存当前 Innovus 数据库,便于后续继续从该阶段恢复。

保存示意:


12.2 恢复设计

如果后续想恢复到该阶段,可以使用 restore 功能重新加载保存的设计数据库。

恢复示意:


13. 常用命令汇总

命令 作用
getPlaceMode 查看当前 placement 设置
setPlaceMode -place_global_timing_effort high 提高 placement timing 优化力度
defIn scan_input.def 读入 scan chain DEF
place_opt_design 执行 placement 和优化
defOutBySection -noNets -noComps -scanChains scan.def 写出 scan chain DEF
saveDesign place_Opt.inn 保存当前设计数据库

14. 一句话总结

本节主要完成 Innovus placement 流程:在导入设计和 floorplan 后,先查看 place mode,再在 placement 前读入 scan_input.def,使工具能够考虑 scan chain 结构并优化 scan 线。执行 place_opt_design 后,需要重点查看 density 和 routing overflow。示例中 density 为 48.590%,routing overflow 仅为 0.02% H 和 0.01% V,说明当前布局拥塞很轻,placement 结果较健康。

ESC 关闭 | 导航 | Enter 打开
输入关键词开始搜索