数字芯片物理设计自动化

数字芯片物理设计自动化

第 0 讲 :设计流程基础

李兴权

东南大学 集成电路学院

E-mail: x.li@seu.edu.cn

v4.0

本讲路线图

掌握本讲,后续每个专题步骤都能找到正确的坐标。

1 · 芯片设计链路

系统规格→RTL→综合→物理设计→签核→制造,EDA 全程自动化支撑

2 · 物理设计流程

网表→几何版图,PPA 三角优化,主要步骤与辅助验证环节

3 · 标准单元库

预设计版图抽象、工艺节点、驱动强度、设计规则约束

4 · 关键文件格式

LEF / Liberty / SDC / .tf / DEF / SPEF / SDF / GDSII

5 · 四步骤总览

布图规划、布局、CTS、布线——及通孔、轨道、优选方向

6 · 总结与思考

核心要点回顾,四道章节思考题

数字芯片设计链路

从"我要什么功能"到"晶圆厂能生产",经历十个核心环节、数轮迭代。

数字芯片设计全流程:系统规格→架构→功能开发→逻辑综合→工艺映射→物理设计→签核验证→版图整合→制造→封装测试,各阶段配 EDA 工具与版图示例
图 0-1 数字芯片设计全流程:EDA 工具全程自动化支持设计、验证与测试(深色框为物理设计阶段)
物理设计的位置:位于逻辑综合之后、签核验证之前,是连接"逻辑世界"与"几何世界"的桥梁。输入:门级网表;输出:GDSII 版图文件。sk-3e9f2f7ab22a4e0d8df413a8646bcf5c

EDA 工具全流程自动化

EDA 工具在每个阶段提供关键支撑,但正确约束仍需工程师深度理解。

设计阶段代表工具类别主要功能
RTL 仿真HDL 仿真器功能验证、覆盖率分析
逻辑综合DC、GenusRTL→网表,PPA 优化
物理设计(P&R)Innovus、IC Compiler II、iEDA布图规划、布局、CTS、布线
静态时序分析PrimeTime时序路径分析、多角多模
物理验证Calibre、PVSDRC、LVS、ERC
寄生参数提取StarRC、QRC提取 RC,生成 SPEF
EDA 是充分条件,而非充要条件。工具自动化强,但约束设置需要工程师深度理解芯片架构。
OpenLane 开源 EDA 全流程
iEDA开源物理设计全流程

物理设计核心四步骤

① 布图规划 Floorplan ② 布局 Placement ③ 时钟树综合 CTS ④ 布线 Routing
图 0-2 物理设计核心四步骤(从门级网表到可交付版图)
布图规划版图
① 布图规划:确定Die和Cor、放置IO、宏单元摆放、电源网络
布局版图
② 布局:标准单元合法入行
CTS版图
③ CTS:时钟树分发、Skew 均衡
布线完成版图
④ 布线:所有线网完成金属连接
布图规划版图
布局版图
CTS版图
布线完成版图

物理设计度量指标:宏观指标(PPA)与具体度量

设计目标分两层:宏观上权衡 PPA 三角,微观上用可在优化器内循环高效评估的 具体度量 去逼近它。

① 宏观指标:PPA 三角(三者互相制约)

PPerformance
性能 · 频率 / 时序
PPower
功耗 · 动态 + 静态
AArea
面积 · 尺寸 / 利用率
互相制约:性能↔面积(增大驱动 → 延迟↓ 面积↑);功耗↔性能($P=\alpha C V^2 f$,提频 → 功耗↑);面积↔功耗(压面积 → 寄生电容↑ → 切换功耗↑)。核心能力=在工艺约束下做恰当 PPA 权衡。

② 具体度量指标(嵌入优化器内循环,被反复调用数百万次)

指标类别典型度量特点
线长HPWL(半周长线长)O(n) 计算,与真实布线高度相关;布局主目标
线长RSMT(直角斯坦纳最小树)更精确,NP-Hard 但有有效启发式;用于布线阶段
时序Elmore 延迟(RC 树矩)可加、线性,物理优化内最流行时序估计
时序建立 / 保持裕量STA 输出:WNS(最差负裕量)、TNS(总负裕量)
功耗动态功耗 $P=\alpha C V^2 f$α=活动率;C 正比线长;降 Vdd / f 均降功耗
面积核心面积利用率过高→拥塞;过低→尺寸大→成本高
HPWL 公式

$\text{HPWL}(e)=(\max_{e}x-\min_{e}x)+(\max_{e}y-\min_{e}y)$

$\text{MST}\ge \text{RSMT}\ge \text{HPWL}$(2-pin 线网三者相等)

Elmore 延迟 & 加权线长目标

$t_D=\sum_i R_i C_i$(RC 树矩)

$\min \sum_{e\in E} w(e)\cdot \text{WL}(e)$,$w(e)$ 由时序关键性决定(关键路径权重更高)。

辅助与验证步骤

核心四步之外,多种验证确保版图功能、时序、可靠性与制造全部合格。

步骤英文术语目的在流程中的位置
划分Partitioning大规模设计拆子块,支持层次化物理设计布图规划之前
时序优化Timing OptimizationUpsizing、缓冲器插入、重新布局修复违例布局、CTS、布线全程
静态时序分析STA图论遍历时序路径,确认建立 / 保持时间满足约束布线后签核;布局后预估
寄生参数提取Parasitic Extraction从版图提取 RC,写入 SPEF 供 STA 使用布线完成后
电压降分析IR Drop确保电源网络压降在工作范围内布图规划预估 + 布线后签核
DRCDesign Rule Check验证版图几何符合工艺制造规则布线后及最终交付前
LVSLayout vs. Schematic从版图提取网表与逻辑网表对比布线后及最终交付前
签核(Sign-off):STA + IR drop + DRC + LVS 全部通过,版图才可发往代工厂。任一失败需返回前序步骤修改。

标准单元库:抽象模型

库中每个单元是某种基本逻辑功能的预设计版图,对物理设计工具只暴露"带引脚的盒子"。

单元内部(透明)

CMOS 晶体管结构、多层掩模图案、阱接触/衬底接触、电源地金属条。由库厂家完整验证,工程师无需关心。

单元外部(可见)

矩形几何边界 + 命名引脚(Pin)。物理设计工具只看引脚位置、单元尺寸、电源/地接口,驱动布局和布线。

关键抽象层:工程师无需了解单元内部细节,即可进行百亿晶体管规模的布局布线。
NAND2 标准单元版图
2输入NAND 门标准单元版图(Layout View)。VDD/GND 轨道贯穿全宽,引脚通过接触孔暴露给布线层。

标准单元几何属性与驱动强度

不同驱动强度标准单元对比
X1→X4 驱动强度:等高但宽度线性增加,VDD/VSS 轨道等高对齐
几何属性规则意义
等高库内所有单元高度相同(整数倍 CPP)任意横向排列,VDD/VSS 自动对齐
宽度可变以 Site 宽度整数倍为单位高驱动版本(X4)比低驱动版本(X1)更宽
VDD/VSS 轨道位于单元顶部和底部相邻行翻转(Flip)共享电源轨,节省面积约 50%
引脚层输入/输出引脚通常在 Metal 1 暴露布线工具在 M2+ 各层连线
驱动规则(Max Constraints)

Max Fanout / Max Transition / Max Capacitance 写入 .lib 文件,违例时工具自动 Upsize 或插入缓冲器(Buffer Insertion)。

工艺节点与晶体管尺寸

工艺节点对比:扩散面积与性能
相同驱动强度(W/L 比相同),先进工艺(L 小)扩散面积仅为老工艺约 1/4,寄生电容更小,速度更快。

沟道长度 L(Gate Length)

决定开关速度和漏电流。L 越短→频率越高,但漏电控制难度增加。

沟道宽度 W(Gate Width)

决定驱动电流大小。W 越大→驱动电流越强,但面积越大。

扩散面积(Diffusion Area)

$\approx 5\times L\times W$。扩散面积越大→寄生结电容越大→切换速度越慢、功耗越高。先进工艺通过缩小 L 大幅减小扩散面积。

工艺进步的本质:缩小 L → 扩散面积↓ → 结电容↓ → 速度↑ · 功耗↓ · 面积↓。

关键文件格式:输入文件

格式扩展名主要内容
Technology LEF.lef金属层参数、布线轨道间距、过孔规则、优选方向、最小线宽
Cell LEF.lef单元物理边界、引脚位置与层、阻挡层(OBS)、电源接口
Liberty.lib单元时序延迟 / 功能 / 驱动规则(NLDM 查找表,多工艺角)
SDC.sdc时钟定义、I/O 延迟、时序例外(false_path / multicycle)
Technology File.tf / .itf介电常数、电阻率、各层设计规则(DRC)、单位精度
Verilog Netlist.v综合后门级单元实例及连接关系
LEF + DEF 配合:LEF 是库/工艺静态描述,DEF 是设计实例的动态版图状态。两者配合才能完整描述一个芯片版图。
PnR工具输入输出文件全貌
P&R 工具数据流全貌:左侧合成数据 + 右侧物理数据 → 布局布线结果

LEF 与 Liberty 示例

Cell LEF 文件片段
Cell LEF:单元边界、引脚层(PIN/LAYER/RECT)及阻挡层(OBS)
Tech LEF 层定义
Technology LEF:各金属层名称、优选方向(DIRECTION)、最小线宽与轨道间距(PITCH)
Liberty 顶层结构
Liberty(.lib)顶层结构:library→cell→pin,定义工艺角、延迟 LUT
Liberty NLDM 延迟查找表
NLDM 非线性延迟:以输入转换时间 × 输出负载电容为双索引的二维查找表

中间与输出文件

格式扩展名内容与角色
DEF.defDie Area、布局行、轨道、单元实例坐标、线网连接、特殊线网(电源/地/时钟)。物理设计核心中间文件。
SPEF.spef布线后寄生 RC 提取结果。STA 工具读入后才能做精确时序签核。
SDF.sdf路径延迟标注,反标给门级仿真器做时序仿真。
GDSII.gds最终交给代工厂的完整多边形几何版图,驱动掩模制作。
GDSII 含义:包含芯片所有层次(从衬底到顶层金属)的完整多边形坐标数据,是物理设计流程的最终交付物。
DEF COMPONENTS 段
DEF COMPONENTS:每行一个单元实例的类型、坐标与方向
GDSII 多层金属结构
GDSII 版图多层金属:不同颜色代表不同工艺层(M1~M8)
GDSII 多层金属结构
GDSII 版图多层金属:不同颜色代表不同工艺层(M1~M8)

步骤 ① 布图规划 · ② 布局

① 布图规划(Floorplan)

主要任务:确定 Die/Core Area → I/O 引脚位置 → 宏单元摆放 → 电源网络(Power Grid) → 电源域 → 物理填充单元(Tap/Endcap Cell)。

优化目标:最小化面积与关键路径延迟,最小化布线拥塞,合理分布功耗避免热点。

② 布局(Placement)

三阶段:全局布局(允许重叠,优化总体线长/拥塞) → 合法化(消除重叠、行对齐、Site 对齐) → 详细布局(局部微调,改善时序和线长)。

合法性约束:单元在布局区域内、对齐 Row 和 Site 网格、相互不重叠、固定单元不可移动。
布图规划版图
布图规划:I/O 环、宏单元、Power Grid 已就位,标准单元行待填充
布图规划版图
布局结果:宏单元(SRAM/IP)固定于边沿,标准单元合法入行填充 Core,颜色表示不同逻辑模块

交互演示:解析布局求解器(Gradient Descent)

解析布局法(Analytical Placement)将布局问题转化为连续目标函数的数值优化,通过梯度下降迭代求最优解。

目标函数(非凸优化)

$$\min f(x,y) = W(x,y) + \lambda\cdot D(x,y)$$

W = 总线长模型(HPWL 平滑近似);D = 密度惩罚(防止重叠);λ 随迭代逐步增大,从松弛解向合法解过渡。(据《EDA 方法论》第7章;《Handbook》Ch18 Force-directed Placement)

普通梯度下降 vs Nesterov 动量法

Nesterov 加速梯度(NAG)是现代解析布局器(如 ePlace、RePlAce)的核心求解器:在当前位置加上"预看动量",使收敛速度从 $O(1/k)$ 提升到 $O(1/k^2)$,实际迭代轮次减少约 $5\sim10\times$。

点击"切换 GD/Nesterov"观察普通梯度下降与带动量法的收敛速度差异。

步骤 ③ 时钟树综合(CTS)

时钟信号从单一时钟源分发到数万个触发器,CTS 构建平衡分发网络。

核心目标

· Skew 最小化:所有触发器几乎同时看到时钟沿
· Latency 最小化:缩短源到 FF 的路径延迟
· 资源最小化:减少缓冲器数量和时钟线长

树形结构

典型 H-tree / 鱼骨形 / 自顶向下合成结构,经多级时钟缓冲器逐级分发,树拓扑影响 Skew 与 Latency 的权衡。

时钟 Skew 对保持时间(Hold Time)的危害通常比对建立时间更难修复——保持时间违例只能插入延迟单元,不能靠调整时钟周期解决。
CTS阶段版图
CTS 阶段:时钟分发网络(高亮走线)已插入,缓冲器均匀分布以平衡各 FF 的时钟延迟

交互演示:H 树时钟分发(H-tree CTS)

H-tree 是时钟树综合(CTS)最经典的结构:递归地将时钟路径对称分叉,使每个叶节点(触发器)到根的路径等长。

理论零偏斜(Zero Skew)

若所有叶节点负载相同、无工艺偏差,H-tree 各分支等长等负载,理论上实现完美零偏斜。实际中工艺偏差仍引入残余 skew。

等比缩减

每增加一级:叶节点数 $\times 4$,导线长度 $\times\sqrt{2}$(递归对半),级数 $=4$ 时驱动 $4^4=256$ 个触发器,仍保持等长。(据《Handbook》Ch42 Clock Network Design)

工程局限

实际芯片触发器不均匀分布,纯 H-tree 难以覆盖;工业 CTS 用 MMM/GMA 等算法处理不规则分布;H-tree 仍作为规则区域(如存储阵列)的首选结构。

步骤 ④ 布线(Routing)与通孔(Via)

全局布线(Global Routing) 将芯片划分为 GCell 网格,为每条线网分配大致布线通道(路径规划,粗粒度)。用于指导详细布线并评估拥塞。
详细布线(Detail Routing) 在全局布线指导下,为每条线网确定具体金属层和布线轨道,满足所有 DRC 规则,避免短路和开路。

通孔(Via)

Contact(Active→M1)→ Via1(M1↔M2)→ Via2(M2↔M3)……各 Via 层均有独立 DRC 规则(切割尺寸、切割间距、包围规则)。

布线后工具做冗余通孔优化(Redundant Via):用 2×2 通孔阵列替换单一通孔,降低电阻并提升良率。

通孔层间连接三维结构
Via 层间连接:Via12 连接 M1/M2,Via23 连接 M2/M3,每个 Via 增加串联电阻
通孔设计规则与冗余通孔
布线

布线轨道与优选布线方向

轨道间距(Track Pitch)= 最小线宽 + 最小间距

决定单位面积内可布线线网数量(布线资源密度)。某 GCell 内线网需求 > 可用轨道数 → 拥塞(Congestion)。

金属层优选方向典型用途
M1水平(H)单元内部连线、局部信号
M2垂直(V)单元间短距离连线
M3水平(H)中距离信号线
M4垂直(V)时钟树、中距离信号
M5+交替 H/V电源网络、长距离走线
交替方向的好处:① 避免相邻层长距离平行耦合(减少串扰 Crosstalk);② 每层只处理一个方向,简化格点布线算法;③ 两层组合覆盖所有路径需求。
优先布线方向版图
优先布线方向实版图:H 层与 V 层通过 Via 在交叉点连通,形成正交互连结构

文件格式完整对照表

格式后缀主要内容流程角色使用方
Technology LEF.lef金属层工艺参数、布线轨道、过孔、优选方向物理设计输入(工艺信息)P&R、DRC
Cell LEF.lef单元物理边界、引脚位置与层、阻挡层物理设计输入(库几何)P&R
Liberty.lib单元时序、功能、驱动/负载规则(NLDM)综合 & 物理设计输入综合、P&R、STA
SDC.sdc时钟、I/O 延迟、时序例外物理设计输入(时序约束)P&R、STA
Technology File.tf/.itf介电常数、电阻率、层设计规则物理设计输入(工艺详细规则)P&R、寄生提取
DEF.defDie、布局行、轨道、单元坐标、线网中间文件(版图状态)P&R(读写)、DRC/LVS
Verilog Netlist.v门级单元实例及连接网表输入 & 后处理网表P&R、仿真、LVS
SPEF.spef线网寄生 R / C输出(供时序签核)STA、功耗分析
SDF.sdf路径延迟标注输出(反标给门级仿真)门级仿真器
GDSII.gds所有层次完整几何多边形最终交付(交代工厂)代工厂、DRC/LVS

摩尔定律与"互连延迟 vs 门延迟"标度反转📖 教材拓展

特征尺寸每约 18 个月按 0.7 缩小:门越来越快,连线却越来越慢——这一"反转"重塑了物理设计算法的演化方向。

早期:门延迟主导(pre-1990s) 互连延迟可忽略,物理设计"先综合达标→布图→布局"线性进行,布局前满足时序则布局后也满足。线长仅作为面积代理。
缩放期:连线变慢 工艺微缩使导线更细、电阻更大;连线延迟与长度呈"二次"上升,早期"延迟 $\propto$ 线长"线性模型一度失效。长连线延迟可达数个时钟周期。
先进工艺:互连延迟主导 经最优缓冲(Buffering)后延迟近似回到"$\propto$ 线长"线性趋势;但芯片所需缓冲器数量爆炸式增长,串扰、电源噪声、可制造性问题前移。
算法后果:物理设计"上移"至综合阶段——传统线负载模型(Wire-load Model)做出的综合决策无法满足时序,催生了物理综合(Physical Synthesis),综合与布局协同迭代。
标度规律(Dennard / Moore)

特征尺寸 $L \to 0.7L$(每 $\approx 18$ 个月)

门延迟 ↓(晶体管更小更快)

线延迟 $t_{\text{wire}} \propto R\cdot C \propto \ell^2$(无缓冲)→ 经最优缓冲后 $\propto \ell$(线性)

中文教材同样指出:互连线"从一个可忽略因素变成了影响芯片性能和功耗的重要因素",一条长连线延迟可能需要几个时钟周期。

来源:Handbook of Algorithms for Physical Design Automation, Ch.1;《大规模集成电路设计方法》第1章

设计风格对比:从全定制到 FPGA📖 教材拓展

初期集成电路全定制——"一个个晶体管地设计整个芯片";规模扩大后,必须借助自动化工具,基于标准单元库与 IP 核设计,在面积·性能·NRE·上市时间之间做权衡。

设计风格设计粒度面积/性能/功耗NRE 成本上市时间典型应用
全定制(Full-custom)晶体管级手工版图最优(极致 PPA)极高最长模拟电路、关键模块、存储器位单元、CPU 关键路径
标准单元(Standard Cell)预设计逻辑门 + IP 核较优,自动化 P&R高(需流片掩模)主流数字 SoC、ASIC
门阵列(Gate Array)预制晶体管阵列,仅定制金属层中等,面积利用率偏低中(仅定制少数掩模)较短中小批量、快速定制
结构化 ASIC预制底层 + 少量可定制层介于标准单元与 FPGA 之间较低中等批量、降低 NRE
FPGA可编程逻辑 + 布线,无需流片面积/性能/功耗最差极低(无流片)最短(编译下载即可)原型验证、小批量、可重构系统
权衡主线:越靠近全定制,PPA 越优但 NRE 与设计周期越高;越靠近 FPGA,越灵活、上市越快,但单位性能/功耗代价越大。FPGA"编程为硬件电路",不流片即得功能,但性能功耗不如标准单元流片实现。

来源:《大规模集成电路设计方法》第1章(全定制设计、标准单元、IP 核、FPGA)

物理设计问题的形式化定义📖 教材拓展

物理设计的本质,是把抽象电路描述(网表)嵌入(embed)到硅片,在芯片上生成满足全部约束的几何版图。

输入:超图(Hypergraph)网表

$H = (V, E)$,$V$ = 模块/单元集合,$E$ = 线网(hyperedge,一条线网可连接多个引脚)

另含:单元几何(LEF)、时序模型(.lib)、时序约束(SDC)、工艺规则(.tf)

输出:嵌入 φ(几何布图)

$\varphi : V \to$ 平面坐标(合法位置 + 朝向);$E \to$ 金属层上的连线几何

目标 + 约束

$\min\ \ \alpha\cdot\text{线长} + \beta\cdot\text{延迟} + \gamma\cdot\text{功耗} + \delta\cdot\text{面积}$

s.t. 不重叠、对齐 Row/Site、满足全部 DRC、时序裕量 $\ge 0$、IR Drop 与拥塞在限内

为何用超图而非普通图

一条线网常连接 3 个以上引脚,是一条"超边"。划分、布局、布线算法都直接在超图上定义,不能简化为两两相连的普通图。

"嵌入"的几何本质

布局是把超图顶点放到欧氏平面上的"嵌入"问题;布线则是在受层数与轨道约束的离散网格上为超边找连接几何。

分解为子问题

整体不可解→分解为划分→布图→布局→CTS→布线等可处理的子问题,每步用各自的代价模型近似全局目标。

来源:Handbook of Algorithms for Physical Design Automation, Ch.1(embedding a netlist into silicon;Netlist Partitioning)

设计收敛 / 时序收敛(Design Closure)📖 教材拓展

现代 EDA 的终极目标:给定功能规格,工具无需反复人工干预即产出同时满足功能、速度、面积、功耗、良率等全部要求的设计——这就是"设计收敛"。

从单点权衡到全局收敛

过去每出现一个"收敛问题"(如布局可布通性、时序收敛与面积),就单独权衡两三个指标;今天追求的是同时统筹所有性能特征的整体收敛

时序收敛(Timing Closure)

反复运行 STA→修复违例(Upsizing / 插缓冲 / 增量布局布线)→再 STA,直至 $\text{WNS}\ge 0$、$\text{TNS}=0$。先进工艺互连主导使时序收敛尤为困难,"大芯片的时序收敛尚未被完全解决"。

物理综合的闭环

综合与物理设计交叉迭代:版图布局结果回灌综合以提升估计精度,避免线负载模型导致的乐观偏差。

布局 / 布线 STA 分析 修复违例 寄生提取 SPEF
图 0-3 时序收敛迭代闭环:布局布线→寄生提取→STA→修复→再迭代,直至全部裕量为正
收敛失败时需返回更早阶段(甚至重做布图规划),这正是物理设计"迭代"而非"流水"的根本原因。

来源:Handbook of Algorithms for Physical Design Automation, Ch.1 / Ch.2(design closure;timing closure for large chips is not yet fully solved)

基于标准单元库的大规模数字设计流程📖 教材拓展

中文教材给出的标准流程,与本讲"十步链路"互补:自需求分析与选工艺起,前端 HDL→综合,后端 .v/.lef/.lib 输入自动布局布线,最后多重验证后产出 GDS 交付代工厂。

① 需求分析 & 选工艺分析功能/性能/功耗需求,确定流片工艺节点(65nm / 28nm / 7nm…),取决于性能·功耗·成本权衡。
② 前端:架构 & RTL 设计用 Verilog/VHDL 在系统级/算法级/RTL 级/门级描述电路;RTL 级最常用、可综合。
③ 功能仿真验证编写 Testbench 与激励向量,仿真比对输出;不符则改设计代码。
④ 逻辑综合RTL→门级网表,插入可测性扫描链(DFT);HLS 可由 C++ 综合但 PPA 尚不完善。
⑤ 综合后验证时序信息回标网表做综合后仿真;形式验证比对综合前后功能一致性。
⑥ 后端布局布线输入 .v + .lef + .lib → 系统规划(Floorplan)→布局→时钟树→布线→产生 GDS。
⑦ 寄生提取 & 验证提取 R/L/C 寄生;动态仿真、STA、功耗分析;DRC 检查制造规则、LVS 比对版图与电路一致性。
⑧ 交付制造全部签核通过后,GDS 交付 Foundry(TSMC / SMIC / GlobalFoundries 等)流片。
与本讲"十步链路"对照:教材流程把"功能/综合后/形式验证"等验证环节显式串入主线,强调"设计—验证"交替推进;数模混合电路可把模拟模块作为 IP 嵌入此流程。

来源:《大规模集成电路设计方法》第1章 1.2 大规模集成电路设计流程(图1.2.1 / 图1.2.2)

物理设计自动化:算法分类与复杂度视角📖 教材拓展

物理设计的核心子问题大多是 NP-hard,规模又达数十亿单元——因此实践依赖启发式、解析法与分治,在可接受时间内逼近最优。

子问题复杂度主流算法范式
划分(Partitioning)NP-complete(图划分判定)KL/FM 移动启发式、谱方法(特征值)、多层划分(hMETIS)
布图规划(Floorplan)NP-hard切片树 + 模拟退火、解析法、序列对(Sequence Pair)
布局(Placement)NP-hard解析法(二次/非凸 + 梯度下降 / Nesterov)、分割法、退火
布线(Routing)含 RSMT 即 NP-hard迷宫/Lee、A*、整数规划松弛、Steiner 树启发式、协商重布线
"网格上的 Steiner 问题是著名的 NP-hard 问题"——精确解不可行,故全局布线普遍采用启发式构造 RSMT 并配合拥塞驱动重布线。

启发式(Heuristic)

不保证最优但快速:KL/FM 划分、模拟退火布图、迷宫布线。靠经验规则与局部移动逼近好解。

解析法(Analytical)

把布局写成连续可微目标函数,用数值优化(二次规划 / 梯度下降 / Nesterov)求解,可扩展到千万级单元,是现代布局器主流。

分治 / 划分(Partitioning)

沿摩尔定律的"指数复杂度增长",用递归二分/四分把超大网表切成可处理子块——这是管理设计复杂度的根本手段。

来源:Handbook of Algorithms for Physical Design Automation, Ch.1(Steiner problem on a grid is NP-hard;partitioning, Moore's law of exponential complexity growth)

本讲核心知识点回顾

芯片设计十步链路 系统规格→架构→RTL→逻辑综合→工艺映射→物理设计→签核验证→制造→封装测试,EDA 全程自动化。
物理设计目标 电路描述→几何版图,优化 PPA(性能/功耗/面积)三角;四步骤:布图规划、布局、CTS、布线。
标准单元库 预设计版图、等高单元、驱动强度多版本(X1/X2/X4/X8)、"盒子+引脚"抽象;驱动规则:Max Fanout / Max Transition / Max Cap。
关键文件格式 LEF(物理库)· .lib(时序库)· SDC(时序约束)· .tf(工艺文件)· DEF(版图状态)· SPEF(寄生 RC)· GDSII(最终交付)。
布线基础概念 全局布线→详细布线;Via 连接金属层;轨道间距决定布线资源;优选方向交替减少串扰。
签核与拥塞 STA + IR Drop + DRC + LVS 全部通过才可交付;布线拥塞 = 某 GCell 需求线网数 > 可用轨道数,是物理设计最常见问题之一。
PPA 三角 Sign-off 签核 等高标准单元 LEF + DEF 配合 HPWL 线长估计 时钟 Skew 最小化 布线拥塞 优选布线方向

自测与思考题

课内自测

  1. 逻辑综合与工艺映射都输出门级网表,两者有何本质区别?
  2. 物理设计的输入是什么?输出是什么?它处于整个芯片流程的哪个位置?
  3. 为什么所有标准单元要设计成等高?这对布局有什么好处?
  4. Tech LEF 和 Cell LEF 分别描述什么?为什么要分开?
  5. 布线拥塞是怎么发生的?有哪些早期缓解手段?

T1 工艺节点影响

从 28nm 演进到 7nm,对标准单元高度、金属层数、DRC 复杂度、RC 时序影响、布线拥塞各有何变化?

T2 布线轨道资源估算

Track Pitch = 0.1 μm,核心区域宽 1 mm,共可提供多少条轨道?某 GCell(100×100 μm)内需穿过 800 条线,是否拥塞?

T3 SDC 一致性

综合阶段与物理设计阶段 SDC 不一致,会对 STA 结果、时序收敛难度和返工成本各造成什么影响?

T4 CTS 与建立 / 保持时间

时钟周期 1 ns,两 FF 的 Skew = 200 ps。分析对建立时间约束和保持时间约束各有何影响?为何 Hold 违例比 Setup 违例更难修复?

数字芯片物理设计自动化

第 1 讲 :布图规划

李兴权

东南大学 集成电路学院

E-mail: x.li@seu.edu.cn

v4.0

本讲路线图

① 概述 & 任务目标

6 大核心任务、3 个优化目标、关键设计概念

② 输入与输出

必需 / 可选输入;6 类输出物;三角权衡

③ 尺寸·利用率·长宽比

Core / IO 区、Row / Site、两式利用率、AR 调优

④ TapCell & 闩锁效应

寄生 BJT 机理、Guard Ring、TapCell 作用

⑤ 宏单元约束与障碍

IO Pad、四级布局约束、软硬障碍、光晕、布线障碍

⑥ 电源配送网络 PDN

层次化网格、IR Drop 计算、EM 失效、权衡

⑦ 布图表示法

切片树·序列对·B*树及发展历程

⑧ 优化算法

SA、RL+GNN、解析法 PeF、多级框架、iMP

⑨ 混合尺寸 & 层次化

混合尺寸布局、层次化设计

工程箴言:Floorplan 好,后面都好。一个糟糕的 Floorplan 让布线和时序收敛代价翻倍。

布图规划概述——六大核心任务

Floorplanning:逻辑描述(网表)→ 物理描述(布图平面图)的映射

① 定义芯片与 Core 尺寸确定 Die 边界和 Core 区域,为所有后续步骤提供空间约束。
② 确定 I/O 引脚位置安排信号/电源引脚在芯片边沿,影响封装和板级布局。
③ 确定宏单元位置把 SRAM、IP 核等大模块推向边沿,减少对标准单元区的干扰。
④ 电源网络与过孔设计规划 VDD/GND 网格、金属层、过孔堆叠,保证供电可靠。
⑤ 定义电源域多电压设计中划分 Power Domain,插入电平转换器和隔离单元。
⑥ 布局物理单元插入 TapCell(防闩锁)、Endcap Cell(行端填充)等物理辅助单元。
布图规划全貌 布图规划全貌动画
图:Core 区域、IO 区域、宏单元、IO Pad 的空间分布全貌

三个优化目标

最小化芯片面积

面积决定每片晶圆裸片数(DPW),是制造成本的关键因素。需在利用率与布线拥塞间取平衡。

最小化延迟

宏单元与关键逻辑之间的物理距离影响 RC 延迟。时序敏感路径对应的模块需尽量靠近。

最小化布线拥塞

局部布线资源不足导致绕线增加、时序变差甚至无法完成布线。合理分散宏单元可降低热点拥塞。

关键概念决策影响
芯片尺寸 (Die Size)工艺节点、功能需求和成本共同决定;是 Floorplan 第一约束
门数量 (Gate Count)决定标准单元所需 Core 面积,是利用率估算的基础
金属层数量影响布线资源总量和 PDN 方案;先进工艺可达 15+ 层
硬核 IP / 宏单元形状固定,必须 FIXED;其位置主导周边布线拥塞
电源分配 (PDN)保证全芯片 IR Drop 和 EM 满足规范;可靠性基础
扁平 vs 分层设计扁平:全局优化空间大;分层:模块化强但接口约束复杂
Die(芯片边界 / 尺寸) IO Pad 环 Core 核心区(标准单元行) SRAM 宏 IP 核 PDN Strap ① 最小化面积Die/Core 尺寸 → 每片 DPW、成本 ② 最小化延迟关键宏单元靠近关联逻辑,缩短 RC ③ 最小化拥塞分散宏单元,避免局部布线热点 关键概念 · Die Size / Gate Count· Hard Macro(FIXED)· 金属层数 / 布线资源· PDN 电源网格· 扁平 vs 分层
图:典型布图规划版图——对照标注三个优化目标(面积 / 延迟 / 拥塞)与关键概念(Die、Core、IO Pad、宏单元、PDN)

Floorplan 输入与输出

输入必需说明
设计网表 (Netlist)必需门级网表,描述逻辑功能与连接关系
面积需求必需标准单元和宏单元总面积估算,确定 Core 尺寸
功耗需求必需各模块功耗分布,影响 PDN 和热点预判
时序约束 (SDC)必需时钟频率、输入输出延迟约束
物理分区信息必需相关模块归属信息,便于空间聚集
I/O 与宏单元布局可选设计师或封装需求预先指定的固定位置
输出说明
芯片/模块面积Die 和 Core 的具体尺寸
I/O 引脚位置每个信号/电源引脚的精确坐标
宏单元位置所有 Hard Macro 的坐标和方向(FIXED)
电源网格VDD/GND 网格的金属层、线宽、间距规格
电源预布线主干 Strap 已完成布线,信号布线资源明确
标准单元布局区域剩余 Core 空间中标准单元可合法布局的行
三角权衡:面积↓ vs 性能↑ vs 进度↑——Floorplan 工程师在三者之间寻找实际平衡点。
输入 设计网表 Netlist (.v) 面积 / 功耗需求 时序约束 SDC 物理分区信息 可选:IO/宏单元预布局 布图规划 Floorplan 输出 Die / Core 尺寸 I/O 引脚位置 宏单元位置(FIXED) 电源网格 + 预布线 标准单元布局行 ← 确定芯片/核心边界← Pad 环坐标← Hard Macro 定位← PDN / IR 保障← Row/Site 合法区
图:布图规划把左侧输入转化为右侧输出——中间缩略版图对照展示各输出物在芯片上的体现

Core 区域 / IO 区域 · Row & Site

Core & IO

Core 区(Core Region)

芯片中心区域。只有 CORE 类型单元(标准单元、宏单元)可放入 CORE 行,决定芯片逻辑实现能力。

IO 区(IO Region)

芯片外围区域。只有 IO 类型单元(信号 Pad、电源 Pad、角 Pad、Pad Filler)可放入 IO 行;IO 引脚不随摩尔定律等比缩放,成本相对昂贵。

Row & Site

Core 区被划分为若干水平 Row(行),每行由若干 Site(站点) 构成;Site 是最小布局粒度,单元宽度须为 Site 宽的整数倍、高度等于行高,保证对齐。

概念含义 / 约束
Row(行)水平条带,行高 = 单元高(整数倍 Site 高)
Site(站点)最小布局粒度,宽 / 高由工艺库定义
单元宽度$= k \times \text{Site 宽}$(k 为正整数)
相邻行翻转(Flip)共享 VDD/VSS 轨,省面积 ~50%
Core 与 IO 区域划分
图:Core 区放标准单元和宏单元,IO 区放 Pad 单元,两区各有专属单元类型约束
Cell(3 Site) 2 Site VDD 轨 VSS 轨(相邻行翻转共享) Row 行高 ← 1 Site 宽(最小布局单元)
图:Row 与 Site 网格——水平 Row 上下为 VDD/VSS 轨(相邻行翻转共享),每行由等宽 Site 构成,标准单元宽度为 Site 宽的整数倍

利用率(Utilization)

Die 利用率

$\text{Die Utilization} = (\text{标准单元面积} + \text{宏单元面积} + \text{IO 环面积}) / \text{Die 面积} \times 100\%$

反映整个芯片(含 IO 区)的面积利用情况

Core 利用率(工程主要调节参数)

$\text{Core Utilization} = \text{标准单元面积} / \text{Core 面积} \times 100\%$

反映 Core 区中标准单元的密度

利用率范围典型状态风险与对策
60%–80%推荐范围留足布线和时钟缓冲空间,可实现性好
>80%高密度布线拥塞和局部 Hotspot 风险显著增加
>90%极高密度几乎必然出现布线拥塞;需调大 Die 或缩减功能
<50%过于保守面积成本浪费;线长可能增加
为什么仅靠利用率估算不准确?利用率是面积平均值,局部拥塞可能在全局利用率合理时仍出现。需结合 Trial Route(试验布线)验证。
Core 区 Die 利用率=(标准单元+宏+IO环)/DieCore 利用率=标准单元面积/Core 面积金色=IO Pad,灰=宏,蓝=标准单元
稀疏 ~45% 空白多、布线松,但面积浪费 高密度 ~85% 面积省,但布线拥塞/Hotspot 风险高
图:相同 Core 区,左为稀疏布局(~45%),右为高密度布局(~85%)——利用率越高越省面积但越易拥塞

长宽比(Aspect Ratio)与布线资源

AR = Core 高度 / Core 宽度 = 垂直布线资源 / 水平布线资源

AR = 1.0(正方形)

高度 = 宽度。水平与垂直布线资源平衡,最常见的起始选择。

AR > 1.0(竖高矩形)

高度大于宽度,增加垂直方向空间,即增加水平布线轨道数。适用于水平布线资源不足的场景。

AR < 1.0(横宽矩形)

宽度大于高度,增加水平方向空间,即增加垂直布线轨道数。适用于垂直布线资源不足的场景。

布线资源平衡法则

垂直布线资源少 → 增加宽度(AR < 1):更多列 = 更多垂直轨道

水平布线资源少 → 增加高度(AR > 1):更多行 = 更多水平轨道

自测

  1. Core 面积 $1\ \text{mm}^2$,标准单元总面积 $0.65\ \text{mm}^2$,Core 利用率是多少?
  2. 发现水平金属层(M2/M4)特别拥塞,应调整 AR 变大还是变小?
AR 对布线资源的影响
图:不同 AR 下芯片形状对比——AR=1 资源均衡;AR>1 增加水平轨道;AR<1 增加垂直轨道

IO Pad 结构

信号 Pad(Input / Output / InOut)

承载芯片与外部的信号连接。输入 Pad 含 ESD 保护和接收电路;输出 Pad 含驱动器;双向 Pad 两者兼备。

电源 Pad(Power Pad)

VDD 和 GND 的外部供电接口,多个电源 Pad 并联以降低等效电阻,减少 IR Drop。

角 Pad(Corner Pad)

布局在芯片四角,连接水平和垂直 P/G 环,确保电源环路连续。

Pad Filler(填充单元)

填补 Pad 之间的空隙,保证 IO 环的连续性(金属和 N/P 阱连续),满足 DRC 要求。

P/G 环(Power/Ground Ring):IO Pad 内侧通常有一圈 VDD 和 GND 的金属环,将电源从 Pad 分配到整个芯片边缘,再通过 Strap(横条)延伸到 Core 内部网格。
IO Pad 结构示意
图:信号 Pad(含 ESD 保护)、电源 Pad、角 Pad 和 Pad Filler 共同构成完整 IO 环,角 Pad 连接水平/垂直 P/G 环

宏单元布局原则与四级布局约束

布局原则

原则理由
推向芯片边沿中心区域留给标准单元,布局算法在大矩形区域效果更好
高功耗宏单元避开中心中心散热最差,高功耗模块放中心形成热点,影响可靠性
标记为 FIXED防止布局工具在后续步骤中误移动已手动确认的宏单元
考虑布线通道宏单元间需留足够宽度供信号线穿越

四级布局约束(强度递增)

类型英文名强制程度含义
软引导Soft Guide最弱:建议尝试聚集,但无需指定区域,工具可忽略
引导Guide弱:指导尝试布局在指定区域内,约束冲突时可违反
区域Region强:必须在内单元必须在指定区域内,但允许其他单元共存
围栏Fence最强:独占单元必须在指定区域内,且该区域排斥其他单元
电源域边界用 Region 或 Fence;时序关键路径聚集用 Guide;IP 核独占区用 Fence。过度使用 Fence 会大幅压缩布局自由度,导致拥塞。
位置原则:宏单元推向边沿、高功耗避开中心 宏 FIXED 宏 FIXED 高功耗靠边散热 宏 FIXED 中心留给标准单元 + 留宏单元间布线通道 四级布局约束(强度递增) ① Soft Guide:建议聚集 ② Guide:尽量在内(可违反) ③ Region:必须在内(可共存) 其他单元也可进入 ④ Fence:独占(排斥他者)
图:左——宏单元推向边沿、高功耗模块靠边散热、标记 FIXED 并预留布线通道;右——四级布局约束强度递增(Soft Guide→Guide→Region→Fence)

布局障碍(Placement Blockage)与布线障碍(Routing Blockage)

布局障碍类型

硬障碍 (Hard Blockage)

绝对禁止布局任何单元(布局与优化阶段均禁)。常用于宏单元占用区。

软障碍 (Soft Blockage)

布局阶段不可用,优化阶段(如时序修复)可用,提供灵活性。

部分障碍 (Partial Blockage)

设较低利用率上限(如 20%),允许少量单元进入,作梯度过渡。

光晕 (Halo / Padding)

宏单元外围保护缓冲区,禁标准单元进入,保证边界布线通道。

Halo / Padding(保护缓冲) 宏单元 硬障碍 Hard 全网布线禁布 软障碍 Soft 布局禁用优化期可用 部分障碍 ≤20% 信号网障碍(Strap 预留) 蓝=标准单元 灰=宏(占区即硬障碍)
图:硬障碍(宏占区,全禁)/软障碍(布局禁、优化可用)/部分障碍(限利用率)/Halo(保护缓冲)/信号网布线障碍(Strap 预留)

布线障碍类型

全网障碍 (All Nets)

阻止所有网络(信号+电源+地)在该区域布线,用于宏单元正上方等完全禁布区。

信号网障碍 (Signal Nets Only)

仅阻止信号网布线,不影响 P/G;常用于电源 Strap 预留区。

P/G 网障碍 (PG Nets Only)

仅阻止电源/地网布线,信号网可用;用于特殊电源隔离。

全网障碍 信号+P/G 全禁 信号网障碍 仅禁信号(蓝),P/G 可过 P/G 网障碍 仅禁 P/G(红),信号可过 蓝线=信号网布线 红线=电源/地网布线 虚线穿过框=被该类型障碍阻断
图:三类布线障碍——全网障碍(信号+P/G 全禁)、信号网障碍(仅禁信号)、P/G 网障碍(仅禁电源/地)

电源配送网络(PDN)——层次化网格结构

PDN 是芯片的"动脉系统",保证全芯片 VDD/GND 稳定供电。

IO 环(IO Ring)最外层,连接电源 Pad,形成 VDD 和 GND 的闭合环路,为全芯片供电。
主干 Strap从 IO 环延伸进入 Core 区的粗金属线(高层金属,如 M8/M9),大电流主通道。
子网格 Mesh在 Core 区形成均匀网格,从多方向为标准单元供电,降低串联电阻。
标准单元 Rail最底层(如 M1),平行于行方向,直接连接单元的 VDD/GND 引脚。
多重过孔(Multiple Vias):各金属层之间使用 Via Array 代替单个过孔,显著降低接触电阻,提高电流承载能力和可靠性。
IO 环(VDD 红 / GND 蓝) 主干 Strap 子网格 Mesh 标准单元 Rail(M1)
图:层次化 PDN——IO 环(连电源 Pad)→ 主干 Strap(高层粗金属)→ 子网格 Mesh(中层均匀网格,Via Array 互连)→ 标准单元 Rail(M1,直连单元 VDD/GND)

IR Drop(电压降)

$\text{IR Drop} = I \times R$,过大的 IR Drop 使单元工作电压低于规范,导致时序违规甚至功能失效。

Step 1:构建电阻矩阵将电源网络中每段金属线和过孔建模为电阻,构建节点电阻矩阵 R。
Step 2:估算各门电流根据功耗估算每个逻辑门/宏单元的平均工作电流 I。
Step 3:求解节点电流联立电阻矩阵与电流注入,利用 KCL 求解每个节点电流分布。
Step 4:计算电压降ΔV = I × R,得到全芯片各节点的 IR Drop 热力图(Hot Spot Map)。
IR Drop 计算示例

M1 层电源轨:长 1 mm,线宽 100 nm,方块电阻 $R_{\text{sheet}} = 0.1\ \Omega/\text{sq}$

方块数 $= 1\,\text{mm}/100\,\text{nm} = 10{,}000$ → $R = 0.1 \times 10{,}000 = \boxed{1000\ \Omega}$

$J = 1\ \text{mA}/\mu m$,$I = J \times w = 1 \times 0.1 = 0.1\ \text{mA}$

$\text{IR Drop} = 0.1\,\text{mA} \times 1000\,\Omega = \boxed{100\ \text{mV}}$(占 1V 电源的 10%,严重超标!)

→ 必须加宽电源线或增加并联路径。

沿供电路径的节点电压(VDD=1.00V) 1.00V 0.85V 距电源 Pad 距离 → (Pad 端 → 芯片中心) 理想压降阈值 0.97V(−3%) 最低允许电压 0.90V(−10%) 违规!跌破 0.90V
IR Drop 热力图(ΔV=I×R) Hot Spot ΔV 100mV 0mV
图:上——沿供电路径的电压折线图(随距离波动下降,绿=理想压降阈值、红=最低允许电压;末端跌破即违规);下——IR Drop 热力图,红色中心为 Hot Spot,需加宽 Strap / 增加电源 Pad

电迁移(EM)与电源线设计权衡

EM 三种失效模式

失效模式物理机理后果
开路 (Void)金属原子从某处迁移离开,形成空洞导线断路,信号或电源中断
短路 (Hillock/Bridge)金属原子堆积,形成突起桥接相邻导线导线间短路,电路失效
性能退化导线截面变形,R 和/或 C 变化RC 延迟增加,时序逐渐劣化

EM 严重程度与电流密度正相关。工艺厂商规定每层金属的最大允许电流密度 (J_max),PDN 必须满足该约束。

电迁移(Electromigration)失效机理 电子风(动量传递推动金属原子迁移)→ 空洞 Void → 开路/断路 小丘 Hillock → 桥接/短路 原子在阴极流失成空洞、在阳极堆积成小丘;电流密度越高越严重
图:电迁移——电子风推动金属原子迁移,阴极形成空洞(开路)、阳极形成小丘(短路)

IR Drop vs 布线资源权衡

设计选择对 IR Drop/EM 的影响对信号布线资源的影响
加宽电源线降低 R → 减少 IR Drop;降低电流密度 → 改善 EM占用更多金属层资源,信号布线可用轨道减少
增加 Strap 数量增加并联路径 → 降低等效电阻大量 Strap 可能阻断信号布线通道
使用更高金属层高层金属更厚 → 电阻更低部分占用高层资源,但影响相对小

自测

  1. 层次化 PDN 网格的四个层次各承担什么角色?
  2. 将 IR Drop 示例中线宽从 100 nm 改为 1 μm,IR Drop 变为多少?

电路划分(Partitioning)概述 📖 教材拓展

展平式设计把整张网表直接切成若干互连的划分块(Partitions),是布图规划之前的"分而治之"第一步。

为什么要先划分?

混合尺寸布局

降低规模

把 10⁶+ 单元的网表切成若干子块,每块独立 P&R,使后续布局/布线在可控规模上求解;多级框架基础。

减少模块间互连

把强连接的单元聚到同一块内,块间只留少量互连线(割边),缩短全局线长、降低拥塞。

支撑层次化设计

划分块可作为软模块灵活调整长宽比,与层次化逻辑模块一起进入布图规划。

划分块 C₁ 划分块 C₂ G1 & G2 ≥1 G3 & G4 DFF G5 ≥1 G6 & G7 & G8 DFF 割集 Cut = 2(红边) | 规模平衡 |C₁|:|C₂| = 4:4 ∈ [45%,55%] ✓
图:逻辑符号网表 → 二划分结果。块内连线(灰)尽量多、跨区割边(红)尽量少,并满足平衡约束
划分本质是把网表抽象成图 / 超图:单元为顶点,线网为边(超边)。目标——最小化被切断的线网数(割集 Cut),同时满足两侧规模平衡。这是一个 NP-hard 组合优化问题。

核心度量与约束

割集大小(Net Cut)

$|E_c|$ = 两个划分块之间被切断的线网(超边)数量,越小越好。

平衡约束(Balance Constraint)

$\alpha\cdot|V| \le w(C_1) \le \beta\cdot|V|$,二分常取 $\alpha=0.45$、$\beta=0.55$(45%/55%)。

防止退化为"全塞一边"的零割解。

比率割(Ratio Cut)

$rc = |E_c| / ( w(C_1) \cdot w(C_2) )$

把平衡约束直接编进目标函数:分母在两块等大时最大,从而自动倾向均衡划分(Wei & Cheng 1991)。

比率割的弱点:$rc$ 对 $|E_c|$ 极敏感、对块大小相对不敏感——割集足够小时即便两块不均衡也可能取得最小 ratio cut(Alpert & Kahng 指出)。

Kernighan–Lin(KL)算法——成对交换 📖 教材拓展

最早摆脱穷举的二分划分启发式:每趟反复挑选"增益最大"的一对顶点交换,逼近局部最优割集。

增益(Gain)定义

把顶点 x、y 在两块 $C_1$、$C_2$ 之间互换后,割集减少的边数即为该对的增益 $g(v_x, v_y)$:

成对交换增益

$g(v_x, v_y) = (E_x - I_x) + (E_y - I_y) - 2\cdot a_{xy}$

$E_x$ = x 连到对侧块的边数(外部代价)
$I_x$ = x 连到本块的边数(内部代价)
$a_{xy}$ = x、y 之间是否直接相连(减去重复计数)

直觉:外部边多、内部边少的顶点对,交换后能把更多割边"消化"进块内 → 增益高,优先交换。

一趟(Pass)流程

① 初始二分把顶点分成等大的 C_1、C_2,计算所有跨块对的增益。
② 选最大增益对交换挑 g 最大的 (v_x,v_y) 交换,并把二者"锁定"(移出候选)。
③ 重算并重复对剩余未锁定顶点重算增益、继续交换,直到所有顶点都被锁定一次,记录一串交换序列。
④ 回滚到最优前缀沿序列累加增益,回滚到累计增益最大的位置(允许中途接受负增益再反弹,跳出局部最优)。
复杂度

每趟需重算成对增益:$O(n^2 \log n)$(n = 顶点数)。

缺点:基于图模型,对多端线网(超边)建模不准;成对交换且每次需重算,规模大时慢。

Fiduccia–Mattheyses(FM)算法——单元移动 + 增益桶 📖 教材拓展

线性时间超图划分:用"单顶点移动"代替成对交换,配合增益桶(Bucket List)把每趟做到 O(P)。

两大关键改进

单元移动(Single-cell Move)

每步只把一个顶点从一块移到另一块(而非成对交换),并维持平衡约束。移动一个顶点只需更新其邻接线网的状态。

增益桶(Bucket List)

用数组 [−P_max … +P_max] 索引,第 i 桶挂一条增益恰为 i 的自由顶点双向链表;维护 maxgain 指针,可 O(1) 取出最大增益顶点、O(1) 增删。

"临界网(Critical Net)"是 FM 的核心概念:仅当一个线网在某块中只剩单个顶点(或恰好为空/满)时,移动它才会改变割集——只需对临界网更新增益,使每趟代价正比于引脚总数 P。
实现细节:从桶中取/插顶点采用 LIFO(后进先出)效果更好;网表中相邻顶点常顺序排列,需谨慎正确计算增益。

KL vs FM 对比

维度Kernighan–Lin (KL)Fiduccia–Mattheyses (FM)
基本操作成对交换两顶点移动单个顶点
网表模型图(多端网建模差)超图(直接处理多端网)
每趟复杂度$O(n^2 \log n)$$O(P)$(P=引脚数,线性)
选点数据结构重算全部成对增益增益桶 O(1) 取最大
跳出局部最优回滚到最优前缀回滚到最优前缀(同思想)
平衡控制等大交换天然平衡移动时显式检查平衡比

自测

  1. 为什么 FM 能做到每趟 $O(P)$,而 KL 需 $O(n^2\log n)$?关键数据结构是什么?
  2. "临界网"为什么能减少增益更新的计算量?

多级划分框架(Multilevel)与谱划分(Spectral) 📖 教材拓展

现代划分的事实标准:先把图反复"粗化",在最小图上划分,再逐级"细化"回原图。来源:Handbook of Algorithms for Physical Design Automation(划分章,hMETIS / 谱方法)

多级框架三阶段

① 粗化(Coarsen / Clustering)反复把强连接顶点(最大匹配)合并为超节点,构造一系列越来越小的图,直至规模足够小。
② 初始划分(Partition)在最粗的小图上求一个满足平衡约束的初始二分(可用 FM 或谱方法)。
③ 解粗化 + 细化(Uncoarsen / Refine)逐级把超节点展开映射回更细的图,每级用 FM 型迭代改进割集(投影 → 局部 refine)。
代表工具:hMETIS(超图多级划分器)。多级框架把"全局视野"留给最粗图、"局部优化"交给细化阶段,质量与速度兼得,至今仍是 de facto 标准。

谱划分(Spectral Partitioning)

拉普拉斯矩阵

$L = D - A$(D 为度对角阵,A 为邻接矩阵)。

最小特征值 $\lambda_1=0$;第二小特征值 $\lambda_2$ 对应特征向量 $u_2$ 即 Fiedler 向量

Fiedler 向量划分

按 $u_2$ 各分量相对其中位数的正负,把顶点二分为两块。

$u_2$ 把强连接顶点拉近、弱连接拉远,天然给出低割集划分。

多级谱划分:粗化后用 Lanczos / Rayleigh 商迭代求 Fiedler 向量,再插值回细图作为热启动,逐级细化。比率割的 k 路推广有下界 $\sum \lambda_i$(Chan et al.)。

宏单元布局问题与线长目标:半周长线长(HPWL)

宏单元布局问题:在芯片边界内无重叠布局 n 个宏单元,最小化线网总长度与外接面积。

问题模型

输入:模块 $\{(w_i,h_i)\}$、线网集合 $\{e_k\}$(每个线网连接若干模块引脚)。

变量:每个模块的位置 $(x_i,y_i)$ 及可选朝向。

约束:两两无重叠、落在固定边界 $(W,H)$ 内。

目标:$\min \sum_k \text{HPWL}(e_k)$(+面积/拥塞项)。

半周长线长 HPWL(线网 e)

$\text{HPWL}(e) = (\max_x - \min_x) + (\max_y - \min_y)$

O(引脚数) 计算,与真实曼哈顿布线长度高度相关,是布局内循环的主优化目标。

多条线网通过共享单元相互耦合:移动一个被多网共享的单元会同时改变多个边界框——这正是布局优化要权衡的核心。
混合尺寸布局 混合尺寸布局

主流的宏单元布图算法

宏单元布图=在芯片边界内无重叠布局 n 个矩形块、最小化面积与线长。下面是四大求解范式与三个可交互演示。

范式代表适用场景本页演示
整数规划MILP小规模(n < 50),精确最优
启发式算法SA + 切片树 / B*树中等规模,工程首选① 模拟退火 ② B*树装箱
连续优化(解析法)PeF、UFO大规模,结合连续松弛③ 解析法
深度学习 / RLGoogle ChipNet (Nature 2021)超大规模,数据驱动—(见后页)

① 启发式:模拟退火(SA)求布局

② 表示法装箱:B*树 O(n) packing

③ 连续优化:解析法(线长+密度)

面积/线长估计与目标函数构成 📖 教材拓展

布图规划传统分两步:① 拓扑生成(确定相对位置)→ ② 定形 Sizing(确定各模块长宽比),共同优化面积与线长。

三类模块的面积建模

库模块(固定)

来自库、设计与接口固定的硬模块,面积与形状已知(如 IP 核、SRAM)。

设计已知、版图灵活

面积已知但长宽比可调的软模块,定形阶段确定其形状。

设计未完全确定

只能给出面积估计,需在流程中不断更新——面积估计要同时处理这三类。

每个模块 i 用三元组 $(a_i, p_i, q_i)$ 描述:面积 $a_i$ 与长宽比约束 $p_i \le h_i/w_i \le q_i$。硬模块 $p_i=q_i$;软模块 $p_i<q_i$。

模块形状约束

$w_i \times h_i = a_i$; $p_i \le (h_i/w_i) \le q_i$

可旋转模块还允许 $(1/q_i) \le (h_i/w_i) \le (1/p_i)$。

线长估计与目标函数

模块间连线用 $n \times n$ 连接矩阵 C 描述,$c_{ij}$ = 模块 i、j 间的线网数;$d_{ij}$ 为二者基本矩形中心到中心的曼哈顿距离

中心间总线长

$\text{WL} = \sum_{1\le i,j\le n} d_{ij} \cdot c_{ij}$

(布局阶段更常用 HPWL 半周长估计,见前页)

布图目标函数(加权和)

$\text{Cost} = \alpha \cdot \text{Area}(\text{外接矩形}) + \beta \cdot \text{WL}$

Area = 包住所有模块的最小外接矩形面积;$\alpha$、$\beta$ 为面积/线长权重。

定形的价值:拓扑固定后,调节每个软模块的长宽比,使其与邻居"咬合",可在不改变拓扑的前提下进一步压缩外接矩形面积——这正是下方形状曲线所解决的问题。

面积计算与形状曲线(Shape Curve)

① 库/硬模块 a=w×h 固定 p = q(形状唯一) ② 软模块 a 固定 p ≤ h/w ≤ q(可定形) ③ 未定模块 ≈ a? 仅面积估计 流程中迭代更新 面积估计需同时处理三类模块;模块 i 统一用三元组 (aᵢ, pᵢ, qᵢ) 描述
图:三类模块的面积建模示例(硬 / 软 / 未定)
宽 W 高 H 软模块:xy = aᵢ(面积守恒) h/w=q h/w=p 硬模块(单点 (w,h)) 可旋转:(w,h)与(h,w)
图:形状曲线——硬模块为点、可旋转硬模块为两点、软模块为双曲线段 $xy=a_i$(在 $[p,q]$ 长宽比间可行)

布图表示法发展历程

1986 — 切片树 (Slicing Tree)

Wong & Liu,DAC 1986。基于递归切割,逆波兰表达式编码,$O(n)$ packing,解空间 $O(n!\cdot 2^{2.6n}/n^{1.5})$。只能表示 slicing 结构。

1995 — 序列对 (Sequence Pair)

Murata et al.,ICCAD 1995。两个序列编码任意非切片版图,解空间 $(n!)^2$,LCS 算法 $O(n \log n)$。

1999 — O-tree

Guo et al.,DAC 1999。紧凑表示,针对无白空间非切片版图,减少冗余解。

2000 — B*树 (B*-tree)

Chang et al.,DAC 2000。二叉树结构,$O(n)$ packing,解空间 $O(n!\cdot 2^{2n}/n^{1.5})$,可表示压缩非切片版图。

2000 — Corner Block List

Hong et al.,ICCAD 2000。利用版图角模块序列编码拓扑关系,支持非切片结构。

2003–2004 — 序列/图类方法

Corner Sequence(Lin & Chang)、Twin Binary Sequence(Young et al.)、TCG/TCG-S(Lin & Chang, IEEE TCAD 2004)。进一步扩展表达能力与搜索效率。

布图表示法发展历程时间线
图:从 1986 年切片树到 2004 年 TCG 的表达能力与解空间发展

规范化波兰表达式(Normalized Polish Expression)

切片树与逆波兰(后缀)表达式一一对应:对切片树进行后序遍历,将模块名作为操作数、切割方向(H/V)作为操作符,得到后缀字符串。规范化要求连续的操作符链中不允许出现相邻同类(即无连续 HH 或 VV),使每个切片结构与唯一的规范化表达式对应。

据 Handbook Ch9(Wang & Wong):规范化波兰表达式搜索空间的可达性——M1/M2/M3 三种操作的组合使得 SA 能从任意规范化表达式到达任意其他规范化表达式,保证理论上的全局最优可达。
-- 示例: 模块切片布图
              -- 非规范化(含 HH,无效):
              1 2 H H 3 V   ← 含连续 HH,违反规范化
              -- 规范化(交替操作符,合法):
              1 2 H 3 V 4 H 5 6 V H   ← 每对操作符均不同
规范化条件

若 $f = o_1 o_2 \ldots o_{2n-1}$ 为规范化波兰表达式(n 个模块),则任意相邻操作符 $o_i$ 与 $o_{i+1}$ 不同(即无 HH 或 VV 子串)。

规范化表达式与 n 个模块切片结构之间构成一一映射,解空间大小:$O(n! \cdot 2^{2.6n} / n^{1.5})$。

M2 扰动与规范化保持

M2 操作对一段连续操作符链整体取反(V↔H),结果仍保持规范化。M3(交换相邻模块与操作符)需验证结果是否规范化,否则重试。这三种扰动算子共同保证 SA 可遍历所有规范化表达式(可达性证明见 Handbook Ch9)。

切片树与规范化波兰表达式对应
图:切片树与规范化波兰表达式的对应——后序遍历得后缀表达式;规范化要求相邻操作符交替
切片树 M1/M2/M3 扰动
图:M1(操作数交换)、M2(操作符链取反)、M3(操作符与操作数互换)三种扰动算子对规范化表达式的修改示意

切片树(Slicing Tree)

逆波兰表达式(后缀表示法)描述布图:操作数为模块名,操作符为切割方向(H = 水平切割,V = 垂直切割)。每个子表达式对应一个矩形区域,递归构成完整布图。

-- 逆波兰表达式示例:
E_1 = 1 6 H 2 V 7 5 V H 3 4 H V
E_2 = 1 6 H 7 H 2 4 H 5 3 V H V

三种扰动算子(用于 SA 搜索)

M1:操作数交换

交换相邻两个模块的位置,扰动幅度小。

M2:链取反

将连续操作符序列全部取反(V↔H),局部旋转布图结构。

M3:操作符与操作数交换

交换相邻操作符和操作数,可能引入较大拓扑变化。

切片树性能指标

Packing 复杂度:$O(n)$ | 解空间:$O(n! \cdot 2^{2.6n} / n^{1.5})$

缺点:只能表示 slicing 结构,无法表示所有合法矩形版图拓扑。

三种扰动算子:表达式 与 对应版图同步变化(H=上下,V=左右) M1 操作数交换 1 2 V 3 H → 1 3 V 2 H 312 213 交换相邻模块 → 版图中两块互换位置,扰动小 M2 链取反 1 2 V 3 V → 1 2 H 3 H 123 123 操作符链 V→H 整体取反 → 版图由"并排"翻转为"叠放" M3 操作符⇄操作数 1 2 V 3 H → 1 2 3 V H 312 123 算子与模块互换 → 版图拓扑发生较大改变 切割语义: V 左右并排 H 上下叠放
图:三种扰动算子在表达式上的变化与对应版图(floorplan)的同步变化——SA 由此生成邻域解

B*树 Packing 规则详解

左子节点(右侧相邻)

左子节点 j 紧贴父节点 i 的右侧:
$x_j = x_i + w_i$;$y_j$ 由轮廓线(Contour)确定,取 $x_j$ 处当前最高点。

右子节点(上方同 x)

右子节点 j 与父节点 i 的 x 坐标相同,放在其正上方:
$x_j = x_i$;$y_j$ 由轮廓线确定。

B*树性能指标

Packing 复杂度:$O(n)$(轮廓线扫描)

解空间大小:$O(n! \cdot 2^{2n} / n^{1.5})$——比序列对小,比切片树略大

优点:简单易实现,packing 快,解空间折中,可表示 non-slicing 压缩版图。

缺点:只能表示紧凑(compacted)结构,含白空间的版图需额外处理。

自测

  1. B*树中模块 P 是模块 Q 的左子节点,说明什么几何关系?右子节点呢?
  2. 为什么序列对的解空间 $(n!)^2$ 比 B*树大得多?
B*树版图与树结构对应关系
图:B*树版图与树结构对应关系——左子放右侧(同 y 轮廓线)、右子放正上方(同 x 坐标)

序列对(Sequence Pair)

两个模块序列(S+,S−)完整编码任意非切片版图的拓扑关系,克服切片树只能表示 slicing 结构的限制。

S+ 中顺序S− 中顺序位置关系
i 在 j 前i 在 j 前i 在 j 左侧
i 在 j 前i 在 j 后i 在 j 下方
i 在 j 后i 在 j 前i 在 j 上方
i 在 j 后i 在 j 后i 在 j 右侧
序列对性能指标

Packing 算法:基于最长公共子序列(LCS),复杂度 $O(n \log n)$

解空间大小:$(n!)^2$(远大于切片树,但能表示所有合法版图)

优点:可表示任意版图(包括非切片结构),表达能力完整。

SP(e, c, a, d, f, b ; f, c, b, e, a, d)
-- S+=(e,c,a,d,f,b)  S−=(f,c,b,e,a,d)
-- e vs c: S+:e前  S−:e后 → e 在 c 左侧
-- f vs c: S+:f后  S−:f前 → f 在 c 下方
序列对版图示例
图:序列对对应版图——非切片结构版图中各宏单元相对位置由 S+ 和 S− 共同编码
序列对解码规则
图:序列对位置关系解码规则

非切片结构与扩展表示法

切片结构的局限

切片结构只允许递归二切(水平/垂直),约 20% 的合法矩形版图拓扑无法被切片树表示(如 Wheel 结构)。为此,研究者相继提出了针对非切片和马赛克结构的表示法。

Corner Block List(CBL)

Hong et al.,ICCAD 2000。版图中每个模块恰好有一个"角模块"属性(SE/SW/NE/NW),CBL = (S, L, T) 三元组:S 为模块序列、L 为角类型位串、T 为 T-junction 信息。

  • $O(n)$ packing,表示能力:马赛克(Mosaic)结构
  • 存储空间:$n\cdot(3 + \lceil \lg n \rceil)$ 比特,极其紧凑

传递闭包图(TCG)

Lin & Chang,IEEE TCAD 2004。将版图中所有模块对的水平/垂直偏序关系用有向约束图表示(H-graph + V-graph),通过传递闭包求解坐标。

  • 可表示任意通用结构(含白空间),表达能力最强
  • TCG-S(Sequence-based TCG):将约束图编码为序列便于 SA 扰动
  • 天然支持预置模块(pre-placed blocks)和对齐约束
据 Handbook Ch10(Packing 表示法):CBL 可在 $O(n)$ 时间完成 packing,且有充分条件判断任意 CBL 三元组是否对应合法马赛克版图。TCG 则将几何关系转为图论问题,搜索时只需修改图的边集。
表示法年份可表示结构Packing 复杂度特点
切片树1986Slicing$O(n)$最简单;不完整
O-tree1999无白空间非切片$O(n)$减少冗余解
B*树2000压缩非切片$O(n)$工程常用
序列对1995任意版图$O(n \log n)$解空间最大 $(n!)^2$
CBL2000马赛克$O(n)$极紧凑编码
TCG/TCG-S2004通用(含白空间)$O(n)$最强表达;支持预置
~20%无法被切片树表示的合法版图拓扑比例
$O(n)$CBL / TCG-S packing 复杂度

固定边界布图规划(Fixed-Outline Floorplanning)

为什么需要固定边界?

经典布图规划以面积最小化为目标,芯片边界是输出;但工业设计中,Die 尺寸在布图之前就已确定(封装与 IO 数量共同约束),布图规划变为决策问题:如何把所有模块填入给定矩形内。

与无边界布图的区别

无边界版:优化问题,最小化面积。Fixed-Outline 版:决策问题,同时满足宽度和高度约束。若结果为 $15\times6$ 而边界为 $10\times10$,则失败(面积满足但形状不符)。

Fixed-Outline 的挑战

宽/高双约束耦合。当可用面积仅略大于模块总面积(tight outline)时,求解极难;当 outline 宽松时,退化为经典问题。

主流解法

方法代表工作核心思路
SA + 序列对Adya & Markov(Parquet)代价函数中增加 FO 违反惩罚项;自适应调权
SA + B*树Lin et al.(TCAD 2023 PeF)B*树 packing 更快,100+ 模块时优于序列对
进化搜索Lin et al.(ICCD)多种群并行搜索,自动满足固定边界
据 Handbook Ch12(Recent Advances):工业布图规划几乎全部使用固定边界模型——Die 尺寸在布图开始前已由封装和 IO 锁定,学术界无边界模型与工业实践存在显著 Gap。

Fixed-Outline 代价函数

Parquet 代价函数(SA + 序列对)

$\text{Cost} = \alpha \cdot \text{Area} + \beta \cdot \text{HPWL} + \gamma \cdot \text{FO\_penalty}$

$\text{FO\_penalty} = \max(0, W_{\text{actual}} - W_{\text{limit}})^2 + \max(0, H_{\text{actual}} - H_{\text{limit}})^2$

随 SA 温度降低,$\gamma$ 动态增大,使布图逐渐收缩到固定边界内。

白空间(Whitespace)策略

Fixed-Outline 中模块总面积 < 边界面积,存在白空间。白空间分配影响:

  • 布线缓冲区——分散到拥塞区域可改善可布线性
  • 时序缓冲——靠近关键路径留白供 buffer 插入
  • 热管理——高功耗模块周围留白改善散热

自测

  1. Fixed-Outline 问题为什么比无边界问题更难(当边界很紧时)?
  2. 若代价函数中没有 FO_penalty 项,SA 会产生什么结果?

启发式方法——模拟退火(SA)求宏单元布局

在布图表示法(切片树 / B*树)上迭代搜索,面积+线长多目标下找高质量解;高温接受劣解以跳出局部最优。

Step 1:初始解产生初始版图,表达成树形结构(切片树 / B*树)。
Step 2:扰动施加扰动算子(M1/M2/M3)产生邻域解。
Step 3:评估对扰动解 packing,计算目标 = 面积 + λ ⋅ 线长。
Step 4:接受判断改善则接受;否则以概率 exp(−ΔE/T) 接受(T=当前温度)。
Step 5:降温循环按 α ≈ 0.95$ 逐步降温,直到收敛 / 终止。
为什么接受较差解?避免陷入局部最优——去掉则退化为贪心爬山(Hill Climbing)。

交互:随退火迭代,宏单元被更合理摆放、互不重叠,右侧代价曲线逐步下降。

AI 方法——强化学习 + 图神经网络

参考文献:Mirhoseini, A. et al. "A graph placement methodology for fast chip design." Nature 594, 207–212 (2021). EDA 领域 AI 应用的里程碑工作。

问题建模

网表和宏单元表达成图(Graph):节点为宏单元,边为线网连接。每次布局一个宏单元为一个动作(Action),形成序贯决策过程。

训练过程

在大量历史设计上离线训练,GNN 学习网表特征,RL 智能体(A3C 策略网络)学习布局策略,以线长和拥塞为奖励信号。

推断部署

模型对新设计快速推断宏单元布局方案,数小时内得到高质量结果,传统方法可能需要数周人工迭代。

自测

  1. RL+GNN 方法中,"动作"(Action)和"奖励"(Reward)分别是什么?
  2. 与 SA 相比,RL+GNN 方法的优势和局限各是什么?
宏单元布局求解方法全景
图:宏单元布局求解方法全景——从整数规划(精确小规模)到 RL+GNN(超大规模)的方法谱系

示意动图:GNN 编码网表图后,RL 策略网络逐步决策每个宏单元的放置坐标(Action),以 HPWL 改善为奖励信号。

解析法宏单元布局(Analytical Macro Placement)

解析法将布图规划建模为连续优化问题,使用数学优化方法求解模块坐标,与合法化步骤结合处理不重叠约束。

方法年份核心贡献
Analytical2006 ASP-DAC固定芯片轮廓解析法布图规划奠基
UFO2011 IEEE TCAD统一凸优化,支持预置模块
PeF2023 IEEE TCAD泊松方程法,大规模固定边界布图
旋转感知ICCAD 2023静电法 + 旋转/长宽比约束
PeF 核心思想:将宏单元密度类比为电荷密度,利用泊松方程 $\nabla^2\varphi = -\rho$ 求解电势场 $\varphi$,再沿电势梯度移动宏单元,使其均匀分散并满足固定边界约束。
解析布局模型(连续优化)

$\min_{x,y}\ W(x,y) + \lambda\cdot D(x,y)$

W = 线长目标(HPWL 的光滑可微近似,如 log-sum-exp / WA);D = 密度惩罚(电势场能量 $\sum \varphi\cdot\rho$);$\lambda$ 随迭代增大,从松弛解过渡到合法(无重叠)解。

① 初始化所有宏单元置于中心附近,λ=0。
② 求梯度 ∇W 由线长引力给出,∇D 解泊松方程得电势梯度。
③ 更新坐标Nesterov 动量加速。
④ 增大 λ、迭代逐步加大密度权重直至重叠消除、收敛。
解析法:静电场类比扩散过程 考虑旋转的宏单元布局:旋转感知静电法动态过程
图:解析法——宏单元密度建模为电荷分布,通过泊松方程计算排斥力场,驱动宏单元均匀扩散直至收敛

交互:线长引力先聚拢宏单元,密度权重 $\lambda$ 渐增再把它们推开去重叠(解析法迭代)。

多级框架贪心方法 & iEDA iMP

多级框架(Multi-Level Framework)

为应对大规模宏单元(n 很大时 SA 收敛慢),多级框架将问题分层处理:

粗化(Coarsen)将相邻模块合并为超节点,降低问题规模。
初始布图在粗化后的较小问题上快速求解初始布图。
展开(Uncoarsen)逐级还原超节点,每级贪心优化精细化。

代表工作:MB*树(DAC 2003)、Capo(ICCAD 2004)、IMF(IEEE TCAD 2008)、Defer(IEEE TCAD 2010)、Qinfer(2021)

混合尺寸布局
图:大型宏单元与标准单元共存于 Core 区域的混合尺寸布局

iEDA iMP——融合策略

模拟退火(SA)

基于 B*树,M1/M2/M3 扰动,在离散解空间中广泛探索。

解析法精细化

SA 找到优质离散解后,通过连续优化进一步精细化坐标,改善面积和线长。

智能参数优化

自动调整 SA 温度参数、目标权重等超参数,减少人工经验依赖。

iEDA iMP 宏单元布局结果版图
图:iEDA iMP 实际布局结果版图(IO 环 + 宏单元/标准单元混合布局,源自 iMP 工具)
iEDA 流片芯片实物
图:iEDA 流片芯片实物

混合尺寸布局与层次化设计

混合尺寸布局(Mixed-Size Placement)

先放宏单元再布局标准单元

Floorplan 阶段先确定宏单元位置(FIXED),再在剩余 Core 区域进行标准单元布局。简单但可能不是全局最优。

划分法(Partitioning)

将宏单元视为超大标准单元,与标准单元一起参与全局布局优化,然后对宏单元合法化到固定位置。

混合尺寸布局
图:大型宏单元与标准单元共存于 Core 区域的混合尺寸布局

层次化设计(Hierarchical Design)

层次包含内容物理设计任务
芯片(Chip)P/G Pads、信号 Pad顶层 Floorplan:各 Block 位置、IO Pad 分布、顶层 PDN
模块(Block)Pins、内部标准单元和宏单元各 Block 独立 P&R,完成内部布局和布线
集成所有 Block 完成后回集成到顶层Block 间连接布线(Top-level Routing)
层次化设计大幅降低了单次优化的规模,但引入了 Block 接口约束(引脚位置),需要顶层和底层设计协同迭代。

工业布图规划实践(Industrial Floorplanning)

学术 vs 工业的 Gap

学术布图规划以面积/线长最小化为主,使用纯自动算法;工业布图规划以时序收敛和可布线性为首要目标,允许甚至鼓励人工干预。

维度学术研究工业实践
主要目标最小化面积 & HPWL时序收敛、可布线性、PDN 完整性
芯片边界无边界(自由最优化)固定边界(Die 尺寸预先确定)
人工介入全自动人机协同(手动约束 + 自动优化)
层次结构扁平为主层次化(Block 分区,各 Block 独立 P&R)
附加任务一般不考虑PDN 综合、引脚分配、时序预算、buffer 规划
据 Handbook Ch13(Industrial Floorplanning):工业布图规划中,设计师通过全局布局的彩色热图(按模块着色)来判断分区方案——相同颜色的单元"聚集"区域即为潜在的物理 Block 边界。

层次划分工作流

① 全局扁平布局(参考用)对整个设计做快速扁平布局,观察各模块自然聚集的区域,为层次划分提供依据。
② 层次划分决策设计师结合功能模块归属、信号接口、团队分工,确定 Block 边界;工具提供彩色聚集图辅助决策。
③ 引脚分配(Pin Assignment)为每个 Block 的引脚分配位置和金属层,与相邻 Block 的布线通道匹配。
④ 时序预算(Timing Budget)将全局时序约束分配到各 Block,确保分层后各 Block 独立收敛时全局时序仍满足。
⑤ 虚拟硅原型(Virtual Silicon Prototype)在详细实现前,通过快速 P&R + 近似 RC 提取 + 时序分析验证 Floorplan 可行性,避免后期大返工。

AI 辅助:AlphaChip / RL 方法

Google AlphaChip(原 Nature 2021 ChipNet)将 RL+GNN 用于 Google TPU 的宏单元布局,实现了从数周人工迭代到数小时自动求解的跨越。中文教材指出:结合深度 k 均值聚类将高功率模块与低功率模块分组,GCN 编码网表特征,RL 策略网络决策布局顺序。

宏单元布局算法——方法选择速查

场景推荐方法代表工作优势局限
小规模精确求解(n < 50)整数规划(MILP)保证全局最优计算量随 n 指数增长
中等规模工程首选SA + B*树DAC 2000搜索质量好,实现成熟大规模收敛慢
大规模快速求解多级框架 + 解析法(PeF)DAC 2003, TCAD 2023可扩展到数千宏单元实现复杂
数据驱动 / 超大规模RL + GNNNature 2021训练后推断快训练成本高,泛化有限
工程全流程iEDA iMP(SA→解析法→智能参数)开源 iEDA兼顾质量与自动化依赖工艺适配
O(n)B*树 packing 复杂度
60–75%推荐 Core 利用率范围
Nature 2021RL+GNN 里程碑论文
iEDA融合策略开源平台

本讲知识图谱回顾

核心问题必须掌握的关键词
1 概述Floorplan 做什么、为什么重要6 大任务、3 个目标、扁平 vs 分层
2 输入输出Floorplan 的信息边界必需输入(网表/面积/功耗/SDC)、6 类输出
3 尺寸·利用率·长宽比如何量化 Floorplan 参数Core/IO 区、Row/Site、Core Utilization 公式、AR 调优规则
4 TapCell & Latch-upCMOS 闩锁失效机理与防护寄生 PNP/NPN BJT、Guard Ring、TapCell 功能
5 宏单元约束与障碍如何控制宏单元和布线的空间分配Soft Guide/Guide/Region/Fence、Hard/Soft/Partial Blockage、Halo
6 PDN如何保证全芯片供电可靠性层次化网格、IR Drop 计算、EM 三种失效、电源线宽权衡
7 布图表示法如何把几何关系编码为可搜索结构切片树(逆波兰/M1M2M3)、序列对(S+/S−/LCS)、B*树(左右子规则)
8 优化算法如何在解空间中高效搜索SA 五步流程、RL+GNN(Nature 2021)、解析法/PeF、iMP 融合策略
工程箴言:① Floorplan 好,后面都好。② 利用率要留余量(60–75%),过高必然拥塞。③ 宏单元推边沿、标记 FIXED。④ PDN 要在 Floorplan 时就验证 IR Drop,晚了代价极大。

综合自测题

自测一:利用率与 IR Drop 计算

  1. 某芯片:Die 面积 $4\ \text{mm}^2$,IO 环面积 $0.6\ \text{mm}^2$,宏单元总面积 $0.8\ \text{mm}^2$,标准单元总面积 $1.2\ \text{mm}^2$,Core 面积 $3.1\ \text{mm}^2$。计算 Die Utilization 和 Core Utilization。Core 利用率是否处于推荐范围?
  2. M3 层电源轨:长 2 mm,线宽 400 nm,方块电阻 $R_{\text{sheet}} = 0.05\ \Omega/\text{sq}$,$J = 0.5\ \text{mA}/\mu m$。计算总电阻 R、总电流 I 和端到端 IR Drop。若 VDD = 0.9V,IR Drop 是否超过 5% 预算?

自测二:表示法与算法

  1. 给定序列对 S+ = (A, C, B, E, D);S− = (C, A, E, B, D),判断:A 和 C 的相对位置?B 和 E 的相对位置?
  2. 给定逆波兰表达式 A B V C H D E V H,描述对应版图拓扑,并对最长操作符链施加 M2 扰动,写出新表达式。
  3. 模拟退火中,$T_0 = 1000$,$\alpha = 0.95$,$\Delta E = 50$,第 10 轮迭代时接受较差解的概率是多少?($T_{10} \approx 598.7$)
提示——利用率公式:$\text{Die Util} = (\text{SC} + \text{MC} + \text{IO}) / \text{Die}$;$\text{Core Util} = \text{SC} / \text{Core}$。SA 接受概率:$P = \exp(-\Delta E/T)$。

综合自测题——参考答案

自测一·1 利用率

$\text{Die Util} = (\text{SC}+\text{MC}+\text{IO})/\text{Die} = 2.6/4 = \boxed{65\%}$

$\text{Core Util} = \text{SC}/\text{Core} = 1.2/3.1 \approx \boxed{38.7\%}$

结论:Core 利用率 38.7% < 50%,低于推荐区间(60–80%),偏保守、面积有浪费。

自测一·2 IR Drop

方块数 $= 2\,\text{mm}/400\,\text{nm} = \boxed{5000}$;$R = 0.05 \times 5000 = \boxed{250\ \Omega}$

$I = J \times w = 0.5\,\text{mA}/\mu\text{m} \times 0.4\,\mu\text{m} = \boxed{0.2\ \text{mA}}$

$\text{IR Drop} = 0.2\,\text{mA} \times 250\,\Omega = \boxed{50\ \text{mV}}$

5% 预算 $= 0.9V \times 5\% = 45$ mV;$50\ \text{mV} > 45\ \text{mV}$ → 略超预算,需加宽/并联电源线。

自测二·1 序列对位置关系

S+ =(A,C,B,E,D),S− =(C,A,E,B,D)

A、C:S+ 中 A 在前、S− 中 A 在后 → A 在 C 下方(C 在上)。

B、E:S+ 中 B 在前、S− 中 B 在后 → B 在 E 下方(E 在上)。

自测二·2 逆波兰版图 + M2

A B V C H D E V H:A|B(左右)→ 与 C 上下叠(H)→ 再与 D|E 上下叠。

末端连续算子链 V H(来自 D E V H)取反 → H V

新表达式:A B V C H D E H V

自测二·3 SA 接受概率

$P = \exp(-\Delta E/T_{10}) = \exp(-50/598.7) \approx \boxed{0.92}$(约 92%)

数字芯片物理设计自动化

第 2 讲 :布局

李兴权

东南大学 集成电路学院

E-mail: x.li@seu.edu.cn

v4.0

本讲路线图——布局(Placement)

把综合后的数百万标准单元在 Core 区合法摆放,平衡线长、时序、拥塞与功耗。

1 · 布局概述

前置条件、三大目标、三步骤(全局→合法化→详细)

2 · 线长模型

HPWL、团/星/斯坦纳、P2WWL、LSE/WA 光滑化

3 · 解析布局

二次线长、力导向、Laplacian、GORDIAN→FastPlace

4 · 现代全局布局

密度约束、电场法、CG / Nesterov 梯度求解

5 · 划分/多级布局

最小割递归二分、多级布局

6 · 合法化

Tetris / Abacus、带障碍与固定区域

7 · 详细布局

行内优化、最优区域、单元翻转

8 · 驱动式布局

时序驱动、拥塞驱动、Benchmark 评测

布局承上启下:上接布图规划(宏单元/PDN 已定),下接 CTS 与布线;布局质量直接决定时序与可布线性。

布局概述(Placement Overview)

布局为每个标准单元在核心区内找到"合法"的位置——不重叠、对齐行/格点,并优化线长、时序与可布线性。

前置条件

核心区已定义

Core Area 由布图规划确定,标准单元只能在核心区内放置。

宏单元已固定

IP 宏(Memory、Analog 等)已 FIXED,布局不移动它们。

放置障碍已定义

Placement Blockage 标记完毕,单元不得进入。

电源网格已预布线

VDD/VSS 已布线,单元需对齐到正确行。

三大优化目标

线长(WL)最小化总估算布线长度,影响面积、功耗、延迟。
时序(Timing)满足 Setup/Hold 约束,减少 TNS/WNS。
可布线性(Routability)避免局部布线资源过度拥挤。
布局任务示意动画 布局任务示意
图:布局任务——输入网表与约束,输出每个单元的合法坐标

布局三步骤

① 全局布局(Global Placement)

将所有标准单元散布(Spread Out)到核心区,允许单元重叠。快速找到全局最优大方向,兼顾线长、时序、拥塞,但不要求满足合法约束。

② 合法化(Legalization)

以全局布局结果为起点,消除所有单元重叠,将每个单元对齐到合法行(Row)与格点(Site),同时最小化单元移动量。

③ 详细布局(Detailed Placement)

在合法化结果上,通过行内移动、跨行交换、单元翻转等局部微调进一步优化线长、时序、可布线性和功耗,同时保持合法性。

主要约束:核心区边界 · 单元密度 · 引脚密度 · 围栏区域(Fence) · 行/格点对齐 · 无重叠
① 初始散布(重叠) 随机位置、大量重叠 ② 全局布局 按连接聚集、线长最小(仍可重叠) ③ 合法化 落行/对齐格点、消除重叠 ④ 详细布局 行内微调/交换/翻转(金色)优化线长时序
图:布局三步骤的版图渐进——① 初始散布(重叠)→ ② 全局布局(按连接聚集)→ ③ 合法化(落行无重叠)→ ④ 详细布局(行内微调优化)

布局方法分类(Placement Methods)

三大类核心思想,现代 EDA 工具通常组合使用。

基于划分(Partition-based)

递归地将芯片区域和网表进行二分(Binary)或四分(Quadrisection),每次划分后对子区域分别布局。

代表:Min-cut 二分 + QP 布局

特点:层次化、可并行;但切割误差随深度累积。

迭代改进(Iterative)

从初始布局出发,通过随机或启发式操作(交换、移动)不断改进目标值。

代表:模拟退火(SA)、力导向法、解析法

特点:可避免局部极值;SA 质量好但慢;解析法快但需光滑化。

构造法(Constructive)

从芯片中心放置少量核心单元,将高度连接的相邻模块逐步放置在周围,向外扩展。

特点:速度快,适合粗粒度初始布局;局部最优质量有限。

方法核心思想速度质量典型工具
划分法递归二分+Min-Cut一般早期工业 EDA
模拟退火概率接受劣解TimberWolf
解析布局连续优化+梯度下降极快RePlAce, DREAMPlace
现代主流:解析布局(Analytical Placement)——将布局问题转化为连续优化,梯度下降求解。Innovus、Fusion Compiler、RePlAce、DREAMPlace 均采用此框架。

线长评估:HPWL(半周长线长)

Half-Perimeter Wirelength(HPWL)是最常用的线长估算指标。对线网所有引脚找最小边界矩形框,HPWL = 该框的半周长。

HPWL 公式

$$\text{HPWL} = \Delta X + \Delta Y$$

$\Delta X = x_{\max} - x_{\min}$,$\Delta Y = y_{\max} - y_{\min}$

总线长 $=\sum \text{HPWL}(\text{Net}_i)$,对所有线网求和。

易于计算

仅需 max/min 操作,O(k),k 为引脚数。

真实线长下界

Manhattan 布线,实际线长 $\ge \text{HPWL}$,HPWL 是精确下界。

可微分近似

通过 LSE/WA 光滑化后可作为梯度优化目标函数。

HPWL 始终低估真实线长(下界估计器)。4 引脚线网典型例:HPWL=7,实际布线长度=9。
HPWL 示例一
HPWL 边界框示例(一)

线长评估:P2WWL(引脚到重心线长)

P2WWL(引脚到重心线长)

P2WWL 定义

线网重心:$\bar{x}=\tfrac{1}{k}\sum_i x_i,\ \ \bar{y}=\tfrac{1}{k}\sum_i y_i$

$$\text{P2WWL}=\min\!\Big(\textstyle\sum_i|x_i-\bar{x}|+(\max_i y_i-\min_i y_i),\ \ \sum_i|y_i-\bar{y}|+(\max_i x_i-\min_i x_i)\Big)$$

一维取"到重心偏差和"、另一维取"包围盒跨度",两组合取较小者。

P2WWL 与星型 Star$\big(\sum_i(|x_i-\bar{x}|+|y_i-\bar{y}|)\big)$ 是不同模型,线长一般不相等;P2WWL 含 max/min 与绝对值,不可微。
P2WWL 示例
P2WWL:各引脚到线网重心的曼哈顿距离之和

其他线长评估模型(多引脚线网)

HPWL 边界框 团 Clique(完全图) 星型 Star(中心点) 直角斯坦纳树 同一线网的四种建模:精度 HPWL < 团/星 ≲ 斯坦纳树(最接近真实布线) 团/星型把多引脚超边转成"两引脚边",以便构造二次型 ½xᵀQx 绿点=星型/斯坦纳引入的额外中心点 / 斯坦纳点
图:多引脚线网的四种线长模型——HPWL、团(Clique)、星型(Star)、直角斯坦纳树(RSMT)

线长模型计算案例(各模型 vs 真实布线)

以一个 5 引脚线网为例(坐标单位:格),逐一计算各线长模型估计值并与真实直角布线对比(已核算)。

线网引脚坐标(k=5)

A(0,0)、B(4,0)、C(4,3)、D(2,5)、E(0,3)

逐模型计算

HPWL $= \Delta X+\Delta Y = (4-0)+(5-0) = 4+5 = \boxed{9}$

团 Clique $=$ $\sum$两两曼哈顿 $\div (k-1)$;$\sum=4+7+7+3+3+7+7+4+4+4=50 \to 50/4 = \boxed{12.5}$

星型 Star(重心 $(2,2.2)$)$=\sum_i(|x_i-2|+|y_i-2.2|)= 4.2+4.2+2.8+2.8+2.8 = \boxed{16.8}$

P2WWL$=\min(\underbrace{8}_{\sum|x_i-\bar x|}+\underbrace{5}_{y\text{跨}},\ \underbrace{8.8}_{\sum|y_i-\bar y|}+\underbrace{4}_{x\text{跨}})=\min(13,\,12.8)= \boxed{12.8}$

RSMT 斯坦纳 = A‑E(3) + E‑C 横(4) + C‑B(3) + D 自(2,3)上(2) = 12

模型估计值相对真实(=12)说明
HPWL9−25%(低估)下界,计算最快
团 Clique12.5+4%二次型代理,规模 $O(k^2)$
星型 Star16.8+40%(高估)到重心曼哈顿距离之和
P2WWL12.8+7%min(一维偏差和 + 另一维跨度)
RSMT 斯坦纳120%(最接近)最贴近真实,NP-hard
真实直角布线12基准无拥塞时 = RSMT;拥塞/绕障时略增
关系:$\text{HPWL} \le \text{RSMT} =$ 真实线长(无拥塞);HPWL 系统性低估、RSMT 最准;团/星型用于把超边转二次型以便解析求解。
A B C D E 绿=斯坦纳树(12),蓝虚框=HPWL(9)

线长模型与光滑化函数对比(HPWL / 二次 / LSE / $L_p$ / CHKS / WA)

HPWL 含 max/min 不可微,解析布局用各种光滑可微函数逼近它,再交给梯度优化器。(参考《placement》线长模型)

HPWL(目标) $$W = \sum_{\text{net } e}\big(\max|x_i-x_j| + \max|y_i-y_j|\big)$$

二次 Quadratic $$\tfrac{1}{2}\sum\sum \gamma_{ij}\big[(x_i-x_j)^2+(y_i-y_j)^2\big]$$

Log‑Sum‑Exp $$\gamma\cdot\sum_e\Big(\ln\sum e^{x_k/\gamma} + \ln\sum e^{-x_k/\gamma} + y\text{ 项}\Big)$$

$L_p$‑范数 $$\sum\Big(\big(\textstyle\sum x_i^{p}\big)^{1/p} - \big(\textstyle\sum x_i^{-p}\big)^{-1/p} + y\text{ 项}\Big)$$

CHKS $$\max(x_1,x_2) \approx \tfrac{\sqrt{(x_1-x_2)^2+t^2} + x_1 + x_2}{2}$$

Weighted‑Average $$\sum\Big(\frac{\sum x_i e^{x_i/\gamma}}{\sum e^{x_i/\gamma}} - \frac{\sum x_i e^{-x_i/\gamma}}{\sum e^{-x_i/\gamma}}\Big)$$

二次型 overshoot 最大;LSE/CHKS 在拐点处平滑抬高;WA 最贴近真实 HPWL 且数值稳定,是 ePlace/RePlAce/DREAMPlace 的首选。
光滑函数逼近 |xᵢ−xⱼ|(xⱼ=3, γ=1) 3210 036xᵢ HPWL(目标) Quadratic LSE CHKS WA
图:各模型逼近 |xᵢ−xⱼ| 的对比——二次型在两端 overshoot,LSE/CHKS 拐点抬高,WA 最贴近 HPWL 目标(参考《placement》)

P2WWL 线长模型的光滑化(LSE / WA + $L_p$)

P2WWL 的两项分解与光滑化策略

$$\text{P2WWL}=\min\!\Big(\underbrace{\textstyle\sum_i|x_i-\bar{x}|}_{\text{① 引脚→重心}}+\underbrace{(\max_i y_i-\min_i y_i)}_{\text{② 跨度}},\ \underbrace{\textstyle\sum_i|y_i-\bar{y}|}_{\text{①'}}+\underbrace{(\max_i x_i-\min_i x_i)}_{\text{②'}}\Big),\quad \bar{x}=\tfrac{1}{k}\sum_i x_i$$

① 项含 $|·|$ 且 $\bar{x}$ 随引脚坐标变化 → 用 LSE / WA 光滑绝对值;② 项为 max/min 跨度 → 用 $L_p$ 范数(或与 HPWL 相同的 LSE/WA 跨度近似)。

P2WWL 比 HPWL 更贴近多引脚线长,但含 $|·|$、max/min 与 $\min(\cdot,\cdot)$ 均不可微;解析布局需分项光滑后再交给梯度优化器。(参考《placement》p14)

① 引脚→重心项(LSE) $$\widetilde{\text{dev}}_x=\gamma\sum_i\ln\!\big(e^{(x_i-\bar{x})/\gamma}+e^{-(x_i-\bar{x})/\gamma}\big)=2\gamma\sum_i\ln\cosh\!\tfrac{x_i-\bar{x}}{\gamma}$$

① 引脚→重心项(WA) 对 $|x_i-\bar{x}|$ 采用与 HPWL 两引脚项相同的 WA 光滑族($\gamma$ 越小逼近越紧)

② 跨度项($L_p$) $$\widetilde{\text{span}}_y=\Big(\textstyle\sum_i y_i^{\,p}\Big)^{1/p}-\Big(\textstyle\sum_i (-y_i)^{\,p}\Big)^{1/p}$$

组合 $$\widetilde{\text{P2WWL}}=\min\big(\widetilde{\text{dev}}_x+\widetilde{\text{span}}_y,\ \widetilde{\text{dev}}_y+\widetilde{\text{span}}_x\big)$$($\min$ 可用 softmax 再光滑)

① 项 LSE 在拐点略抬高;WA 更贴 $|x_i-\bar{x}|$。② 项 $L_p$($p\!\uparrow$)逼近 max−min,与 HPWL 跨度光滑同族。工业全局布局仍以 HPWL+WA 为主;P2WWL 光滑化适合后 20% 精细线长优化或研究型解析器。
光滑函数逼近 |xᵢ−x̄|(引脚→重心偏差,x̄=3, γ=1) 3210 036xᵢ |xᵢ−x̄|(目标) LSE WA 跨度项 (max y−min y):沿用 HPWL 页的 LSE / L_p / WA 族(见上页)
图:P2WWL ① 项——LSE/ WA 光滑 $|x_i-\bar{x}|$;② 项——$L_p$ 或 LSE/WA 光滑跨度(参考《placement》p14)

迭代布局与模拟退火(Simulated Annealing)

SA 引入"温度"参数 $T$,以 $\exp(-\Delta L/T)$ 的概率接受变差的解,跳出局部最优。

while (!frozen)
    swap two random gates Gᵢ, Gⱼ
    evaluate ΔL

    if (ΔL < 0)
        keep swap                   // 始终接受改善
    else if (random() < exp(−ΔL/T))
        accept swap                 // 概率接受变差解
    else
        undo swap

    if (HPWL still decreasing)
        T = 0.9 * T                 // 降温(冷却)
    else
        frozen = true               // 收敛,停止

高温阶段

接受率高 → 广泛探索解空间,避免局部极小。

低温阶段

接受率低 → 趋于贪心,收敛到当前邻域最优。

SA 局限

速度慢(每步计算 HPWL);结果随机,不确定;现代大规模布局已转向梯度法。

交互:单元由聚集重叠出发,随迭代移动散开、互连飞线收紧,代价(HPWL+重叠)长期下降,终态互不重叠。

布局问题的形式化定义与复杂度 📖 教材拓展

把布局抽象为图上的约束优化问题——这是所有布局算法(划分/解析/迭代)共同的数学起点。

形式化定义

给定网表图 $G=(V,E)$,$|V|=n$ 个可移动单元、$|E|=m$ 个线网,布局区域 $P$(宽 $W$ × 高 $H$),目标函数 $f(V,E)$。

求每个单元的坐标 $(x_i,y_i)$,使得:

① 每个单元完全落在区域 $P$ 内;② 任意两单元 $(v_i,v_j)$ 不重叠;③ $f(V,E)$ 最小(标准单元还需对齐行边界)。

目标函数(加权总线长)

$$f = \sum_{e\in E} w(e)\cdot \text{WL}(e)$$

$\text{WL}(e)$ 可取 HPWL/ MST / 斯坦纳树;$w(e)$ 为时序临界度等权重。

复杂度:布局是 NP-complete 问题。单元数可达数百万至上千万,无法精确求解,因此被分解为三个子问题分别攻克。

子问题分解(Handbook 视角)

全局布局(Global)确定单元的近似分布,最小化线长,允许重叠(结果为非法解)。
合法化(Legalization)把非法解转为合法解(无重叠),最小化对全局布局的扰动。
详细布局(Detailed)局部精细优化,进一步降低目标函数,全程保持合法。
现代为"固定布局区域(Fixed-region)"问题:芯片尺寸已定,空白(whitespace)= 区域面积 − 单元面积为常量,空白管理成为可布线性关键。
① 全局布局(允许重叠) ② 合法化(落行无重叠) ③ 详细布局(行内微调)
图:布局三子问题图例——① 全局布局(重叠、最小化线长)→ ② 合法化(落行、无重叠、最小移动)→ ③ 详细布局(行内交换/翻转微调,金色)

解析布局:二次线长模型与团模型

核心思想:用二次(平方)函数代替含 max/min 的 HPWL,使目标可微、可用线性代数精确求解

① 两引脚线网:二次线长

$W_2(x_i,x_j)=(x_i-x_j)^2$ (x 方向;y 方向同理)

② 多引脚线网 → 团模型 (Clique)

k 引脚网用完全图近似:$\tfrac{k(k-1)}{2}$ 条 2 引脚虚拟边,每条权重 $\tfrac{1}{k-1}$(避免大网过度计权);门视为无尺寸点。

例:4 引脚 → 6 条边、每条权重 1/3。

③ 矩阵方程 $Ax=b$

$W=x^{\top}Ax-2b^{\top}x+\text{const}$,令 $\partial W/\partial x=0$ → $Ax=b$(A 为对称正定稀疏 Laplacian),共轭梯度法(CG)高效求解。

解析法给出连续坐标(可能重叠),随后由力导向 / 密度展开 + 合法化消除重叠。
Core (0,0) (1,.5) (1,1) 1 2 4 1 2
例:2 门点 + 2 焊盘 + 3 线网(权重 1,2,4)
x 方向求解

$Q(x)=4(x_2{-}1)^2+2(x_2{-}x_1)^2+x_1^2$

$\begin{bmatrix}6&-4\\-4&12\end{bmatrix}x=\begin{bmatrix}0\\8\end{bmatrix}$ → $x_1{=}0.571,\ x_2{=}0.857$

y 同理 → $y_1{=}0.286,\ y_2{=}0.429$

解析布局:矩阵构造 Recipe 与求解

矩阵构造方法(Recipe)

连接矩阵 C:权重为 $w$ 的连线 $(i,j)$:$C[i][j]\mathrel{+}=w$,$C[j][i]\mathrel{+}=w$

A 矩阵:$A[i][i] = \sum_j C[i][j]$(对角线=行和);$A[i][j] = -C[i][j]$(非对角线取负)

b 向量:固定引脚 $p$ 在 $x_p$,与变量门 $i$ 连线权重 $w$:$b[i]\mathrel{+}=w\cdot x_p$

求解:$Ax = b$(x 方向),$Ay = b_y$(y 方向);用共轭梯度法(CG)高效迭代

A 是正定对称稀疏矩阵(Laplacian),CG 法可高效求解。解析布局给出单元连续坐标,仍需合法化消除重叠。
5单元例子网表与矩阵
5 单元例子:网表结构与 A 矩阵、b 向量完整构造
5单元求解结果
5 单元例子:Ax=b 求解结果与布局示意

二次布局数学基础:二次型、Hessian 与 Laplacian 📖 教材拓展

把"线长平方和"严格写成矩阵二次型,求极小退化为解一个对称正定稀疏线性方程组。

① 二次目标(可分离)

$$\Phi(x,y) = \sum_{ij} w_{ij}\big[(x_i-x_j)^2 + (y_i-y_j)^2\big]$$

$x$、$y$ 方向相互独立:$\Phi = \Phi(x) + \Phi(y)$,可分别求解。

② 矩阵二次型(x 方向)

$$\Phi(x) = \tfrac{1}{2}\cdot x^{\top}Q_x x + c_x^{\top}x + \text{const}$$

$Q_x$ 为 $n_x\times n_x$ 的 Hessian 矩阵(可移动单元两两连接),对称正定;$c_x$ 编码可移动单元与固定单元的连接。

③ 一阶最优条件 $\nabla\Phi=0$

$$Q_x x + c_x = 0 \;\Rightarrow\; Q_x x = -c_x$$

即课件中 $Ax = b$($A=Q_x$,$b=-c_x$)。

Q 即图 Laplacian:对角元 $Q[i][i]=\sum_j w_{ij}$(行和/度),非对角元 $Q[i][j]=-w_{ij}$。正定性需要存在固定单元(I/O Pad),否则解退化、所有单元塌缩到同一点。

求解器

共轭梯度 CG

迭代法,利用 Q 的稀疏性,每步只做稀疏矩阵-向量乘,适合超大规模。

其他迭代法SYMMLQ、GMRES、BICGSTAB;配合 ILU / 随机游走预条件提升收敛。
直接法

Cholesky 分解(Q=LL'),适合中小规模或重复求解。

物理意义:解 $Qx=-c$ 等价于把"弹簧网络"置于力平衡态——每个单元上所有弹簧合力为零(第 $i$ 行即第 $i$ 个单元的受力方程)。
来源:Handbook…Force-Directed and Other Continuous Placement Methods(式 18.2–18.4);《大规模集成电路设计方法》第7章(二次线长模型)

经典解析布局器发展脉络 📖 教材拓展

从"二次+划分约束"到"二次+扩散力"再到"非线性+密度罚",解析布局的散开机制不断演进。

布局器(年代)核心思想散开 / 去重叠机制贡献 / 局限
GORDIAN(1991)二次规划 + 递归二分用区域中心约束(center-of-gravity)把单元逐层"拉"进子区域,再二分奠定"二次+划分"范式;线性目标变体 GordianL 质量更优但更慢
Kraftwerk力导向(二次近似)在 Qx=−c 上叠加恒定扩散力 f,按密度场迭代推开单元最知名力导向布局器;无需显式划分,全局散开
FastPlace二次 + 固定点 + 单元搬移固定点(伪单元/伪线网)等效常力 + cell shifting 局部均匀化速度快、可扩展;固定点比常力更数值稳定
RQL / mPL / FDP 等多级 + 解析/力导向精炼粗化降规模,细层叠加扩散力 / 密度罚精炼多级框架成为大规模布局标配(见多级布局页)
共同主线:解析法把布局写成数学规划(QP / 非线性),用 CG/Nesterov 等求解;差异在于"如何消除二次解的重叠"——划分约束 vs 恒定力 vs 固定点 vs 密度罚函数。
现代 ePlace / RePlAce 把"扩散力"升级为电场法(泊松方程 + DCT),将密度作为可微罚项与线长一起梯度优化——是本系谱的最新一环。
来源:Handbook…(GORDIAN/Kleinhans 1991;Kraftwerk;FastPlace/固定点 mFAR);《大规模集成电路设计方法》第7章(解析布局器)

基于划分的布局(Partition-based Placement)

递归地将大问题分解为小子问题,每步仅处理一个子区域,计算代价可控。

① 划分(Partition)

对布局区域按垂直/水平切割线一分为二,将门分配到两个子区域,目标:最小化跨切割线线网数(Min-Cut)。

② 分配(Assignment)

对门排序(按坐标、连接关系),平衡地分配到两个半区域,可用 FM 算法(Fiduccia-Mattheyses)高效实现。

③ 包含 QP 子问题 + 伪垫片

对每个子区域独立构造 QP 矩阵。子区域外的门投影到边界,作为伪垫片(Pseudo Pads)传递外部拉力。递归执行直到区域足够小。

局限:层次误差累积,伪垫片投影影响质量,现代工具已转向解析/梯度方法。
划分布局流程
递归二分划分与 QP 子问题结合的流程
伪垫片机制
伪垫片(Pseudo Pad)机制:外部门投影到子区域边界

多级布局技术(Multilevel / Multiscale Placement)

多级方法(Multilevel)通过层次化"粗化 → 求解 → 展开"三步大幅降低运行时,同时保持布局质量,是现代百亿晶体管设计的关键技术(据 Handbook Ch19)。

三步 V-Cycle 流程

① 粗化(Coarsening / Aggregation)

将高度连接的单元聚类为"超单元"(Cluster),逐级合并,问题规模从 N → N/k → … → N_coarsest。聚类策略:基于位置的聚类(邻近 + 强连接优先)、多级 FM 聚类等。

② 粗层求解(Relaxation)

在最粗层(最小问题规模)上运行 QP/SA/解析布局,快速得到全局最优方向。粗层求解给出超单元的位置,作为细层的初始解。

③ 展开 + 细化(Interpolation + Refinement)

将超单元位置插值展开到各成员单元,在每个细层运行局部优化(详细布局/行内移动),逐级恢复到原始粒度。混合尺寸设计中,宏单元在每层提前合法化。

代表工具:mPL6、FastPlace-3.0、APlace;NTUPlace2 混合划分+解析;多级思想也用于详细布局(滑窗 DP)。实验表明多级方法在不降低质量的同时运行时间减少数倍。

W-Cycle / 多次 V

多次粗化-展开循环,质量更优但运行时更长;自适应策略根据收敛情况选择。

混合尺寸支持

宏单元在粗层合法化后固定,细层只布局标准单元,避免最细层出现大量重叠难以合法化的问题。

现代全局布局:目标函数与密度约束

以解析优化为框架,将线长最小化与密度约束结合为无约束优化问题,梯度下降迭代求解。

全局布局目标(带密度约束)

$$\min\; W(x,y) \quad \text{s.t.}\quad D(x,y) \le \rho_t$$

$W$ = 光滑化线长,$D$ = 单元密度,$\rho_t$ = 密度阈值(目标利用率)

罚函数法转无约束:

$$\min\; W(x,y) + \lambda\cdot P(x,y)$$

$P$ 为密度违规惩罚项,$\lambda$ 随迭代递增收紧约束。

约束转无约束三种方法

罚函数法

$\lambda\cdot\sum(\rho_b-\rho_t)^2$,$\lambda$ 逐步增大,简单有效。

拉格朗日乘子法

$L = W + \lambda^{\top}g$,需同时更新 $x$ 和 $\lambda$。

增广拉格朗日法

兼顾收敛速度和数值稳定,RePlAce 的实际选择。

交互:单元由聚集重叠出发,随梯度迭代移动散开、互连飞线收紧,代价(HPWL+密度)长期下降,终态趋于均匀密度且互不重叠。

密度计算:钟形函数与电场法(ePlace)

bin 网格密度与钟形函数(Bell-shape)

将芯片划分为均匀 bin 网格;落入某 bin(含跨界部分)的所有单元面积之和,即该 bin 的单元密度。单元 i 对 bin b 的贡献按距离分三段平滑(钟形):

bin 密度定义:$$D_b=\frac{\sum_i \text{area}(c_i\cap b)}{\text{area}(b)}\quad(\text{bin 内单元总面积} \div \text{bin 面积})$$

① $|\Delta| \le \tfrac{2}{3}\cdot(w_i/2 + w_b/2)$:二次(光滑上升) ② 中间:线性 ③ 超出:0

bin b 单元 计入 b 的面积 A 内部B/C/F跨界 D/E 在其他 bin
多个单元落在 bin 网格内 / 边界上;bin b 密度 = 框内单元(含越界部分,绿)总面积 ÷ bin 面积
密度函数可视化
钟形函数:单元面积分配到 bin 的三段曲线

电场法(ePlace / Electronic Field)

将单元密度类比为电荷分布:高密度区 → 高电位 → 向外电场(排斥力),驱动单元全局散开。

电场能量密度模型(ePlace)

密度能量:$D(x,y) = \tfrac{1}{2}\sum_{v\in V} D_v(x,y) = \tfrac{1}{2}\sum_{v\in V} q_v\cdot\psi_v(x,y)$

泊松方程 + 诺依曼边界 + 零总电荷:

$\nabla\cdot\nabla\psi(x,y) = -\rho(x,y)$; $\hat{n}\cdot\nabla\psi = 0$(边界 $\partial R$)

$\iint_R \rho(x,y) = \iint_R \psi(x,y) = 0$

DCT 频域:$\hat{\varphi}=\hat{\rho}/(k_x^2+k_y^2)$ → 逆变换得 $\varphi$,电场 $E=-\nabla\varphi$ 即密度梯度。

高密度高密度高密度 低密度区 ρ大→φ高 ρ小→φ低 等高线 多个高/低密度区,黑线=电势等高线;电场 E=−∇φ 垂直等高线指向低密度
图:密度(电荷)场——多个高密度热点与低密度区,黑色为电势等高线;E=−∇φ 沿等高线梯度驱动单元散开

现代全局布局模型(Modern Global Placement)

① 带约束的最小线长模型

$$\min_{v}\; \text{WL}(v)\quad\text{s.t.}\quad \rho_b(v) \le \rho_0,\ \forall b\in B$$

$v$ = 单元位置;$\text{WL}$ = 线长;$\rho_b$ = bin $b$ 的面积密度;$\rho_0$ = 密度阈值。

② 线长项 WL(v)

$\text{HPWL} = \sum_{e}(\max|x_i-x_j| + \max|y_i-y_j|)$

光滑化:LSE 或 WA(见前页),使 WL 可微。

③ 密度项 $\rho_b(v)$(电场模型)

$D(x,y)=\tfrac{1}{2}\sum q_v\psi_v$;$\nabla\cdot\nabla\psi=-\rho$,$\hat{n}\cdot\nabla\psi=0$,$\iint\rho=\iint\psi=0$

④ 拉格朗日松弛(无约束化)

$$\min_{v}\; f(v) = \text{WL}(v) + \lambda\cdot\sum_{b\in B} \rho_b(v)$$

$\lambda$ 为密度惩罚权重,随迭代逐步增大:先重线长聚拢,再加大 $\lambda$ 推散去重叠。

求解器:Nesterov 加速梯度法 或 共轭梯度法(CG)。这正是 ePlace / RePlAce / DREAMPlace 的核心框架。
初始布局v₀ 求 ∇f∇WL+λ∇D Nesterov更新 v λ↑ 迭代:密度未达标则增大 λ 继续
图:全局布局优化闭环——梯度 ∇(WL+λD) 经 Nesterov 更新坐标,密度未满足则增大 λ 迭代

解析布局求解器:CG 与 Nesterov(求解过程与对比)

把"线长 + 密度"写成可微目标 $f(x)$,用一阶方法求极小;病态曲面下动量法显著加速。

共轭梯度 CG(Polak–Ribière)

$d_{k+1}=-g_{k+1}+\beta_k d_k,\quad \beta_k=\max\!\big(0,\tfrac{g_{k+1}^{\top}(g_{k+1}-g_k)}{\lVert g_k\rVert^2}\big)$

沿共轭方向 + 线搜索步长;对二次型收敛快。

Nesterov 加速(前瞻动量)

$u_{k+1}=v_k-\alpha\nabla f(v_k),\quad a_{k+1}=\tfrac{1+\sqrt{1+4a_k^2}}{2}$

$v_{k+1}=u_{k+1}+\tfrac{a_k-1}{a_{k+1}}(u_{k+1}-u_k)$(动量项)

仅需一阶梯度;收敛 $O(1/k^2)$;ePlace / RePlAce 默认求解器。

对比:CG 适合局部二次;Nesterov 在病态曲面下振荡更小、更快。右图可切换并对比两者迭代轨迹

合法化(Legalization)

将全局布局的"近似坐标"转化为满足所有物理约束的合法位置:无重叠、在芯片区域内、对齐行/格点、VDD/VSS 极性正确。

合法化问题定义

给定:全局布局后单元坐标 $\{(x_i, y_i)\}$

求:合法坐标 $\{(\hat{x}_i, \hat{y}_i)\}$ 满足:

① 所有单元在核心区内
② 单元间无重叠
③ 每个单元对齐到合法行/格点
④ VDD/VSS 行极性满足

最小化:$\sum_i \big[(x_i-\hat{x}_i)^2 + (y_i-\hat{y}_i)^2\big]$(总移动量)

算法策略复杂度质量
Tetris贪心O(n log n)一般
Abacus动态规划O(n log n) 摊销
最小费用流网络流多项式较高
QP 二次规划凸优化依求解器

交互:全局布局单元按 x 排序后逐个落到最近合法行/格点,消除重叠、最小化移动量。

合法化算法:Tetris(贪心)vs Abacus(DP)——移动轨迹与移动量

Tetris(贪心)

按 x 排序,逐个落到最近合法行/Site,放下后不再移动——快,但对原位扰动较大。

金线=移动轨迹,读数=总移动量 $\sum|\Delta|$

Abacus(动态规划)

放入最优行后对整行重排(允许挤动已放单元),最小化总移动量——质量更优、代价略高。

单元更贴近原位 $x$,$\sum|\Delta|$ 通常小于 Tetris

合法化进阶:带障碍与固定区域

带障碍合法化(Legalization with Obstacles)

SoC 设计中包含预先固定的 IP 宏(Memory、Analog 等),标准单元不能与宏重叠。

  • 约束:单元与所有 Fixed Block 之间无重叠。
  • 挑战:宏使放置区域变为非矩形,部分行被遮挡。
  • 策略:预处理每行的可用格点段(剔除宏占用段),Tetris/Abacus 只在可用段内选位置。
Fixed 宏 绿=可用格点段(剔除宏占用段后) 挑战:宏遮挡部分行 → 布局区变非矩形,仅能在可用段放置
图:带障碍合法化——预处理每行可用段(剔除宏占用),Tetris/Abacus 仅在可用段选位

固定区域合法化(Fixed-Region Legalization)

先进工艺(FinFET、GAA)设计规则使布局区域可能变成多连通图(非矩形、带孔)。

  • 布局区域 = 多段可用矩形区域的并集。
  • 单元需在行的合法段内重新排列,不得跨越不可用段。
  • 算法需考虑行内分段约束,显著增加问题复杂度。
不可用区(缺口) 挑战:区域多连通(非矩形/带孔) → 行被切成多段,单元不得跨越不可用段
图:固定区域合法化——布局区为多段可用矩形的并集,行内需按分段约束重排

详细布局(Detailed Placement)

在合法化结果上进行局部精细优化,保持合法性的同时改善线长、时序、拥塞和功耗。

行内/跨行操作

行内移动(Intra-row Move)在同一行内左/右移动到更优位置,不影响其他单元行。
行内交换(Intra-row Swap)交换同行两个单元位置,保持合法,评估线长/时序变化后决定是否接受。
跨行交换(Inter-row Swap)交换不同行中两个单元(需宽度相同),改善垂直方向线长。

单元翻转(Cell Flipping)

对单元做水平镜像(Horizontal Mirror),引脚相对位置改变,影响连接线网长度。

对有左侧引脚但主要连接在右侧的单元,翻转后线网缩短。详细布局工具枚举每个单元的翻转状态,选使 HPWL 更优的方向。翻转不影响行/格点对齐(合法性保持)。
A
① 行内移动:行内左右挪到更优位
A B
② 行内交换:同行两单元互换
A B
③ 跨行交换:等宽单元跨行互换
pin左 镜像 pin右
④ 单元翻转:水平镜像改引脚侧,缩短线长

详细布局:最优区域(Optimal Region)

在详细布局中移动某个单元时,其"最优位置"由所有连接该单元的线网的中位数坐标确定。

最优区域计算

设单元 $c$ 连接到线网 $j=1\dots n$,每个线网有边界框坐标 $[x_{jl}, x_{jr}] \times [y_{jl}, y_{jr}]$。

将所有 $x_{jl}$ 和 $x_{jr}$ 排序,取中位数 → x 最优区间 $[x_{\text{med}_l}, x_{\text{med}_r}]$

将所有 $y_{jl}$ 和 $y_{jr}$ 排序,取中位数 → y 最优区间 $[y_{\text{med}_l}, y_{\text{med}_r}]$

最优区域 $= [x_{\text{med}_l}, x_{\text{med}_r}] \times [y_{\text{med}_l}, y_{\text{med}_r}]$,单元放在此区域内可最小化 HPWL。

详细布局典型流程

1. 枚举每个单元的最优区域

2. 在最优区域附近搜索合法位置

3. 评估移动收益(线长/时序改善量)

4. 贪心或 SA 接受,保持合法性

最优区域计算示意
最优区域计算:中位数坐标确定最优放置区间的几何示意

时序驱动布局:RC 树与 Elmore 延迟

互连延迟已超越门延迟成为时序主要瓶颈。四个核心模型(2×2):

① 线电阻 R

$R=\rho\dfrac{L}{A}=R_{\square}\dfrac{L}{W}$,线越长越细 R 越大。

② 线电容 C

$C=C_{\text{area}}+C_{\text{couple}}$(对地+耦合),线越长 C 越大。

③ RC 树模型

单驱动多接收 → RC 树(Driver + 分支 RC 网络)。

④ Elmore 延迟

$\tau_i=\sum_j R_{ij}C_j$(路径电阻 × 下游电容)。

四个数值示例

① R:M1 层 $R_{\square}{=}0.1\,\Omega/\text{sq}$,$L{=}100\,\mu m,\ W{=}0.1\,\mu m$ → $R{=}0.1{\times}1000{=}100\,\Omega$

② C:单位电容 $c{=}0.2\,fF/\mu m$,$L{=}100\,\mu m$ → $C{=}20\,fF$

③ RC 树:driver 经 $R_1$ 到 A,再经 $R_2$ 到 B(见 ④)

④ Elmore:$\tau_B=R_1(C_A{+}C_B)+R_2C_B$;取 $R_1{=}50,R_2{=}30\,\Omega,\ C_A{=}C_B{=}10\,fF$ → $\tau_B=1300\,\Omega{\cdot}fF=1.3\,ps$

TNSTotal Negative Slack
总负时序裕量
WNSWorst Negative Slack
最坏负时序裕量
时序驱动布局概述
时序驱动布局:时序约束如何影响单元布局决策
时序驱动布局方法对比
时序驱动布局方法对比:线网权重法、路径约束法、可微分方法

时序驱动布局方法

① 基于线网(Net-based)

对时序关键线网赋予更高线长权重 w,使优化器优先缩短关键线网长度。可直接叠加到任何线长驱动布局算法上,实现简单。

② 基于路径(Path-based)

根据路径延迟约束添加数学约束(路径延迟 $\le T_{\text{target}}$),通过带约束规划求解坐标。精确但计算代价高,适合关键路径数量有限的场景。

③ 可微分方法(Differentiable)

对时序传播过程进行光滑化(softmax 近似 max),将 TNS/WNS 作为全局布局目标的一部分,与线长、密度一起用梯度下降优化。

④ 虚拟布线(Virtual Route,VR)

在布局阶段通过预测线网布线形状(L 形、Z 形、斯坦纳树)估算 RC 延迟,无需真实布线。比 HPWL 更准确,有效减少时序违规。

挑战:布局早期位置变化剧烈,时序分析不稳定;对关键单元过度聚集会加剧局部拥塞,需平衡时序与拥塞约束。
示例:基于线网(Net-based) 给关键线网加权 w↑ 布局前(关键路径分散) FF1 A B FF2 关键路径长 → WNS = −0.30 ns,TNS = −1.20 ns(违规) 关键线网权重 w↑ → 单元拉近 布局后(关键路径聚拢) FF1 A B FF2 关键路径短 → WNS = −0.05 ns,TNS = −0.20 ns(接近收敛) |TNS| 改善: 前 1.20 ns 后 0.20 ns(↓83%)
图:Net-based 时序驱动——对关键线网加权使关键路径单元聚拢,WNS/TNS 显著改善

拥塞驱动布局:RUDY / TOF / MOF

拥塞的定义

在 bin 内:需求布线资源 > 可用资源(金属层数 × 轨道数)。

轻度拥塞

布线器可绕道,但绕线使实际线长 > 估算线长,RC 延迟增加。

严重拥塞

布线无法完成(DRC 短路/断路);整个设计流程失败。

TOFTotal Overflow
总溢出量
全局拥塞总量
MOFMaximum Overflow
最大溢出量
局部最严重拥塞
拥塞计算公式

$$\text{overflow}_{i,j} = \max\big[\,0,\ (\text{demand}_{i,j} - \text{capacity}_{i,j})\,\big]$$

$$\text{util}_{i,j} = \text{demand}_{i,j} / \text{capacity}_{i,j}$$

$$\text{capacity}_{i,j} = \lfloor \text{grid\_h} / d_{\text{pitch}}(\text{layer}) \rfloor$$

方法速度精度原理
静态(单元/引脚密度)极快基于局部密度估算,不建模布线路径
RUDY(概率法)将线网 HPWL 均匀分配到边界框内所有 bin
快速 GR(构造法)实际运行全局布线器,获取真实资源使用情况
拥塞热图
全局布线资源需求热图与 TOF/MOF 指标可视化

拥塞修复:Cell Inflation 与修复策略

间接优化:单元膨胀(Cell Inflation)

在拥塞热点区域,临时膨胀该区域内单元的面积,使全局布局器被迫将其散开到低密度区域。膨胀后重新运行全局布局,迭代直到拥塞满足要求,最终恢复单元真实大小。

工具年份膨胀单元选择膨胀比率
SimPLR2011拥塞最高前 5% 网格内单元简单加权函数
Ripple2013所有拥塞网格内单元简单分段函数
POLAR2014拥塞最高前 10% 网格内单元固定 10%
RePlAce2019所有拥塞网格内单元超线性函数

Floorplan 层面修复策略

顶层端口调整

切换金属层;调整端口位置(分散、重排、移边)。

宏单元调整

改变宏位置或旋转;增大宏间距;添加 Blockage/Halo。

核心区调整

调整核心长宽比;增大整体芯片面积。

电源网格优化

优化层次分配和宽度,减少对信号布线通道的占用。

交互:拥塞区(红)单元逐步膨胀+扩散到稀疏区(绿),峰值密度下降,为布线留出空间。

标准 Benchmark 与评测方法 📖 教材拓展

学术界用公共基准电路在同一平台上量化对比布局器——ISPD 系列竞赛设定了现代布局能力的"门槛"。

常用基准套件

ISPD 2005 / 2006ISPD 竞赛发布的大规模真实 ASIC 设计;以密度约束 + HPWL 为评测核心,确立现代布局基准。
ICCAD04 / MMS(混合尺寸)Mixed-Size:标准单元 + 大宏块共存,考验带障碍/可布线性的能力。
ISPD 2014 等引入时序/详细布线驱动等更贴近工业的评测目标。
竞赛意义:提供"同一基准、同一指标"的公平平台,使不同流派(划分/解析/力导向)布局器可横向比较,并公开工具与结果。

关键评测指标

HPWL总半周长线长,越小越好(主指标)
scaled-HPWL对密度违规加罚后的线长,惩罚"挤"出来的低线长
target density目标利用率 $\rho_t$(如 0.9),bin 密度上限
bin 利用率各 bin 密度 $\rho_b$ 是否 $\le \rho_t$(超出即违规)
密度约束(回顾)

$$\min\; \text{WL}(x,y)\quad\text{s.t.}\quad D_b(x,y) \le M_b,\ \forall b\in B$$

scaled-HPWL:违规越多缩放因子越大,防止"靠超密换短线"。

评分通常 = scaled-HPWL(兼顾线长 + 是否满足 target density),并辅以运行时与可布线性(溢出 TOF/MOF)。
来源:Handbook…Placement(ISPD 2005/2006 placement contests, ICCAD04 mixed-size benchmark);《大规模集成电路设计方法》第7章(基准测试与密度约束)

布局全流程:核心要点回顾

阶段目标主要方法关键指标
全局布局散开单元,优化总线长解析布局(WA线长+密度罚+Nesterov)HPWL、密度 $\rho_b$
合法化消除重叠,对齐行/格点Tetris / Abacus / 最小费用流 / QP总移动量(位移$^2$之和)
详细布局局部精细优化行内/跨行交换、翻转、最优区域HPWL、TNS/WNS
时序驱动关键路径延迟满足约束线网权重、VR 虚拟布线、可微分法TNS、WNS、Slack
拥塞驱动避免布线资源超额RUDY 估拥塞、Cell InflationTOF、MOF

HPWL

$=\Delta X + \Delta Y$;实际线长的下界;通过 LSE/WA 光滑化后可微。

模拟退火

$\exp(-\Delta L/T)$ 接受劣解;降温收敛;避免局部最优但速度慢。

解析布局

二次线长 + 团模型;$Ax=b$;密度惩罚 + CG/Nesterov 梯度下降。

ePlace/RePlAce

电场法 DCT 求泊松方程;密度惩罚梯度平滑;增广拉格朗日收紧约束。

自测题与思考

自测清单(能否独立回答?)

  1. 布局三步骤各自的目标和约束是什么?为什么不能直接做"精确布局"?
  2. 计算:4 引脚线网 A(2,5)、B(8,1)、C(5,7)、D(3,3),HPWL = ?(提示:找 x/y 方向的 max/min)
  3. SA 中当前 $T=10$,$\Delta L=15$,接受变差解的概率 $=\exp(-15/10)\approx\,?$;若 $T=1$,概率如何变化?说明了什么?
  4. 二次布局中,3 个可移动单元 $G_1 G_2 G_3$,1 个固定引脚 $P(x=0)$,线网 $\{G_1,G_2\}(w=1)$、$\{G_2,G_3\}(w=1)$、$\{G_1,P\}(w=1)$,写出 A 矩阵($3\times3$)和 b 向量($3\times1$)。
  5. Tetris 和 Abacus 合法化的核心区别?什么场景下 Abacus 质量显著优于 Tetris?
  6. RUDY 如何估算 bin 的布线密度?相比完整 GR,RUDY 的主要优势和局限?
  7. 某芯片 3 条路径 Slack 分别为 −0.3ns、+0.1ns、−0.5ns,TNS = ?,WNS = ?
  8. Cell Inflation 的工作原理和迭代流程是什么?膨胀比率的设计对结果有何影响?
参考答案提示:② HPWL $= (8-2)+(7-1) = 12$;③ $\approx 0.223$,$T=1$ 时 $\approx 2.2\times10^{-7}$,说明低温趋于贪心几乎不接受劣解;⑦ TNS $=-0.8$ns,WNS $=-0.5$ns。

数字芯片物理设计自动化

第 3 讲 :布线

李兴权

东南大学 集成电路学院

E-mail: x.li@seu.edu.cn

本讲知识地图

§1 布线概述

流程位置、输入输出、先进节点挑战

§2 GCell 与 GRG

全局布线网格、容量模型、Track/Panel

§3 全局布线

RSMT/Flute/Hanan 网格、Maze/A*/Pattern、多线网、PathFinder 协商布线、拆线重布、拥塞/RUDY、层分配、ILP/多商品流/拉格朗日松弛建模

§4 详细布线

Pin Access、Track Assignment、MSMS A*、DRC 规则、Search & Repair

§5 时钟树综合 CTS

偏差/抖动/插入延迟/有用偏差、MMM/几何匹配/Tsay、DME 延迟合并嵌入、H树/Mesh/Spine 拓扑、门控时钟与缓冲平衡

§6 电源/地网络 PG

环+条带+网格层次、过孔阵列、预布线、IR Drop/电迁移 EM/去耦电容、线宽优化

§7 串扰与时序驱动

Crosstalk、Miller 效应、Elmore 延迟、Arnoldi、SI 修复手段

§8 ECO 工程变更

Non-Freeze / Freeze ECO、Spare Cell、Metal-Only ECO

§9 芯片收尾

天线修复、冗余通孔、Wire Spreading、Metal Fill、Slotting、CMP、计算光刻/OPC、可制造性布线 DFM、耦合噪声屏蔽

§10 总结与自测

核心知识梳理、数字口诀、自测练习

本讲交互演示:maze(迷宫搜索)· congestion(拥塞/拆线重布)· hpwl(线长 / Steiner 树下界)· steiner(Hanan 网格直角斯坦纳树)· partition(全局布线分区资源/PathFinder)

§1 布线概述——流程位置

布线(Routing)紧跟布局(Placement)之后,将网表中的所有逻辑连接在芯片金属层上实现为物理导线。

输入Placed DEF · 技术文件 LEF · 时序约束 SDC · 电源规划
全局布线GCell 级路径规划,生成拓扑方向图
详细布线Track 级精确分配,生成 DRC-clean 导线
输出Routed DEF / GDSII · DRC 报告 · SPEF 寄生参数
布线输入输出示意
布线数据流:Placement → Routed GDSII

输入、输出与优化目标

输入 Inputs

  • 逻辑网表(门级)
  • 布局结果(单元坐标、行信息)
  • 技术文件(LEF/DEF、工艺层规则)
  • 时序约束(SDC)
  • 电源规划(Power Plan)

输出 Outputs

  • 已布线 DEF / GDSII
  • DRC 报告
  • STA 时序报告
  • 寄生参数文件(SPEF/RSPF)
  • SI 信号完整性报告

优化目标

零 DRC 违规

满足所有间距、宽度、Via 等规则

时序收敛

所有路径 Setup/Hold $\text{Slack} \ge 0$

最小化总线长

降低 RC 延迟和功耗

控制串扰与天线

保证信号完整性与可制造性

先进节点布线挑战

金属层数激增先进节点 >15 层金属,层间 Via 规则复杂,Via 电阻显著增大,Double/Triple Via 成为标准
DRC 规则爆炸从百条增加到数千条,含 MPT 着色约束、EUV 特有规则、EOL 端到端间距、Corner 规则
拥塞压力标准单元密度提高,局部布线资源不足,拥塞导致绕行增长、时序恶化,甚至 Open
信号完整性 SI线间距缩小使耦合电容增大,串扰噪声和延迟变化更严重,需要 SI-aware 布线策略
先进节点布线挑战
先进节点布线挑战总览

§2 GCell 与全局布线网格(GRG)

全局布线将芯片 Die 区域抽象为均匀矩形单元 GCell,构成三维容量图(Capacity Graph)。

GCell 边容量 Cap(e) = ⌊GCell_Width / Track_Pitch⌋ × Layer_Count − Blockage_Tracks
边容量 = 该方向可用布线轨道数。当需求 Demand > Cap 时发生溢出(Overflow),是全局布线的核心对抗目标。
奇数层 → 垂直优先 偶数层 → 水平优先 Track = 布线原子单位
网格化布线系统
GCell 三维网格结构

金属层方向约定与布线资源

金属层优选方向典型用途轨道间距
M1垂直(V)单元内部连线、引脚接入工艺最小
M2水平(H)单元间短距离互联最小 ×1.0
M3垂直(V)中等距离信号最小 ×1.0–1.5
M4–M6H/V 交替时钟、总线放大 1.5–2×
M7+(顶层)根据需求电源网络、长距离信号放大 4–10×
Track:某一金属层上按优选方向等间距排列的可布线位置,导线必须严格对齐 Track。
Panel:沿优选方向切割的布线区域带,含一组平行 Track,适合并行化布线求解。
GCell 边容量 Capacity Capacity(e) = (穿越该边的可用 Track 数) × (层数) 布线需求 Demand(e) 超过 Capacity(e) 即溢出(Overflow),对应右图红色边。
GCell 三维容量图
GCell 三维容量图——红色边为溢出边

§3 全局布线(Global Routing)概述

GR 不关心具体 Track 分配,只为每条 Net 规划经过哪些 GCell 的大致路径,生成"导航地图"。

资源分析统计 GCell 线密度热点,虚拟容量调整
拓扑规划RSMT / Steiner 树为多引脚网构造连接树
路径搜索两点布线:Lee / A* / Pattern Routing
多线网调度顺序/并发/协商式,消除资源冲突
拆线重布迭代 RnR,历史代价引导收敛
层分配分配 Via 与金属层,完成三维布线
全局布线目标
全局布线核心目标:零溢出拓扑路径

直角斯坦纳树(RSMT)与线长模型

树模型说明线长估算复杂度
HPWL
半周长线长
引脚 Bounding Box 半周长,快速下界估算下界(最短)O(n),最快
MST
最小生成树
直接连接所有引脚,不添加 Steiner 点比 HPWL 长 ~15%O(n log n)
RSMT
直角斯坦纳树
在非引脚位置添加 Steiner 点,进一步缩短线长比 MST 短约 11%NP-hard(精确),Flute 近似 O(n)
HPWL 公式 HPWL = (x_max − x_min) + (y_max − y_min) RSMT 线长 $\approx \text{HPWL} \times 0.75\text{–}0.9$;Steiner Ratio 理论下界 $\approx 2/3 \approx 0.667$

Flute:工业级 RSMT 近似算法

Flute(Fast Lookup Table-based Technique)是工业界最常用的 RSMT 近似算法。

核心思想

引脚数 ≤9 时通过预计算查找表精确求解;引脚数 >9 时递归分治,各子问题查表后合并

性能指标

时间复杂度 O(n),误差通常 <1%,百万引脚秒级完成,工业级速度

查表驱动 O(n) n≤9 时精确 n>9 分治近似 误差 <1%
Flute 建表原理
Flute 查找表构造原理
Flute 查表示例
Flute 查表结果示例

Hanan 网格与直角斯坦纳树(交互演示)

Hanan 定理(1966):对任意引脚集合 P,存在一棵最优直角斯坦纳树(RSMT),其所有斯坦纳点均落在 Hanan 网格上——即所有水平/垂直网格线的交叉点。

Hanan 网格点集合 H(P) H(P) = { (x_i, y_j) | x_i ∈ {x-coord of P}, y_j ∈ {y-coord of P} } n 个引脚 → 最多 $n^2$ 个候选斯坦纳点,搜索空间从无穷降至有限

迭代 1-Steiner(I1S)算法

每次从 Hanan 网格候选点中选出能最大化缩短 MST 线长的 1 个斯坦纳点加入,迭代直至无增益。时间复杂度 $O(n^3)$,误差约 8%(据 Handbook Ch24)

Flute 查表加速

n≤9 时通过预计算查找表精确匹配最优斯坦纳拓扑,比 I1S 快 100 倍以上,工业标准(Chu & Wong 2008)

斯坦纳比率理论下界 $\rho^* = 2/3 \approx 0.667$,即 RSMT 线长 $\ge 0.667 \times \text{MST}$ 线长(据 Handbook Ch24)。

两点布线:Lee 迷宫算法(BFS Routing)

Lee 算法是最经典的最短路布线算法,基于 BFS 波前扩展,保证找到最短曼哈顿路径(若存在)。

阶段 1:波前扩展从 Source 出发,BFS 逐格赋距离值,直到到达 Sink
阶段 2:路径回溯从 Sink 沿距离值递减方向回溯,得到最短路径
复杂度 时间 $O(W \times H)$,空间 $O(W \times H)$,$W \times H$ 为网格大小。
大规模芯片(GCell 可达 $1000 \times 1000$)直接应用开销过大,通常只用于 DRC 局部修复。

A* 搜索与 Pattern 布线

A* 路径搜索

评估函数 $f(n) = g(n) + h(n)$ g(n):起点到 n 的实际代价(已走路径资源消耗)
h(n):n 到终点的启发估计(曼哈顿距离)
$h(n) \le$ 真实剩余代价时保证最优(可容许启发式)
A* 相比 Lee 大幅减少扩展节点数,是全局和详细布线中最常用的两点搜索算法。

A* 启发式搜索:受曼哈顿距离引导,朝终点定向扩展,遍历格子远少于 Lee 的全向 BFS 波前

Pattern 布线(3 种典型形状)

L 形(1次转弯)

2 种候选,覆盖大多数简单连接,速度最快(微秒级)

Z 形(2次转弯)

1 个中间弯折点,用于穿越障碍

U 形(3次转弯)

大幅绕行,用于局部避障

策略选择:Pattern(80%+网络)→ A*(中等复杂度)→ Lee(DRC 修复兜底)
算法扩展节点最优性典型用途
Lee 迷宫多(全向波前)保证最短DRC 局部修复
A* 搜索少(定向)可容许启发式下最优两点主力搜索
Pattern极少(固定形状)不保证80%+ 简单网络

多线网布线策略(Multi-Net Routing)

全局布线同时处理数百万条网络,需要策略克服顺序布线的"先来先得"偏差。

策略思想优点缺点
顺序布线
Sequential Routing
按优先级(Slack/线长/扇出)排序,依次布线实现简单,可控性强受顺序影响大,后布网络资源不足
并发布线
Concurrent Routing
同时考虑多条网络,联合优化资源分配全局资源分配更均衡实现复杂,规模受限
最小代价流
MCF / ILP
建模为最小代价流或整数规划,全局最优理论最优计算代价高,仅用于小规模局部优化
协商式布线
Negotiation-based
多轮迭代,逐轮提高拥塞区代价(History Cost),引导网络自然分散收敛性好,工业主流需多轮迭代,时间较长
工业主流框架:初始顺序布线 → 协商式拆线重布迭代 → 最终收敛

拆线重布(Rip-up and Reroute,RnR)

当布线完成后仍存在溢出时,对拥塞区导线拆除后重新布线,是全局布线的核心优化循环。

① 溢出检测扫描所有 GCell 边,找 Demand > Capacity 的溢出边
② 网络选择选择拥塞贡献最高、时序裕量最小的网络
③ 拆线从 GCell 资源图中移除选中网络,释放容量
④ 代价更新溢出边增加历史惩罚(History Penalty),引导下次绕行
⑤ 重新布线以更新代价重新搜索路径,期望绕开拥塞区。重复至收敛。
拆线重布流程
RnR 流程:检测→选网络→拆线→更新代价→重布线

PathFinder 协商布线与全局布线分区(交互演示)

PathFinder(McMurchie & Ebeling 1995)是现代工业全局布线的基础框架,通过多轮协商逐步消除拥塞,而非强制回避冲突。

PathFinder 代价函数(每条边 e) cost(e) = b(e) × p(e) × h(e) b(e):基础代价(线长/延迟);p(e):当前占用惩罚(> 容量时急剧增大);h(e):历史代价(反映长期拥塞)
第 0 轮:无约束布线忽略容量限制,为每条网络找最短路,允许过载。建立初始拥塞图
第 k 轮:更新代价重布线提升已拥塞边的 p(e) 和 h(e),迫使可绕行网络转移;固守关键路径不迁移
历史代价累积$h_k(e) = h_{k-1}(e) + \text{overflow}(e)$,长期拥塞区代价持续爬升,防止振荡
收敛判定所有边 $\text{Demand} \le \text{Capacity}$,即 $\text{TOF} = 0$
据 Handbook Ch31:PathFinder 收敛速度受 p(e) 增长率影响,增长太快易产生振荡,太慢收敛慢;工业实现通常结合自适应步长调节(据 Handbook Ch23)。

拥塞分析与溢出度量

拥塞度 Congestion Ratio Congestion(e) = Demand(e) / Capacity(e) $\text{Congestion} > 1.0$ 时发生溢出
总溢出量 TOF(Total Overflow) TOF = Σ max(0, Demand(e) − Capacity(e))
最大溢出 MOF(Maximum Overflow) MOF = max over all edges max(0, Demand(e) − Capacity(e)) 布线收敛目标:$\text{TOF} = 0$,$\text{MOF} = 0$

拥塞估算方法

RUDY 估算

将每条网络线密度均匀分布在 Bounding Box 内,快速估算区域拥塞,用于布局阶段预判

STWL-based 估算

利用 Steiner 树线长在 GCell 上的投影,比 RUDY 更接近真实布线结果

GR-snapshot(FastRoute)

在布局优化中插入快速全局布线快照,将真实布线结果反馈给布局优化器,引导降低拥塞

PathFinder 协商布线:拥塞边经多轮拆线重布逐步分散,总溢出 TOF 收敛至 0

层分配(Layer Assignment)

三维全局布线同时规划水平路径和层间 Via,称为层分配。

Via 个数最小化减少 Via 数量,降低 Via 电阻和制造缺陷风险
关键路径优先顶层金属顶层金属电阻低,时序关键网络提前分配,减小 RC 延迟
满足层容量约束每层分配不超过其可用 Track 数
对齐优选方向水平线走 H 层,垂直线走 V 层,减少绕行
策略:自底向上贪心分配——先在 M1/M2 完成引脚接入,再逐层向上爬升;时序关键网络提前分配到顶层低电阻金属。
全局布线与详细布线对比
全局布线(GCell 级)vs 详细布线(Track 级)
Via Pillar 规避 层间电阻平衡 Via 冗余计划

§4 详细布线(Detail Routing)概述

详细布线在 GR 的路径基础上,精确地将每条导线分配到具体 Track,生成满足所有 DRC 的物理版图。

Pin Access 引脚接入在单元引脚上找合法连接点(On-grid AP),解决引脚冲突
Track Assignment 轨道分配GR 路径映射到具体 Track 编号(全局→详细的桥接)
MSMS A* 搜索多源多汇 A*,在 Track 网格上 DRC-aware 搜索路径
Search & Repair扫描 DRC 违规 → 局部拆线 → DRC-aware 重布线,迭代至 DRC-clean
详细布线操作
详细布线操作全貌

引脚接入(Pin Access Generation)

接入点 Access Point (AP)

在单元引脚几何图形上找出满足 DRC 的合法连接点。一个引脚通常有多个 AP,布线器从中选最优。

On-grid 对齐

AP 必须对齐 Track 网格,否则 Via/Wire 无法连接。先进工艺 M1 引脚有时需要专用 Jog 才能对齐 Track。

引脚冲突解决

相邻单元引脚互相干涉时,通过单元重排、Via 类型选择或 Jog 引线解决引脚接入冲突(Pin Access Conflict)

Pin Access Point 生成
引脚接入点生成
Pin Access Conflict
引脚接入冲突与解决

轨道分配(Track Assignment,TA)

TA 将全局布线的 GCell 级路径映射到具体 Track 编号,是 GR→DR 的桥接阶段。

// 轨道分配贪心算法
function TrackAssignment(nets, tracks, GR_solution):
    // 按优先级排序:时序关键>线长长>扇出大
    sorted_nets = PrioritySort(nets)

    for each net N in sorted_nets:
        segments = GR_solution[N]
        for each segment S in segments:
            available = tracks − occupied_tracks
            best = SelectTrack(available, S, drc_rules)
            if best exists:
                Assign(N, S, best); Mark(best, occupied)
            else:
                DeferToDetailRouter(N, S)

优先级规则

时序关键网络优先分配中心轨道(降低串扰);长线网络优先分配低层高密度轨道

DRC 预检

Track 选择时预检间距规则,避免选到已被相邻导线占用的 Track 引发后续 DRC

未分配处理

无法分配的段推送给详细布线器(Detail Router)处理,通常 <5% 的段

Multi-Source Multi-Sink A* 详细布线

// Multi-Source Multi-Sink A* 伪代码
function MSMS_Astar(partial_net, grid, drc):
    sources = partial_net.connected_pins
    sinks   = partial_net.unconnected_pins
    openSet = PriorityQueue()
    for s in sources: openSet.push(s, f=0)

    while openSet not empty:
        cur = openSet.pop_min()
        if cur in sinks:
            path = Backtrace(cur)
            Update(partial_net, path)
            sources += path_nodes
            sinks.remove(cur)
            if sinks empty: return SUCCESS

        for N in neighbors(cur):
            if drc.Legal(cur, N):
                g = g[cur] + EdgeCost(cur, N)
                h = MinManhattan(N, sinks)
                if g < g[N]: openSet.push(N, g+h)

    return FAILURE  // 触发 Search&Repair
核心特性:已连接引脚作为多源(Multi-Source)同时扩展波前;每连接一个汇(Sink),将已连路径节点加入源集合;DRC 引擎嵌入扩展条件,保证每步移动都满足规则。
详细布线 Track 分配
GCell 路径映射到精确 Track

详细布线 DRC 规则类型

规则类型描述典型参数/说明
最小间距 Minimum Spacing同层相邻导线边缘距离工艺最小特征尺寸量级
最小宽度 Minimum Width单条导线最小宽度M1 通常为工艺最小尺寸
端到端 EOL End-Of-Line导线端部与相邻导线间距,比体间距更严格先进工艺达数十条 EOL 规则
Notch 凹口同一导线内部凹口的最小尺寸先进节点必须满足
Jog 折线短折线长度与间距约束M1/M2 Jog 规则复杂
Via 规则通孔尺寸、间距、金属延伸(Enclosure)每种 Via 类型有独立规则
密度规则 DensityCMP 要求金属密度在范围内通常 20%–80%,窗口检查
颜色感知 MPT多重图案光刻,导线须满足着色约束≤10nm 节点强制要求
最小间距
最小间距规则
EOL 间距
EOL 端到端间距
Notch
Notch 凹口规则

Search & Repair:DRC 修复迭代

布线完成后残留的 DRC 违规通过 Search & Repair 迭代修复。

Search 扫描全芯片扫描 DRC,定位所有违规点,建立违规列表并按严重程度排序
局部拆线对每个违规点,拆除涉及的最小导线集,释放局部资源
Repair 重布线在拆线区域以满足 DRC 为约束重新布线,优先使用 DRC-aware A* 或 Lee 算法
局部验证每次修复后重新运行局部 DRC,确认违规减少,避免修复引入新违规
反复迭代直至 DRC Clean(零违规),是详细布线能否流片的最终关卡。
Search and Repair 流程
S&R 迭代修复流程

全局布线的优化建模:ILP / 多商品流 / 拉格朗日松弛 📖 教材拓展

PathFinder 是工程化的协商迭代框架;从理论看,全局布线本质是一个带容量约束的组合优化问题,可用 ILP / 多商品流 / 拉格朗日松弛精确建模。来源:Handbook Ch23/Ch32 Routing

① 整数线性规划 ILP(最小化最大拥塞 λ) min λ  s.t.  Σ_{T∋e} x_{i,T} ≤ λ·c(e)  ∀e ;  Σ_{T∈T_i} x_{i,T}=1 ;  x_{i,T}∈{0,1} $x_{i,T}=1$ 表示线网 i 选用候选 Steiner 树 T;每个线网恰选一棵树;每条边占用 $\le \lambda \times$ 容量。整数解为 NP-hard。
② 多商品流 MCF(commodity = 线网) max μ  s.t.  Σ_{P∋e} x_{i,P} ≤ c(e) ;  Σ_{P∈P_i} x_{i,P}=μ·d_i ;  x_{i,P}≥0 分数松弛(LP)多项式可解;整数 MCF 为 NP-complete,需舍入。可达 $(1+\epsilon)$ 近似(Ch32 Thm2)。
③ 拉格朗日松弛(容量约束并入目标) L_λ = Σ b(e)·x(e) + Σ_e λ_e ·( demand(e) − c(e) ) 把硬容量约束乘以乘子 $\lambda_e$ 罚入目标,子梯度迭代更新 $\lambda_e$;溢出边乘子持续上升。
与 PathFinder 的呼应:PathFinder 历史代价 $h_k(e)=h_{k-1}(e)+\text{overflow}(e)$,正是拉格朗日乘子 $\lambda_e$ 的子梯度近似更新——溢出越久惩罚越大,引导可绕行网络迁移。工程框架与优化理论在此统一。来源:Handbook Ch23 (式23.1/23.2)
ILP:理论最优·NP-hard MCF:分数 LP 可解 拉格朗日:可扩展近似

§5 时钟树综合(CTS):偏差、抖动、插入延迟、有用偏差 📖 教材拓展

时钟树综合(Clock Tree Synthesis)为芯片所有寄存器提供稳定、低延迟、均匀分布的时钟,是物理设计中决定主频与功耗的关键环节。来源:《大规模集成电路设计方法》第8章(李兴权);Handbook Ch42 Clock

时钟偏差 Clock Skew

同一时钟到达两个寄存器的到达时间差 $\text{skew}_{ij}=t_i-t_j$。全局偏差=全片最大值;局部偏差=同一时序路径两端之差。理想目标→零偏差。

插入延迟 / 时钟延迟 Latency

时钟源到末端触发器的传播延迟。延迟越短、网络越快,对工艺偏差越鲁棒(小相位延迟→偏差占比小)。

抖动 Jitter

同一接收点时钟周期的时间波动,分随机抖动+确定性抖动。源自电源噪声、温度、缓冲器延迟变化、耦合串扰。网络结构对 jitter 影响很小,主要由电源网络/时钟源决定。

有用偏差 Useful Skew:不再追求零偏差,而是故意引入非零偏差,把发射沿提前/捕获沿推后,用 skew 给关键路径"借时间"——平衡相邻级 setup/hold 裕量,提升主频。物理上通过配合数据线网时序,调整时钟线网长度实现。
有用偏差的 setup/hold 约束 t_i + t_clk2q + MAX(D_ij) + t_setup ≤ t_j + P t_i + t_clk2q + MIN(D_ij) ≥ t_j + t_hold 可建为 LP:$\min P$(提速)或 $\max M$(安全裕量),求解各寄存器最优 $t_i$。
skew 越小越好 latency 越短越鲁棒 useful skew 借时间提速

零偏差时钟树算法:MMM / 几何匹配 / Tsay 精确零偏差 📖 教材拓展

算法方向核心思想复杂度特点 / 局限
MMM
均值中点法
Means & Medians
自顶向下按 x 或 y 坐标在中位数处划分引脚集,连接整体质心(均值)到两子集质心,递归到单点;用一级前瞻选划分方向O(n log n)快;但假设延迟正比路径长,对不均匀分布偏差大,布线不适配曼哈顿
GMA
几何匹配
Geometric Matching
自底向上每步对路径长平衡子树做最小代价匹配($\lfloor k/2 \rfloor$ 条线段),分接点取使到叶最大路径差最小的平衡点;必要时 H-flipping$O(n^{2.5} \log n)$线长与偏差均优于 MMM;复杂度较高
Tsay
精确零偏差
自底向上基于 Elmore 延迟合并两零偏差子树,精确求分接点位置 $x$;$x \notin [0,1]$ 时用蛇形线(snaking)拉长导线精确零偏差;DME 的延迟模型基础
Tsay 零偏差分接点位置 $x$(连接线长 $l$,下游电容 $C_1/C_2$,单位电阻 $\alpha$、单位电容 $\beta$) x = [ t₂ − t₁ + α·l·(β·l/2 + C₂) ] / [ α·l·(β·l + C₁ + C₂) ] 分接点把连接线分为 $xl$ 与 $(1-x)l$ 两段,使两侧 Elmore 延迟相等 → 零偏差。来源:Handbook Ch42 (式42.2)

DME 延迟合并嵌入法(Deferred-Merge Embedding) 📖 教材拓展

DME 是工业 CTS 的经典核心:给定拓扑,在保证精确零偏差的同时最小化总线长,线性时间 O(n),且直接得到曼哈顿布线。来源:《大规模集成电路设计方法》第8章(李兴权);Handbook Ch42 Clock

自底向上:求合并段 ms(v)从叶节点开始,每个分接点 v 的所有合法零偏差放置位置构成合并段(Merging Segment)。合并两子树 X、Y 时,按延迟平衡计算到各自的距离 $d_X$、$d_Y$,$\text{ms}(Z)$ = 两倾斜矩形(Tilted Rect)的交集
关键性质:曼哈顿弧可证所有合并段都是斜率 $\pm 1$ 的线段(Manhattan Arc),每次合并 $O(1)$,自底向上线性时间
自顶向下:定位嵌入根可取 ms(root) 上任意点;其余节点 v 在 ms(v) 上、且距父节点位置 $\le d$ 的范围内取点。自顶向下线性时间确定全部坐标
为什么 DME 优:把"放在哪"延后到拓扑确定之后再统一决策(Deferred-Merge),合并段保留了所有零偏差自由度,因此能在零偏差约束下取到最短线长。线性延迟模型下可证最优
// DME 合并段构造(ASCII 示意)
// 合并段 = 斜率±1 的曼哈顿弧

  ms(X) ◣           ms(Y)
        \◣        ◢/
         \ ◣    ◢ /
   d_X →  \  ◣◢  / ← d_Y
           \ /\/
   ms(Z) =  ╳ (两倾斜矩形交集)
            零偏差合法放置位置集

// 延伸:有界偏差 BST-DME 用合并区域 MR
// 替代合并段 MS;有用偏差 UST-DME
// 用约束图 CG 求可行偏差范围 FSR
ZST:零偏差树 BST-DME:有界偏差 UST-DME:有用偏差

时钟分发拓扑对比:H树 / X树 / Mesh / Spine / 混合 📖 教材拓展

不同时钟分发拓扑在偏差、功耗、面积与抗工艺偏差间各有取舍,工业大型处理器多采用混合结构。来源:《大规模集成电路设计方法》第8章(李兴权);Handbook Ch42/Ch43 Clock

拓扑结构偏差功耗/面积抗 PVT典型应用
H 树 / X 树递归对称 H/X 形从中心向外分发规则阵列下 $\approx$ 零偏差弱(不规则布局难控)IBM S/390 一级树
网格 Mesh水平/垂直导线网格,多点驱动局部偏差极低(就近直连)高(线/功耗大)强(对布局不敏感,易改版)Alpha 21164
脊柱 Spine中央主干 + 蛇形线分发到时钟单元组组间局部偏差较大中高(蛇形线长)较强(蛇形易调)Pentium II/III/4(1–3 spine)
混合 树+网格平衡树分发到多点 → 网格局部连接全局+局部双低高于纯网格IBM Power4:树→单网格($\le 1024$点)
Mesh 的核心权衡:网格把邻近点直接短接,局部 skew 极低且对布局/改版不敏感;代价是线资源与动态功耗显著增大,且驱动近端与远端之间存在系统性偏差(Alpha 21164 实测左右驱动到远端达 ~90 ps)。工业常用中等网格密度+中等缓冲密度折中。
// Mesh(网格多点驱动,就近短接)
  ┼──┼──┼──┼──┼
  ┼──▣──┼──▣──┼  ▣=驱动/接收点
  ┼──┼──┼──┼──┼  各交点电位被拉平

H 树时钟分发:对称递归 H 形使时钟源到每个叶节点的路径等长 → 规则阵列下近似零偏差

时钟功耗、门控时钟(Clock Gating)与缓冲器平衡 📖 教材拓展

时钟网络是芯片最大的功耗与翻转源——每周期翻转两次,驱动巨量寄存器输入电容与长导线。来源:《大规模集成电路设计方法》第8章(李兴权);Handbook Ch42

40%时钟占高性能处理器总功耗
36%时钟占嵌入式处理器总功耗
$\times 2$ / cycle时钟每周期翻转两次
主因寄存器输入电容充放电
门控时钟 Clock Gating:在不工作的时钟分支前插入门控单元(ICG),关闭空闲模块的时钟翻转——直接削减寄存器输入电容的动态功耗,是降低时钟功耗最有效手段。

缓冲器插入与平衡(降 skew 三原则)

① 每条源→汇路径缓冲级数相同各路径经过相同个数缓冲器,延迟天然对齐
② 每级缓冲器尺寸相同同层用同型号缓冲器,时延一致
③ 每级负载电容/输入压摆相同调整线宽线长,使各级负载与转换时间一致
缓冲树的双刃剑:缓冲器降低长线电阻与相位延迟、改善 SI;但缓冲延迟对电源噪声/工艺偏差更敏感,会引入额外 skew 与 jitter,且布局后插入困难。来源:Handbook Ch42

§6 电源/地网络(PG Network)布线:环 + 条带 + 网格 📖 教材拓展

电源网络由众多电源线/地线在金属层上规划构成,通过"打供电环 + 供电条 + 网格"把稳定电压送到每一个单元,是先于信号布线的预布线来源:《大规模集成电路设计方法》第8章(李兴权);Handbook Ch44 Power

供电环 Power Ring环绕 Core / 各 Block 的 VDD/VSS 宽金属环,作全局供电主干,走顶层低阻金属
供电条 Strap / Trunk从环引出的横纵宽条带,跨芯片分发电流到中间层
电源网格 Mesh / Grid中间层规则网格交织,把电流均匀送达;下层细网格/Rail 直连标准单元 VDD/VSS 轨
过孔阵列 Via Array层间用多过孔阵列连接,降低过孔电阻、提高可靠性与载流能力
层次结构:顶层环+宽条带(全局) → 中间层网格(分发) → 标准单元行 VDD/VSS Rail(末端)。先布电源后布信号,电源网络消耗布线资源,需在供电充足前提下尽量少占资源,给信号/时钟线网留空间。
// PG 网络层次(剖面示意)
 顶层  ╔════════ Power Ring ════════╗
       ║  ┃     ┃     ┃     ┃  (Strap)║
 中间  ║──╂──┼──╂──┼──╂──┼──╂──║ Mesh
       ║  ┃  │  ┃  │  ┃  │  ┃  ║
       ║──╂──┼──╂──┼──╂──┼──╂──║
 单元  ╠══▣══▣══▣══▣══▣══▣══╣ VDD Rail
       ╚══▣══▣══▣══▣══▣══▣══╝ VSS Rail
   ┼ = Via Array(过孔阵列层间连接)
电源线 π 模型(单段 RLC) R = ρ·l/w  ;  C = (β·w+α)·l  ;  L = γ·l/w 线宽 $w$ 越大电阻越小、载流越强;$w > 5\,\mu m$ 时片上电感不可忽略。来源:Handbook Ch44 (式44.1)

电源完整性:IR Drop / 电迁移 EM / 去耦电容 Decap 📖 教材拓展

IR Drop 电压降(静态 / 动态)

静态:稳态平均电流在网络电阻上的压降 $V=IR$;动态:瞬态开关电流叠加 $L \cdot dI/dt$ 噪声,瞬时压降更剧。约束:电源网 $V_p \ge V_{dd}-V_{th}$,地网 $V_g \le V_{th}$,目标 $V_{th}$ 取 $V_{dd}$ 的 5%–10%。压降过大→单元变慢甚至失效。

电迁移 EM(Electromigration)

电源/时钟网承载高电流,金属原子随电流迁移:缺口处变窄→开路,堆积小丘→短路,且 R/C 漂移引发时序违规。约束电流密度 $I_{max} \le I_{th}$,用加宽线宽满足(电源网常用 5–10µm 宽线)。

去耦电容 Decap 放置

在 VDD/VSS 间放置去耦电容,作"局部电荷池"抑制瞬态电流与 $L \cdot dI/dt$ 噪声。类型:n-well 电容(时间常数 250–500ps)、非翻转电路的本征电容、薄氧电容。靠近大电流/高翻转模块放置最有效。

去耦电容容量估算

$Q_k=\int I_k(t)\,dt$(瞬态电荷需求),$C_k=Q_k/V_{noise}^{lim}$。迭代细化:噪声超限处增配 decap。

电源网络线宽优化(最小面积) min Σ l_i·w_i   s.t.   V_p≥V_dd−V_th ,   V_g≤V_th ,   I_max≤I_th ,   w_min≤w_i≤w_max 在满足 IR Drop 与 EM 约束下最小化电源金属面积,腾出信号布线资源。来源:Handbook Ch44 (式44.34)
IR Drop < 5–10% Vdd EM:加宽线宽 Decap:抑瞬态噪声

§7 串扰效应(Crosstalk Effects)

功能性故障(Glitch / Crosstalk Noise)

激励线(Aggressor)翻转在受害线(Victim)上耦合感应脉冲,脉冲幅度超过噪声容限时导致逻辑值翻转(功能性错误)

延迟变化(Crosstalk Delay)

同向翻转:耦合电容等效减小(速度加快);异向翻转:等效电容加倍(速度减慢),Setup 分析最坏情况

Miller 效应——等效电容 C_eff = C_self + k × C_coupling $k=0$(同向翻转)· $k=1$(Aggressor 静止)· $k=2$(异向翻转,最坏情况)

串扰缓解手段

屏蔽线(Ground Shield)

在关键信号线两侧放置接地屏蔽线,阻断耦合

间距增大

超过 DRC 最小间距,削弱耦合,代价是面积增加

中继器插入

在长线中间插入 Buffer,将 $L^2$ 延迟降为线性

层约束

关键信号走低干扰层(避免与 Clock 相邻)

Elmore 延迟模型与互连延迟计算

Elmore 延迟公式(RC 树) T_D(i) = Σ_k R_k × C_downstream(k, i) 对路径上每段电阻 $R_k$,乘以其下游所有电容之和
单段分布 RC 导线 50% 延迟 T ≈ 0.69 × R_driver × C_load + 0.38 × r × L × c × L 延迟与线长 $L^2$ 成正比,长线须插入中继器(Repeater)
Arnoldi 方法:更高精度的矩量匹配(Moment Matching)技术,用于先进节点多极点 RC 网络的延迟提取,比 Elmore 一阶近似精度高 $10\text{–}100\times$。
布线前延迟估算
PreRoute 延迟估算(基于 RSMT)
布线后延迟提取
PostRoute 延迟提取(真实 RC 寄生)

时序驱动布线(Timing-Driven Routing)

将时序收敛融入布线决策,确保关键路径满足 Setup/Hold 时序要求。

路径优先级排序按 Slack 从小到大排序,最关键网络优先布线,获得最优资源
线长预算根据时序为每条网络分配最大允许线长,布线器在预算内寻最短路径
层约束关键路径优先使用顶层低 RC 金属(大间距、低电阻)
SI 屏蔽在关键信号线两侧放置接地屏蔽线
中继器插入长线中间插入 Buffer,将 $L^2$ 延迟降为线性
时序驱动布线
时序驱动布线——按 Slack 分配资源

§8 ECO 工程变更令(Engineering Change Order)

特性Non-Freeze ECOFreeze ECO
单元布局允许重新布局所有单元已放置单元坐标冻结,不可移动
使用场景设计仍在迭代,时序违规较多设计接近完成或已签核,修改极少量逻辑
新增单元可在任何合法位置放置只能放在预留 ECO Spare Cell 或空白 Site
布线影响可全局重布线只在局部微小区域重布线,其余保持不变
层次结构可跨层次修改通常只改布线层(Metal-only ECO)
重新流片代价全层重新制版Metal-only ECO:只需重制 Via/Metal 层掩模版,节省数百万美元
Spare Cell 策略:预留 AND/OR/Inverter/DFF 等逻辑门,Freeze ECO 时只改 Metal 连线即可重新配置——Metal-Only ECO 制版费节省约 60–80%。

§9 芯片收尾:天线效应(Antenna Effect)

在等离子体刻蚀工序中,已刻蚀的上层金属将积累的电荷"天线式"汇聚到晶体管栅极,造成栅氧击穿损伤。

天线比率 Antenna Ratio Antenna Ratio = Metal_Area_Above_Via / Gate_Oxide_Area 超过工艺规定上限(通常数百至数千)时必须修复

修复方案

插入保护二极管

反向二极管为积累电荷提供泄放路径。最常用,但增加面积和引脚电容

跳层布线(Via Jumping)

将超标导线"跳"到更高金属层绕过问题段再回来,打断下层积累长度

切断导线(Wire Cutting)

超长连续导线中间切断,分段各自满足规则,切断点用另一层连接

天线规则
天线规则——刻蚀中栅氧损伤机制

冗余通孔(Redundant Via / Double Via)

单通孔存在随机缺陷(粒子污染)导致开路的风险,插入冗余通孔(Double/Triple Via)可大幅提高成品率(Yield)。

单 Via 缺陷率 $p = 0.01\%$ 时:
双 Via 失效率 $\approx p^2 = 10^{-8}$,降低 4 个数量级
扫描策略详细布线完成后,对所有单通孔尝试插入第二个通孔(不违 DRC)
优先级时序关键路径和电源导线优先插入冗余通孔
覆盖率指标现代工具报告 Double Via Coverage,目标通常 >80%
Via 空洞缺陷
Via 制造中的空洞缺陷
Via 电阻与可靠性
双 Via 显著提高成品率

Metal Fill、Slotting 与 CMP 平坦化

CMP 问题

碟形凹陷(Dishing)

宽金属线中心低于边缘,导致电阻增大

侵蚀(Erosion)

介电层过度研磨,影响上层光刻精度

过刻蚀

孤立金属区域附着力不足,制造中脱落

解决方案

密度 < 20% → 插入 Metal Dummy 密度 > 80% → Metal Slotting 开槽 SI-aware Fill 拉开关键信号线间距
填充后必须重新提取寄生参数(SPEF re-extraction)并重新运行 STA,因为填充金属会增加相邻信号线耦合电容,造成额外延迟。
Metal Fill
Metal Fill 填充空白区域
Metal Slotting
Metal Slotting 宽导线开槽

计算光刻、OPC 与可制造性布线(DFM Routing)

亚波长光刻挑战

当特征尺寸小于曝光波长(193 nm 浸没式,EUV 13.5 nm),光学衍射效应使晶圆上图形严重偏离掩模设计,即"光学邻近效应"(OPE)。

分辨率极限(瑞利准则) R = k₁ × λ / NA $k_1$:工艺因子(理论下限 0.25);$\lambda$:曝光波长;$\text{NA}$:数值孔径

OPC(光学邻近校正)

在掩模图形上添加"锤头"、散射条(SRAF)、Serif 等辅助形状,预补偿衍射失真,使晶圆图形逼近设计意图(据 Handbook Ch35)

多重图案光刻(MPT/LELE)

≤14 nm:将密集图形分解为多次曝光,每次曝光密度降低一半;EUV(≤7 nm)单次曝光但仍需 OPC。布线须满足"着色可行"约束(颜色感知布线 Coloring-Aware Routing)

可制造性布线(DFM Routing)规则

DFM 规则目的
最小公共长度(Min. Enclosed Area)避免掩模上出现细长孤岛,防止制造缺陷
超出最小间距的优选间距(Preferred Spacing)减小 OPE 影响,提高工艺窗口
导线对齐/栅格化(Grid-aligned Routing)减少 MPT 冲突,降低 OPC 复杂度
禁止线长方向切换(Jog 限制)防止过短 Jog 段在光刻中消失,产生开路
冗余通孔(Redundant Via)Via 随机缺陷容忍度提升,Double Via Coverage > 80%
DFM 布线的核心哲学:不仅要满足 DRC,还要在工艺窗口内保证高良率(据 Handbook Ch35/Ch38)

耦合噪声(Crosstalk Noise)量化分析与屏蔽策略

Devgan 噪声指标(单 Aggressor 简化) Noise_peak ≈ λ × C_coupling / (C_self + C_coupling) × V_aggressor $\lambda = C_\text{coupling}/C_\text{total}$;$\mu$ = aggressor 信号斜率;噪声与耦合电容成正比
多 Aggressor 叠加(据 Handbook Ch26) I_total = Σ_j (λ_j × µ_j × C_coupling_j) 多条激励线同时翻转时噪声叠加,最坏情况更严峻
噪声容限 NM(Noise Margin):接收端容许的最大噪声幅度。当 $\text{Noise}_\text{peak} > \text{NM}$,电路出现逻辑翻转(功能性错误)。STA 工具须在时序分析中附加 SI Noise Check。

屏蔽与间距策略量化

手段降噪效果代价
增加间距 $2\times$ 最小$C_\text{coupling} \downarrow$ ~40–60%面积增加 ~1 Track
接地屏蔽线(GND Shield)理论隔离 >95%面积代价:1 条保护线
插入中继器(Repeater)将耦合分段,降至单段功耗/面积/延迟
层变换(Layer Change)换垂直层使平行长度归零Via 电阻增加
STA SI-aware 分析 噪声预算分配 关键路径优先屏蔽

Wire Spreading 与 Filler Cell

Wire Spreading(导线扩展)

适当增大导线间距超过 DRC 最小间距,主要目的:

降低随机粒子短路缺陷概率 减小耦合电容 → 改善 SI 提高制造良率
Wire Spreading
Wire Spreading 防随机粒子缺陷

Filler Cell(填充单元)

填满标准单元行末尾空白 Site,三大作用:

N-well 连续性标准单元行 N-well 必须贯通全行,Filler Cell 提供连接
衬底接触 Substrate Tap含 Tap 的 Filler Cell 每隔一定距离放置,为衬底提供固定电位,防止闩锁(Latch-up)
电源轨完整性确保 VDD/VSS Rail 在行内连续,不产生断路

芯片收尾——问题全景对比

问题原因解决方案关键指标
天线效应等离子体刻蚀中金属积累电荷损伤栅氧插入 Antenna Diode / 跳层 / 切断导线天线比率 < 工艺上限
Via 开路单通孔随机缺陷(Random Defect)冗余通孔(Double/Triple Via)Double Via Coverage > 80%
CMP 不均金属密度不均导致研磨速率差异Metal Fill 均匀密度密度 20%–80%
宽线碟形凹陷宽金属线局部密度过高Metal Slotting 开槽无 Dishing DRC 违规
ESD / 闩锁I/O 未加保护,或阱间距不足ESD 保护环 + Filler Cell(含 Tap)Latch-up 免疫测试通过
标准单元行空位布局后行末空白 SiteFiller Cell 填充零 Gap,N-well 连续

本讲核心知识总结

布线两阶段框架

全局布线(GCell 级,规划路径拓扑)→ 详细布线(Track 级,精确分配 DRC 合法)

RSMT / Flute

多引脚网络线长最小化的核心结构;Flute O(n) 时间,误差 <1%,工业标准

拥塞 = 溢出

$\text{TOF} = 0$ 是全局布线收敛判定;RnR + 历史代价惩罚是消除拥塞的主要手段

详细布线三步走

Pin Access → Track Assignment → DRC-aware MSMS A* + Search & Repair

串扰双影响

Glitch(功能错误)+ Crosstalk Delay(时序违规);屏蔽/间距/中继器组合应对

制造可靠性"四件套"

天线修复 + 冗余通孔 + Metal Fill + Filler Cell——流片前必须完成的收尾步骤

40–60%布线占后端周期
>15 层先进节点金属
1000+DRC 规则
$\text{TOF}=0$全局收敛判据
$0.38\,rcL^2$分布线延迟
80%双 Via 覆盖目标
数字口诀:40-60% 布线占后端周期 · >15 层先进节点金属 · 1000+ DRC 规则 · $\text{TOF}=0$ 全局收敛 · $0.38\,rcL^2$ 分布延迟 · $k=2$ 串扰最坏情况 · 80% 双 Via 覆盖率目标

布线算法横向对比

算法完备性最优性时间复杂度典型应用场景
Pattern(L/Z/U 形)否(形状受限)O(1)80%+ 简单两端网络,速度最快
A*(启发式搜索)是(可容许 h)是(h 可容许时)$O(b^d)$,实际远快于 BFS中等复杂度绕障,全局/详细布线主力
Lee(BFS 迷宫)是(曼哈顿最短)$O(W \times H)$DRC 修复兜底,局部精确布线
Flute(RSMT 近似)是(近似)近似(误差 <1%)O(n)多引脚网络拓扑规划,线长估算
MCF 最小代价流是(全局最优)多项式(大规模受限)小规模局部优化,资源均衡
协商式 RnR是(迭代收敛)近似多轮迭代工业主流全局布线拥塞消除框架

自测练习(Quick Self-Check)

  1. 为什么全局布线使用 GCell 网格而不是直接在 Track 上搜索?
  2. Hanan 定理的核心内容是什么?它如何将 RSMT 问题的搜索空间从无穷压缩到有限?
  3. A* 算法中,如果启发函数 h(n) 高估了真实代价,会有什么后果?
  4. PathFinder 协商布线中,历史代价 h(e) 的更新规则是什么?它如何防止拥塞振荡?
  5. Track Assignment 在全局布线和详细布线之间扮演什么角色?
  6. 为什么先进节点 EOL 间距规则比体间距规则更严格?
  7. 串扰 Miller 效应中,$k=2$ 对应哪种工作场景?对 Setup 时序有何影响?
  8. Elmore 延迟与线长 L 的关系是什么?为什么长线需要插入中继器?
  9. OPC(光学邻近校正)解决什么问题?为什么 EUV 节点仍然需要 OPC?
  10. CMP 中的 Dishing(碟形凹陷)和 Erosion(侵蚀)各因何产生?Metal Fill 与 Slotting 分别针对哪种情况?

数字芯片物理设计自动化

第 4 讲 :iEDA 实践

李兴权

东南大学 集成电路学院

E-mail: x.li@seu.edu.cn

iEDA 概述:两层基础设施理念

开发高质量 EDA 工具,需要两层开源基础设施分别服务不同受众。

Level 1:面向芯片设计

提供开源 EDA 工具 + 开放 RTL + 工艺 PDK,让设计者用开源工具完成 RTL → GDSII 完整流程,降低流片门槛。

Level 2:面向 EDA 研发

提供开源 EDA 基础设施(SDK),让算法研究者专注核心算法,而非重复建设数据结构和接口。

核心洞察:iEDA Infrastructure 提供统一数据库、接口、管理器和算子,新工具可直接复用,无需从零搭建。
10+开源 EDA 工具
完整芯片流片
MulanPSL v2 开源协议
统一数据库统一接口 统一管理器复用算子
iEDA 两层基础设施关系
图:iEDA Infrastructure 与 Tools 两层关系来源:iEDA 项目

物理设计四步骤与 iEDA 项目定位

Floorplan芯片/核心尺寸、I/O引脚、宏单元位置、电源网络、物理单元插入
Placement标准单元放置合法位置,插填充单元,优化时序·功耗·可布线性
CTS设计时钟分配网络,优化 Skew、Latency、功耗
Routing布线轨道走线,优化线长·时序·拥塞·DRC

iEDA 是覆盖 Netlist → GDSII 全链路的开源 EDA 平台,已完成 3 次完整芯片流片验证:

10+成熟物理设计工具
完整芯片流片验证
4工艺节点支持
全流程覆盖 开源可复现 算法研究友好 多工艺支持

官网:ieda.oscc.cc

iEDA 工具总体架构
图:iEDA 工具集总体架构(Netlist-to-GDSII)来源:iEDA 项目

基础设施第一层:Parser 与 Database

iEDA 支持数字物理设计常用的全部标准文件格式

Verilog(网表)LEF/DEFLiberty SDCSPEFSDF VCDITFGDSII

六类 Database

Design DB

网表实例、引脚、网、模块层次

Layout DB

物理位置、方向、布局区域

Tech DB

工艺层次、间距规则、Via 定义

Timing DB

单元延迟、时序约束(SDC)

Parasitic DB

布线寄生 R/C(SPEF)

Network DB

连接关系、扇出、逻辑锥体

设计要点:Parser 把各类标准文件统一解析、装载进对应 Database,各工具不再各自解析文件,而是直接读写共享数据库——保证全流程数据一致、零格式转换损耗
9 种文件格式6 类数据库 统一装载跨工具共享
iEDA 架构图
图:iEDA 基础设施分层来源:iEDA 项目

基础设施第二层:Manager

Platform Manager 协调各工具的初始化、数据输入、处理流程与输出,并提供统计与评估能力。

Initialize(初始化)读配置参数,加载工艺库和设计数据,建立内部数据结构
Input(输入)从 iEDA Database 读取上一步产出的 DEF/Verilog,或直接读外部文件
Process(处理)执行工具核心算法(布局、时序修复、布线等),更新设计状态
Output(输出)写回 iEDA Database,导出 DEF/Verilog,生成评估报告

Config / ChipData / Interactive

Config(配置管理)

统一管理各工具参数,支持 JSON 格式,工具按需读取各自配置块

ChipData(芯片数据)

维护跨工具共享的芯片全局数据:Die/Core 边界、工艺层、单元库

Interactive(交互控制)

提供命令行与脚本接口,支持按需调用各物理设计步骤,灵活编排

统一评估指标(Evaluation Metrics)

Manager 为各工具提供一致的质量评估接口,便于横向对比与流程内监控:

密度(Density)总线长(Wire Length) 拥塞(Congestion)时序(Timing) DRC功耗(Power)
设计要点:Manager 把"初始化—输入—处理—输出"抽象为统一管线,各工具复用同一套 Config / ChipData / 评估接口,从而保证全流程数据一致、参数可配、步骤可编排。

基础设施第三层:Interface

TCL 接口

与商业 EDA 工具一致的脚本语言,支持批处理完整物理设计流程

Python 接口

面向算法研究者,在 Python 环境直接调用 iEDA 工具和数据 API

GUI 界面

可视化版图浏览与交互,支持 DRC 结果可视化、布线检查

iEDA Interface 层架构图
图:TCL/Python/GUI 与各工具对应来源:iEDA 项目
# TCL 接口模块树(tcl/ 下)
├── tcl_config   # 全局配置
├── tcl_flow     # 流程控制
├── tcl_icts     # iCTS
├── tcl_idb      # 数据库访问
├── tcl_idrc     # iDRC
├── tcl_ifp      # iFP 布图规划
├── tcl_ipdn     # iPDN 电源
├── tcl_ipl      # iPL 布局
├── tcl_irt      # iRT 布线
├── tcl_ista     # iSTA 时序分析
├── tcl_ito      # iTO 时序优化
└── tcl_report   # 报告生成

# Python 接口(py/ 下,结构相同)
├── py_ipl  py_irt  py_ista  py_ito …

基础设施四层架构总览

iPL(布局工具)为例,展示各层如何协同:

┌───────────────────────────────────────────┐
│          EDA Tool Layer(如 iPL)          │
│  initial_placer / global_placer           │
│  legalizer / detail_placer / filler       │
│  checker / evaluator / topo_manager       │
└──────────┬───────────────┬────────────────┘
           │               │
 ┌─────────▼──────┐  ┌────▼────────────────┐
 │  iEDA-Manager  │  │  iEDA-Interface      │
 │  Config        │  │  TCL / Python / GUI  │
 │  ChipData      │  └─────────────────────┘
 │  Interactive   │
 └─────────┬──────┘
           │
 ┌─────────▼─────────────────────────────┐
 │           iEDA-Database               │
 │  Design / Layout / Tech               │
 │  Timing / Parasitic / Network         │
 └───────────────────────────────────────┘
 Input:  .v / .lef / .def / .lib / .sdc
 Output: .v / .def(+ 评估报告)

Parser 格式对应各 DB

文件格式写入 DB
Verilog (.v)Design DB
LEF / DEFLayout DB + Tech DB
Liberty (.lib)Timing DB
SDCTiming DB(约束)
SPEFParasitic DB
VCD功耗分析输入
GDSII最终版图输出
四层协同要点:EDA Tool 层只关心算法;Manager 负责"初始化—输入—处理—输出"调度与配置;Interface 提供 TCL/Python/GUI 三种调用方式;Database 作为全流程唯一数据真相源——新工具只需对接这套基础设施即可复用全部能力。
Tool 算法独立Manager 调度 Interface 多语言Database 单一真相源

iEDA 工具集——10 个成熟工具,覆盖全链路

工具全称主要功能输入→输出
iFP布图规划Die/Core 尺寸、I/O 放置、宏单元规划、物理单元插入Netlist .v → iFP.def
iPDN电源分配网络构建 VDD/VSS 网格,Power Stripe & RingiFP.def → PDN.def
iNO网表优化修复高扇出(Fix Fanout),缓冲器插入,驱动优化DEF+网表 → 优化网表
iPL布局全局(Nesterov/CG)→ 合法化 → 详细布局 → 填充单元iFP.def → iPL_result.def
iCTS时钟树综合时钟分配树,优化 Skew/Latency,插缓冲器iPL.def → iCTS.def
iRT布线全局布线→轨道分配→详细布线,优化 WL/时序/拥塞/DRCiCTS.def → 已布线 DEF
iDRC设计规则检查14 类规则:间距、EOL、封闭、最小面积等布线 DEF → DRC 报告
iSTA静态时序分析Setup/Hold,NLDM/CCS/Elmore,OCV/AOCV/POCV,串扰DEF+SDC+lib → 时序报告
iTO时序优化修 DRV(cap/slew/fanout),修 Hold/Setup,Cell SizingiPL/iCTS.def → iTO.def
iPA功耗分析VCD 解析,Leakage/Internal/Switching 功耗统计DEF+VCD+lib → 功耗报告

iFP · iPDN · iNO 详解

iFP——布图规划

确定 Die/Core 尺寸,放置 I/O 引脚,规划宏单元,插入 End-cap / Well-tap 等物理单元,生成 iFP.def

iPDN——电源分配网络

在 iFP.def 基础上构建 VDD/VSS Power Grid:Power Ring(核心边缘环)→ Power Stripe(纵横条)→ Pin 连接。

iNO——网表优化(Fix Fanout)

修复高扇出网(引脚数 > 阈值),通过缓冲器插入将过大扇出网(>32 pin)从 2,893 个减少到 7 个。

iNO 阶段贡献最大网数增量 +5,140 个网,是 Fix Fanout 的直接产物。
2,893→7大扇出网(>32pin)
+5,140iNO 新增网数
3 步iFP→iPDN→iNO
顺序逻辑:iFP 先定版图骨架,iPDN 在其上铺设供电网格,iNO 再修复网表中过大扇出——三步为后续布局/CTS/布线奠定可布通、可供电、可驱动的基础。

三步插入的物理结构

End-capWell-tapPower RingPower StripeBuffer 修扇出
输出:iFP.def(版图骨架)→ 含 PDN 的供电网格 → 扇出修复后的网表,交给 iPL 布局。
iFP 布图规划版图
图:iFP 版图——Die/Core 边界与 I/O 引脚来源:iEDA
iPDN 电源网络构建
图:iPDN Power Grid 生成过程来源:iEDA

iPL 布局工具——Nesterov / CG 全局布局

iPL 采用 Nesterov 加速梯度法共轭梯度法(CG)进行全局布局,在密度约束下最小化 HPWL 线长。

关键参数

参数说明典型值
target_density目标布局密度0.70–0.85
bin_cnt_x/y密度箱数量512×512
is_timing_aware_mode时序感知模式true/false
ignore_net_degree忽略高扇出网阈值100
num_threadsCPU 线程数8/16
max_buffer_num最大可插缓冲器数35000

内部步骤:initial_place → global_place → legalize → detail_place → filler

initial_place二次规划求初始坐标
global_placeNesterov/CG 密度优化
legalize落行、消除重叠
detail_place行内微调降线长
filler填充单元补空隙
density 控制512×512 bin 监控密度
iPL 全局布局收敛过程
图:iPL 全局布局收敛迭代动画来源:iEDA
iPL 密度热图与拥塞
图:iPL 布局评估——密度热图与拥塞分析来源:iEDA

交互演示:iPL 全局布局的梯度优化

iPL 全局布局把"线长 + 密度"写成可微目标,提供 共轭梯度(CG)Nesterov 两种求解器。

  • Nesterov 动量法在病态曲面收敛更快,是现代解析布局(ePlace/RePlAce)主流做法。
  • 本讲实践作业即"用 C++/Python 实现 CG 并在 iEDA/iPL 上测试、提 PR"。
右图对比普通梯度下降与 Nesterov 到达最优点的迭代数。

梯度下降(GD)

沿负梯度直走,病态曲面易"之字形"震荡、收敛慢。

Nesterov 动量

先按动量"前瞻"再校正梯度,显著减少迭代数。

解析布局目标

$\min\ F = W(x) + \lambda\, D(x)$

iPL 布局结果与单元扩散演示

iPL 布局结果版图
图:iPL 布局结果——标准单元合法化后版图来源:iEDA
合法化(Legalization)保证所有单元落在合法行位置,无重叠,满足行对齐约束。

iCTS——时钟树综合

iCTS 构建时钟分配树,以最小化 Skew 和 Latency 为核心目标,同时控制时钟功耗。

设计时钟树拓扑选择平衡型 H-Tree 或自适应树,按负载分布划分时钟域
插入缓冲器在时钟树各节点插入驱动缓冲器,维持信号完整性
优化 Skew/Latency调整缓冲器位置和驱动强度,缩小时钟偏差分布

CTS 阶段贡献 +3,284 个新网(87 个时钟大扇出网,>32 pin),是时钟树结构的正常产物。

+3,284iCTS 新增网
87时钟大扇出网
≈0目标 Skew
CTS 平衡之道:在 Skew、Latency、时钟功耗与缓冲器数之间折中——零偏差是理想,工程上常借 useful-skew 把时序裕量"挪"给关键路径。
iCTS 时钟树版图
图:iCTS 时钟树版图——缓冲器层次与走线来源:iEDA
iCTS Skew 分布统计
图:iCTS Skew 分布统计报告来源:iEDA

交互演示:iCTS 时钟树综合(H 树拓扑)

iCTS 构建时钟分发网络,平衡偏斜(skew)、延迟(latency)、缓冲器与线长。

  • H 树以递归等长分支实现近似零偏斜(zero-skew)
  • 工程中再结合缓冲器插入、聚类与 useful-skew 做微调。
右图:逐级生长的 H 树,叶节点为时钟端,各叶到根路径等长。

Skew(偏斜)

不同寄存器时钟到达时间之差,H 树等长分支使其趋近 0。

Latency(延迟)

根到叶的传播时延,由缓冲器级数与线长决定。

CTS 阶段贡献 +3,284 个新网,含 87 个时钟大扇出网(>32 pin)——是时钟树结构的正常产物。

iRT——三步布线流程

Global Routing(全局布线) 粗粒度格点规划走线路径,评估拥塞分布,引导详细布线方向。算法:Pattern Routing / Steiner Tree / 整数规划。
Track Assignment(轨道分配) 将全局布线结果分配到具体金属层轨道,考虑层间 Via 代价与轨道利用率,减少 DRC 违反。
Detailed Routing(详细布线) 单元格精度完成精确走线,修复 DRC 违反。算法:A* / Pattern Routing / 非线性规划。
线长(Wirelength)时序(Timing) 拥塞(Congestion)设计规则(DRC)
iRT 布线过程
图:iRT 布线过程动画来源:iEDA
iRT 详细布线结果
图:iRT 详细布线完成后的版图来源:iEDA

动画:多端线网的 Steiner 最小树构造——全局布线阶段连接策略

布线拥塞(Congestion)交互演示

iRT 拥塞热图解读

拥塞(Congestion)热图反映每个布线格点(GCell)的布线需求超出容量(Overflow)的程度:

冷色(蓝/绿)

布线容量充足,无溢出风险

暖色(橙/红)

布线需求超出容量,需算法调整走线或疏散单元

iRT 布线拥塞热图
图:iRT 布线拥塞热图——溢出区域高亮来源:iEDA

iDRC——14 类设计规则检查

Cut 层规则(5 类)

Cut Different Layer Spacing · Cut EOL Spacing · Cut Enclosure · Cut Enclosure Edge · Cut Spacing

Metal 层规则(6 类)

Metal Short · Metal EOL Spacing · Metal JogToJog · Metal Notch · Metal Parallel Run Length · Metal Corner Filling

其他规则(3 类)

MinHole(最小孔洞面积)· MinStep(最小步长)· Minimal Area(最小面积)

iDRC 报告
图:iDRC 各类规则违反数量统计报告来源:iEDA
检查机制:iDRC 在布线完成后对版图做几何规则扫描,逐类统计违反数量并高亮定位,是流片前签核(sign-off)的关键环节——任何一类违反都可能导致短路、开路或良率下降
间距(Spacing)封闭(Enclosure) 最小面积EOL 线端
5Cut 层规则
6Metal 层规则
3其他规则
iDRC 可视化
图:iDRC 违反位置高亮标注来源:iEDA

iSTA——签核级静态时序分析

iSTA 与商业工具 PrimeTime(pt)精度对比:

1.11pt/ista 均值(mean)
0.00095方差(variance)
1.107中位数(median)
$\text{pt}/\text{ista} \approx 1.11$ 表明 iSTA 结果与 PrimeTime 高度接近,偏差约 10%,方差极小——具备工程实用价值。
iSTA 时序报告
图:iSTA Setup/Hold Slack 分布与关键路径来源:iEDA

核心特性

Setup/Hold 分析NLDM/CCS/Elmore OCV/AOCV/POCV串扰分析 Clock GateLatch 分析
签核级定位:iSTA 作为开源签核 STA,精度对标 PrimeTime(均值 $1.11$、方差 $0.00095$),可独立完成 Setup/Hold 时序收敛判定,支撑教学与科研的全流程闭环。
iSTA vs PrimeTime
图:iSTA vs PrimeTime 对比散点图来源:iEDA

iTO 时序优化 · iPA 功耗分析

iTO——三类优化

修复 DRV

max cap/slew/wirelength/fanout 四类驱动违反,Buffer Insertion + Cell Sizing

修复 Hold 违反

插延迟缓冲器(Hold Buffer),增加信号到达时间

修复 Setup 违反

Rebuffer + Split Load + Cell Upsizing,对 WNS 最差路径提升速度

iTO 优化效果
图:iTO DRV 修复前后 WNS/TNS 对比来源:iEDA

iPA——功耗分析

支持布局前/中/后各阶段评估功耗,采用均值功耗模型(Average Model):

Leakage 泄漏功耗 Internal 内部功耗 Switching 开关功耗
# iPA 核心 API
buildGraph → readVCD
→ propagateToggleSP
→ calcLeakagePower
→ calcInternalPower
→ calcSwitchPower
→ reportPower
iPA 功耗报告
图:iPA 功耗分类统计报告来源:iEDA

iFlow——Netlist → GDSII 全流程框架

iFlow 是 iEDA 提供的完整芯片物理设计流程框架,支持多种 EDA 工具组合、多 PDK 工艺,一键流转至 GDSII。

环境资源

iEDA 工具本体

Gitee/GitHub 下载源码编译,或使用预编译二进制包

工艺库文件(PDK)

TechLEF + Std Cell LEF + Liberty + SDC + SPEF(可选)

设计网表

综合后 Verilog 网表(.v),来自 Yosys / DC

支持工艺节点

110nm28nm Sky130(开源)Nangate45(开源)

一键流转的价值

可复现

配置 + 脚本固化在仓库,任何人都能复跑同一设计得到一致结果

可分步

既支持一键 Netlist→GDSII,也可单步调试任一阶段,便于教学与研究

可换工艺

仅替换 PDK 与配置即可在不同节点间迁移,无需改动流程脚本

动画:iFP→iPL→iCTS→iRT→iSTA→GDSII 六阶段依次点亮,迷你版图逐步成型

iFlow 环境配置
图:iFlow 运行环境配置路径来源:iEDA
iFlow 项目目录结构
图:项目目录 config/script/result来源:iEDA

iFlow TCL 脚本——全流程控制示例

# ===== iFlow 全流程 TCL 脚本 =====
iEDA_init -config ./config/ieda_config.json

# 1. Floorplan(iFP)
ifp_init
set_die_area  0  0  1500 1500  # 1500×1500 um
set_core_area 50 50 1450 1450
place_ios ; place_macros
run_ifp            # → iFP.def

# 2. 电源网络(iPDN)
run_ipdn

# 3. 网表优化(iNO Fix Fanout)
run_ino

# 4. 布局(iPL)
run_ipl -config ./config/pl_config.json

# 5. 时钟树综合(iCTS)
run_icts -config ./config/cts_config.json

# 6. 时序优化(iTO)
run_ito_drv   # 修 DRV
run_ito_setup # 修 Setup
run_ito_hold  # 修 Hold

# 7. 布线(iRT)
run_irt -config ./config/rt_config.json

# 8. DRC + 时序 + 导出
run_idrc ; run_ista
write_gds -output ./result/design.gds

运行方式

# 方法 1:一键运行完整流程
./iEDA -script ./scripts/run_iflow.tcl

# 方法 2:分步运行(便于调试)
./iEDA -script ./scripts/01_fp.tcl
./iEDA -script ./scripts/02_pl.tcl
./iEDA -script ./scripts/03_cts.tcl
./iEDA -script ./scripts/04_rt.tcl

# 方法 3:Python API
python3 run_iflow.py \
  --design ysyx --pdk 28nm \
  --target gdsii
iFlow TCL 脚本截图
图:iFlow 完整 TCL 脚本截图来源:iEDA

iFlow 参数配置——iPL JSON 示例

{
  // iPL 参数配置(pl_config.json)
  "iPL": {
    "is_max_length_opt": false,
    "is_timing_aware_mode": true,
    "ignore_net_degree": 100,
    "num_threads": 16,
    "GP-Density": {
      "target_density": 0.75,
      "bin_cnt_x": 512,
      "bin_cnt_y": 512
    },
    "BUFFER": {
      "max_buffer_num": 35000,
      "buffer_type": [
        "BUF_X1","BUF_X2","BUF_X4"
      ]
    },
    "LG": {
      "global_right_padding": 1
    },
    "Filler": {
      "min_filler_width": 1
    }
  }
}
iFlow 配置文件截图
图:iFlow 参数配置文件截图来源:iEDA
target_density 调参建议:
过高(>0.90)→ 拥塞严重,布线困难;
过低(<0.60)→ 芯片面积浪费,互连线长增加。
推荐范围:0.70~0.85,按设计拥塞分布调整。

GP-Density

target_density / bin_cnt 控制全局布局密度

BUFFER

max_buffer_num 与可用缓冲器类型库

LG 合法化

right_padding 预留布线/填充间隙

Filler

min_filler_width 填充空白行

iFlow 报告与数据分析

以典型 28nm 设计为例,各阶段实例数 / 网数 / 引脚数变化规律:

+8,594iFP→Routing 实例增量
+252,361Filler 阶段插入填充单元
+5,140iNO 阶段新增网数
+3,284iCTS 阶段新增网数
阶段报告核心内容
iFPDie/Core 面积、利用率、I/O Pin 数
iNO高扇出网数量变化、插入 Buffer 数
iPLHPWL、密度分布、拥塞热图、时序 WNS/TNS
iCTSSkew 分布、Latency 统计、Buffer 数
iTODRV 违反数、Setup/Hold WNS/TNS
iRT总布线线长、金属层使用率、DRC 数
iSTASetup/Hold Slack、关键路径列表
iPALeakage/Internal/Switching 功耗(mW)
iFlow 各阶段实例数柱状图
图:各阶段实例数变化柱状图来源:iEDA
iFlow 引脚分布直方图
图:各阶段网引脚数分布直方图来源:iEDA

实践案例:ysyx-04-01 RISC-V 处理器

28nm工艺节点
1.5×1.5mm²芯片面积
200MHz工作频率
>1.5M等效门数
317mW动态功耗
29mW泄漏功耗

处理器架构

11 级流水线 + I-Cache / D-Cache,支持 Linux 启动

片上外设 IP

UART · VGA · PS/2 · SPI · SDRAM · 2× PLL

iEDA 完成

iFP → PDN → iPL → iCTS → iTO → iRT → iDRC → GDSII

意义:ysyx-04-01 由"一生一芯"学员使用 iEDA 开源后端全流程完成投片,证明开源 EDA 已具备真实 RISC-V 处理器芯片的量产级实现能力。
ysyx-04-01 完整版图
图:ysyx-04-01 芯片完整版图(28nm,1.5×1.5mm²)来源:一生一芯/iEDA
ysyx-04-01 实物芯片
图:ysyx-04-01 实物芯片封装照片来源:一生一芯

社区用户案例:gcd · APU(Sky130 130nm)

gcd——最大公约数加速器

工艺:Skywater 130nm(Sky130,完全开源)
面积:0.15mm × 0.15mm
功能:整数最大公约数硬件计算器,EDA 工具验证基准设计(benchmark)

APU——算术处理单元

工艺:Skywater 130nm(Sky130,完全开源)
面积:0.45mm × 0.45mm
功能:整数 + 浮点运算单元,规模适中,可验证 iEDA 多种优化能力

开源工艺的意义:Sky130 & Nangate45 完全开源,配合 iEDA 可在无商业许可的情况下完成完整物理设计学习和实验,极大降低高校教学和个人研究门槛。
gcd 与 APU 版图
图:gcd(最大公约数加速器)Sky130 版图来源:iEDA 社区

iEDA 开源社区与影响力

11Netlist-to-GDSII 工具
>0.3M代码行数
80+代码贡献者
500+Star(Gitee+GitHub)
110+Fork 总数
4.5万+Bilibili 播放量
平台地址
Gitee(主仓库)gitee.com/oscc-project/iEDA
GitHubgithub.com/OSCC-Project/iEDA
Gitlinkgitlink.org.cn/OSchip/iEDA
OpenIopeni.pcl.ac.cn/OSCC/iEDA
iEDA Gitee 仓库
图:iEDA Gitee 代码仓库截图来源:iEDA
iEDA 开源影响力统计
图:iEDA 开源影响力——竞赛/高校/科研/产业汇总来源:iEDA

社区资源与开源影响

官方网站

ieda.oscc.cc——工具介绍、使用指南、技术博客、最新动态

微信开源社区

用户社群 >1,000 人,贡献者社群 >2,000 人

Bilibili 教学视频

基础 EDA 知识 · EDA 前沿讲座 · iEDA 工具使用 · 芯片设计实践
BV1mp4y1P7C7(安装编译)· BV1Brm8YVEaY(Python RTL-to-GDS)

Arxiv 技术手册

覆盖基础知识体系、综合技术、布局布线算法——系统性、综合性、前沿性

竞赛出题支持

支持 4 个 EDA/芯片竞赛题目设计,提供开源工具与基准测试平台

高校课程建设

支持 5 所高校将 iEDA 纳入物理设计教学(本课程即为示例)

科研团队支持

支持国内 10 余个 EDA 研究团队,作为共同基础设施开展算法研究

产业落地应用

多家 EDA / 芯片公司在产品研发中使用 iEDA 基础设施,实现成果转化

开源影响力一览

>1,000用户社群人数
>2,000贡献者社群人数
4支持的 EDA 竞赛
5纳入教学的高校
10+科研团队复用
从竞赛、教学、科研到产业,iEDA 以"开源基础设施"形态形成完整生态闭环——降低 EDA 研究与教学门槛,让算法成果可复用、可验证、可落地。

商业工具 vs iEDA 能力对比

能力维度商业 EDA(Synopsys/Cadence)iEDA(开源)
全流程覆盖完整(IC Compiler II / Innovus)完整(10 工具,3 次流片验证)
时序分析精度PrimeTime(行业基准)iSTA,$\text{pt}/\text{ista}$ 均值 $\approx 1.11$,方差 0.00095
布局算法专有算法(不公开)Nesterov / CG 法,代码完全开放
工艺支持7nm 以下成熟支持110nm / 28nm / Sky130 / Nangate45
算法研究可及性黑盒,无法修改开源 C++,可直接扩展优化器
使用成本高昂 License 费用开源免费(Mulan PSL v2)
文档与社区闭源文档开源文档 + 2000+ 社区 + Bilibili 教学
iSTA 与 PrimeTime 对比:$\text{mean}\approx 1.11$ 意味着 iSTA 计算的路径延迟整体比 PT 偏乐观约 10%(ista 结果偏小),在教学和研究场景下可接受,工程签核时建议留余量。

经典算法 → iEDA 工具映射 📖 教材拓展

iEDA 并非凭空发明算法,而是把教科书中的经典物理设计算法工程化落地。理解算法原理,就能读懂 iEDA 各 operator 的实现。来源:《大规模集成电路设计方法》第7–8章 / Handbook(划分·时钟·制造)

教科书经典算法核心思想对应 iEDA 工具
KL / FM 划分基于增益(gain)的迭代交换/移动,多级划分基础iFP(宏单元/区域划分)
二次 / 解析布局(Quadratic / Analytical)把线长+密度写成可微目标 $F=\alpha W+\beta D$,梯度法求解;ePlace 用静电/泊松模型消重叠iPL(Nesterov / CG 全局布局)
DME 零偏差时钟树(Deferred Merge Embedding)自底向上构造合并段(曼哈顿弧),最小线长下嵌入零偏差拓扑,线性时间iCTS(H 树 / 零偏差树)
Elmore 延迟模型RC 树延迟 $\approx \sum_j R_j C_{dj}$,精确零偏差按此平衡子树延迟iCTS / iSTA(延迟计算)
Lee 迷宫布线 / 斯坦纳树 / 拥塞建模广度优先寻路、多端线网斯坦纳启发式、层分配iRT(全局→轨道→详细布线)
ILP 全局布线 / Pattern Routing整数规划/模式布线在容量约束下规划走线,控制 overflowiRT(全局布线)
这张表是本讲与前几讲的"接缝":前面学的是算法原理,iEDA 给出的是这些原理的开源 C++ 实现——可读、可改、可提 PR。

EDA 算法基础:iEDA 各 operator 的算法底座 📖 教材拓展

物理设计的核心子问题大多是 NP 困难,无法在多项式时间求全局最优;工程上靠启发式与数学规划求"足够好"的解。来源:《大规模集成电路设计方法》第10章 算法基础

① 计算复杂性 · NP-hard

布局、多端线网最优布线、分组斯坦纳树均为 NP 完全/困难问题——这是 iEDA 不追求"最优"而追求"高质量近似"的根本原因。

② 启发式 / 元启发式

模拟退火(SA,允许以概率接受劣解跳出局部最优)、禁忌搜索、遗传算法(GA:选择/交叉/变异)。对应 iFP 布图规划、宏单元摆放等离散优化。

③ 数学规划

线性规划 LP / 整数规划 ILP / 凸优化:直接对目标建模并优化,效率与解质量优于纯启发式。对应 iPL 解析布局、iRT 全局布线。

解析布局目标

$\min\ F = \alpha\cdot W(x) + \beta\cdot D(x) + \gamma\cdot C(x)$

W 线长、D 密度、C 拥塞;可微化后由梯度/拟牛顿法(CG、Nesterov)求解。

SA 接受准则

$P(\text{accept}) = \exp(-\Delta E / T)$,$\Delta E>0$ 时仍以概率接受

求解器(solver)是底座:iPL 的 CG/Nesterov、iRT 的 ILP/模式布线、iTO 的离散尺寸选择,本质都是"在约束下优化一个目标函数"。

可制造性设计(DFM):iDRC / iRT 的工程目标 📖 教材拓展

物理设计不仅要"功能/时序正确",还要"能被高良率地制造出来"。DFM 把制造工艺约束前移到设计阶段。来源:Handbook(制造/DFM)/《大规模集成电路设计方法》第11章

OPC 光学邻近校正修改版图补偿光刻效应(疏密偏差、线端回缩、拐角圆化),属 RET 分辨率增强技术
CMP + Dummy Fill化学机械抛光实现平坦化;插入虚拟填充图形改善金属密度均匀性
冗余通孔 / 天线效应双通孔降低开路风险;天线规则限制工艺中栅极积累电荷损伤
临界面积 → 良率CAA 临界面积分析估算随机缺陷致失效概率,预测晶圆良率
临界面积

$A_c = \int_0^{\infty} A(r)\cdot D(r)\, dr$

良率(负二项模型)

$Y = (1 + d\cdot A_c/\alpha)^{-\alpha}$

A(r)=半径 r 缺陷致失效的临界区域,D(r)=缺陷尺寸密度,d=单位面积缺陷数,α=聚集参数。

短路(extra-material)、开路(missing-material)、通孔阻塞(via block)是三类主要随机缺陷。缩短线长、减少通孔、加冗余通孔、控密度都是直接的良率优化手段。
对应 iEDA:iDRC 检查 14 类设计规则(含 Cut/Metal 间距、最小面积),iRT 在布线时最小化线长与通孔数——都是 DFM 思想的工程落地。

DTCO / STCO 与设计左移:iEDA 的研究价值 📖 教材拓展

先进工艺下,设计与工艺不再"各做各的",而是协同优化;开源、开放数据的 iEDA 正是这类研究的理想平台。来源:《大规模集成电路设计方法》第11章 DTCO/STCO

DTCO 设计-工艺协同优化

Design-Technology Co-Optimization:设计与工艺联合迭代(标准单元、布线层、设计规则)以提升性能、降低成本。

STCO 系统-工艺协同优化

System-Technology Co-Optimization:在 3D 集成等系统层面协同优化,从单芯片上升到系统级 PPA。

设计左移(Shift-Left)

把制造/工艺/可靠性约束提前到设计早期,减少后期返工——DFM、CAA、可靠性设计都是左移的体现。

为什么 iEDA 重要:DTCO/STCO 研究需要可修改的全流程工具 + 开放数据 + 可复现实验。商业工具黑盒难做,iEDA 开源 C++、提供四工艺节点与流片验证数据,正好支撑算法与工艺协同的前沿研究(也是 AI for EDA 的数据基础)。

iEDA 作为研究平台的四项支撑

开源 C++全流程可修改
4 节点110/28nm·Sky130·NG45
流片验证数据
可复现开放数据 + 脚本
从 DFM → DTCO → STCO,再到 AI for EDA——设计左移让工艺约束前移到设计早期,iEDA 提供了把这些研究思想落到真实全流程上的开放底座

本讲知识结构回顾

本讲沿"理念 → 基础设施 → 工具集 → 全流程 → 真实芯片 → 开源生态"六条主线展开,下面六张卡片即为各主线的核心要点回顾。

iEDA 概述

两层基础设施理念(Level 1 芯片设计,Level 2 EDA 研发);物理设计四步骤;iEDA = Infrastructure + Tools + 3次流片验证

基础设施四层

Parser(9种格式)→ Database(6类)→ Manager(Config/ChipData/Interactive)→ Interface(TCL/Python/GUI)

工具集(10 个)

iFP/iPDN → iNO → iPL → iCTS → iTO → iRT → iDRC → iSTA → iPA,覆盖 Netlist→GDSII 全链路

iFlow 全流程

支持 4 工艺节点;TCL/Python 串联;实例数 iFP→Routing +8,594,Filler 额外 +252,361

芯片实践

ysyx-04-01:28nm,1.5×1.5mm²,200MHz,>1.5M 门,11级流水+Cache,已流片;gcd/APU:Sky130 130nm 验证

开源生态

Gitee/GitHub 多平台;>0.3M 行代码;80+ 贡献者;500+ Star;2000+ 社区;支持 4 竞赛 + 5 高校 + 10余科研团队

iFP/iPDN布图+供电
iNO修扇出
iPL布局
iCTS时钟树
iTO/iRT优化+布线
iDRC/iSTA/iPA签核
一句话总结:iEDA 用"Infrastructure + Tools"把教科书算法工程化为开源 C++ 全流程,既能流片,也能做研究、可复现可扩展。

自测问题

思考以下问题,检验理解深度:

  1. iEDA 两层基础设施分别服务什么目标?为什么 Level 2 对 EDA 研发特别重要?
  2. iEDA Infrastructure 四层(Database / Manager / Interface + Tool)各自的职责是什么?
  3. iPL 全局布局采用 Nesterov 法或 CG 法,target_density 参数过高/过低分别会产生什么问题?
  4. iRT 三步布线(全局布线 → 轨道分配 → 详细布线)各阶段解决什么子问题?
  5. iSTA 与 PrimeTime 比较结果 $\text{mean}\approx 1.11$,这说明 iSTA 偏乐观还是偏悲观?工程上如何处理?
  6. 在 iFlow 数据分析中,为什么 iNO 阶段产生最多新网?CTS 阶段产生大扇出时钟网的原因是什么?

回答提示(按题对应)

① 两层定位

Level 1 面向芯片设计(工具+RTL+PDK),Level 2 面向 EDA 研发(SDK),后者让算法研究者免去重复造数据结构。

② 四层职责

DB 存数据、Manager 调度、Interface 提供多语言入口、Tool 跑算法。

③ 密度调参

过高→拥塞难布线;过低→面积浪费、线长增加;推荐 0.70~0.85。

④ 三步布线

全局规划路径、轨道分配到具体层、详细布线修 DRC。

⑤ 偏乐观

pt/ista>1 即 ista 偏小→偏乐观,签核需留余量。

⑥ 新网来源

iNO Fix Fanout 插大量缓冲器;CTS 时钟树天然产生大扇出时钟网。

实践作业:在 iEDA/iPL 上实现 CG 法并提 PR

背景:iPL 全局布局当前主要使用 Nesterov 加速梯度法。共轭梯度法(Conjugate Gradient,CG)在二次型问题上可实现超线性收敛,理论上对布局优化有优势。

① 理论准备

复习 CG 法数学原理,理解与最速下降法、Nesterov 法的异同,重点掌握 Fletcher-Reeves / Polak-Ribière 非线性变体

② 实现 CG 优化器

C++ 或 Python 实现 CG 优化器,满足 iPL 全局布局模块的接口规范(梯度输入、参数更新、收敛判断)

③ 集成测试

接入 iEDA/iPL 优化器框架,在 Nangate45 上的 ICCAD2012 电路运行,对比 Nesterov 法的收敛速度、线长质量、运行时间

④ 提交 PR

整理代码,以 Pull Request 提交到 iEDA 官方仓库(Gitee 或 GitHub),遵循 iEDA 代码规范和 PR 模板

代码入口:
src/operation/iPL/source/module/global_placer/
参考:NesterovOptimizer.cpp
按相同接口封装 CG 优化器,实现 CGOptimizer.cpp
评分要点:
  • CG 法数学推导正确
  • 代码符合 iEDA C++ 编码规范
  • 与 Nesterov 法对比实验数据充分
  • PR 描述清晰,包含实验对比图表
gitee.com/oscc-project/iEDA github.com/OSCC-Project/iEDA
数字电路物理设计 · 系列完结

感谢学习

从设计流程基础到布图规划、布局、布线,再到 iEDA 开源实践——物理设计全链路学习完成。

ieda.oscc.cc gitee.com/oscc-project/iEDA github.com/OSCC-Project/iEDA
Lecture 0设计流程基础
Lecture 1布图规划
Lecture 2布局
Lecture 3布线

李兴权 · 东南大学 · 数字电路物理设计课程  |  iEDA 开源 EDA 实践讲 · 完