数字芯片物理设计自动化
第 0 讲 :设计流程基础
李兴权
东南大学 集成电路学院
E-mail: x.li@seu.edu.cn
本讲路线图
掌握本讲,后续每个专题步骤都能找到正确的坐标。
1 · 芯片设计链路
系统规格→RTL→综合→物理设计→签核→制造,EDA 全程自动化支撑
2 · 物理设计流程
网表→几何版图,PPA 三角优化,主要步骤与辅助验证环节
3 · 标准单元库
预设计版图抽象、工艺节点、驱动强度、设计规则约束
4 · 关键文件格式
LEF / Liberty / SDC / .tf / DEF / SPEF / SDF / GDSII
5 · 四步骤总览
布图规划、布局、CTS、布线——及通孔、轨道、优选方向
6 · 总结与思考
核心要点回顾,四道章节思考题
数字芯片设计链路
从"我要什么功能"到"晶圆厂能生产",经历十个核心环节、数轮迭代。
EDA 工具全流程自动化
EDA 工具在每个阶段提供关键支撑,但正确约束仍需工程师深度理解。
| 设计阶段 | 代表工具类别 | 主要功能 |
|---|---|---|
| RTL 仿真 | HDL 仿真器 | 功能验证、覆盖率分析 |
| 逻辑综合 | DC、Genus | RTL→网表,PPA 优化 |
| 物理设计(P&R) | Innovus、IC Compiler II、iEDA | 布图规划、布局、CTS、布线 |
| 静态时序分析 | PrimeTime | 时序路径分析、多角多模 |
| 物理验证 | Calibre、PVS | DRC、LVS、ERC |
| 寄生参数提取 | StarRC、QRC | 提取 RC,生成 SPEF |
物理设计核心四步骤
物理设计度量指标:宏观指标(PPA)与具体度量
设计目标分两层:宏观上权衡 PPA 三角,微观上用可在优化器内循环高效评估的 具体度量 去逼近它。
① 宏观指标:PPA 三角(三者互相制约)
性能 · 频率 / 时序
功耗 · 动态 + 静态
面积 · 尺寸 / 利用率
② 具体度量指标(嵌入优化器内循环,被反复调用数百万次)
| 指标类别 | 典型度量 | 特点 |
|---|---|---|
| 线长 | HPWL(半周长线长) | O(n) 计算,与真实布线高度相关;布局主目标 |
| 线长 | RSMT(直角斯坦纳最小树) | 更精确,NP-Hard 但有有效启发式;用于布线阶段 |
| 时序 | Elmore 延迟(RC 树矩) | 可加、线性,物理优化内最流行时序估计 |
| 时序 | 建立 / 保持裕量 | STA 输出:WNS(最差负裕量)、TNS(总负裕量) |
| 功耗 | 动态功耗 $P=\alpha C V^2 f$ | α=活动率;C 正比线长;降 Vdd / f 均降功耗 |
| 面积 | 核心面积利用率 | 过高→拥塞;过低→尺寸大→成本高 |
$\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 线网三者相等)
$t_D=\sum_i R_i C_i$(RC 树矩)
$\min \sum_{e\in E} w(e)\cdot \text{WL}(e)$,$w(e)$ 由时序关键性决定(关键路径权重更高)。
辅助与验证步骤
核心四步之外,多种验证确保版图功能、时序、可靠性与制造全部合格。
| 步骤 | 英文术语 | 目的 | 在流程中的位置 |
|---|---|---|---|
| 划分 | Partitioning | 大规模设计拆子块,支持层次化物理设计 | 布图规划之前 |
| 时序优化 | Timing Optimization | Upsizing、缓冲器插入、重新布局修复违例 | 布局、CTS、布线全程 |
| 静态时序分析 | STA | 图论遍历时序路径,确认建立 / 保持时间满足约束 | 布线后签核;布局后预估 |
| 寄生参数提取 | Parasitic Extraction | 从版图提取 RC,写入 SPEF 供 STA 使用 | 布线完成后 |
| 电压降分析 | IR Drop | 确保电源网络压降在工作范围内 | 布图规划预估 + 布线后签核 |
| DRC | Design Rule Check | 验证版图几何符合工艺制造规则 | 布线后及最终交付前 |
| LVS | Layout vs. Schematic | 从版图提取网表与逻辑网表对比 | 布线后及最终交付前 |
标准单元库:抽象模型
库中每个单元是某种基本逻辑功能的预设计版图,对物理设计工具只暴露"带引脚的盒子"。
单元内部(透明)
CMOS 晶体管结构、多层掩模图案、阱接触/衬底接触、电源地金属条。由库厂家完整验证,工程师无需关心。
单元外部(可见)
矩形几何边界 + 命名引脚(Pin)。物理设计工具只看引脚位置、单元尺寸、电源/地接口,驱动布局和布线。
标准单元几何属性与驱动强度
| 几何属性 | 规则 | 意义 |
|---|---|---|
| 等高 | 库内所有单元高度相同(整数倍 CPP) | 任意横向排列,VDD/VSS 自动对齐 |
| 宽度可变 | 以 Site 宽度整数倍为单位 | 高驱动版本(X4)比低驱动版本(X1)更宽 |
| VDD/VSS 轨道 | 位于单元顶部和底部 | 相邻行翻转(Flip)共享电源轨,节省面积约 50% |
| 引脚层 | 输入/输出引脚通常在 Metal 1 暴露 | 布线工具在 M2+ 各层连线 |
Max Fanout / Max Transition / Max Capacitance 写入 .lib 文件,违例时工具自动 Upsize 或插入缓冲器(Buffer Insertion)。
工艺节点与晶体管尺寸
沟道长度 L(Gate Length)
决定开关速度和漏电流。L 越短→频率越高,但漏电控制难度增加。
沟道宽度 W(Gate Width)
决定驱动电流大小。W 越大→驱动电流越强,但面积越大。
扩散面积(Diffusion Area)
$\approx 5\times L\times W$。扩散面积越大→寄生结电容越大→切换速度越慢、功耗越高。先进工艺通过缩小 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 与 Liberty 示例
中间与输出文件
| 格式 | 扩展名 | 内容与角色 |
|---|---|---|
| DEF | .def | Die Area、布局行、轨道、单元实例坐标、线网连接、特殊线网(电源/地/时钟)。物理设计核心中间文件。 |
| SPEF | .spef | 布线后寄生 RC 提取结果。STA 工具读入后才能做精确时序签核。 |
| SDF | .sdf | 路径延迟标注,反标给门级仿真器做时序仿真。 |
| GDSII | .gds | 最终交给代工厂的完整多边形几何版图,驱动掩模制作。 |
步骤 ① 布图规划 · ② 布局
① 布图规划(Floorplan)
主要任务:确定 Die/Core Area → I/O 引脚位置 → 宏单元摆放 → 电源网络(Power Grid) → 电源域 → 物理填充单元(Tap/Endcap Cell)。
优化目标:最小化面积与关键路径延迟,最小化布线拥塞,合理分布功耗避免热点。
② 布局(Placement)
三阶段:全局布局(允许重叠,优化总体线长/拥塞) → 合法化(消除重叠、行对齐、Site 对齐) → 详细布局(局部微调,改善时序和线长)。
交互演示:解析布局求解器(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$。
步骤 ③ 时钟树综合(CTS)
时钟信号从单一时钟源分发到数万个触发器,CTS 构建平衡分发网络。
核心目标
· Skew 最小化:所有触发器几乎同时看到时钟沿
· Latency 最小化:缩短源到 FF 的路径延迟
· 资源最小化:减少缓冲器数量和时钟线长
树形结构
典型 H-tree / 鱼骨形 / 自顶向下合成结构,经多级时钟缓冲器逐级分发,树拓扑影响 Skew 与 Latency 的权衡。
交互演示: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)
通孔(Via)
Contact(Active→M1)→ Via1(M1↔M2)→ Via2(M2↔M3)……各 Via 层均有独立 DRC 规则(切割尺寸、切割间距、包围规则)。
布线后工具做冗余通孔优化(Redundant Via):用 2×2 通孔阵列替换单一通孔,降低电阻并提升良率。
布线轨道与优选布线方向
决定单位面积内可布线线网数量(布线资源密度)。某 GCell 内线网需求 > 可用轨道数 → 拥塞(Congestion)。
| 金属层 | 优选方向 | 典型用途 |
|---|---|---|
| M1 | 水平(H) | 单元内部连线、局部信号 |
| M2 | 垂直(V) | 单元间短距离连线 |
| M3 | 水平(H) | 中距离信号线 |
| M4 | 垂直(V) | 时钟树、中距离信号 |
| M5+ | 交替 H/V | 电源网络、长距离走线 |
文件格式完整对照表
| 格式 | 后缀 | 主要内容 | 流程角色 | 使用方 |
|---|---|---|---|---|
| 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 | .def | Die、布局行、轨道、单元坐标、线网 | 中间文件(版图状态) | 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 缩小:门越来越快,连线却越来越慢——这一"反转"重塑了物理设计算法的演化方向。
特征尺寸 $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 | 可编程逻辑 + 布线,无需流片 | 面积/性能/功耗最差 | 极低(无流片) | 最短(编译下载即可) | 原型验证、小批量、可重构系统 |
来源:《大规模集成电路设计方法》第1章(全定制设计、标准单元、IP 核、FPGA)
物理设计问题的形式化定义📖 教材拓展
物理设计的本质,是把抽象电路描述(网表)嵌入(embed)到硅片,在芯片上生成满足全部约束的几何版图。
$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$。先进工艺互连主导使时序收敛尤为困难,"大芯片的时序收敛尚未被完全解决"。
物理综合的闭环
综合与物理设计交叉迭代:版图布局结果回灌综合以提升估计精度,避免线负载模型导致的乐观偏差。
来源: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 交付代工厂。
来源:《大规模集成电路设计方法》第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 树启发式、协商重布线 |
启发式(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)
本讲核心知识点回顾
自测与思考题
课内自测
- 逻辑综合与工艺映射都输出门级网表,两者有何本质区别?
- 物理设计的输入是什么?输出是什么?它处于整个芯片流程的哪个位置?
- 为什么所有标准单元要设计成等高?这对布局有什么好处?
- Tech LEF 和 Cell LEF 分别描述什么?为什么要分开?
- 布线拥塞是怎么发生的?有哪些早期缓解手段?
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
本讲路线图
① 概述 & 任务目标
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
⑨ 混合尺寸 & 层次化
混合尺寸布局、层次化设计
布图规划概述——六大核心任务
Floorplanning:逻辑描述(网表)→ 物理描述(布图平面图)的映射
三个优化目标
最小化芯片面积
面积决定每片晶圆裸片数(DPW),是制造成本的关键因素。需在利用率与布线拥塞间取平衡。
最小化延迟
宏单元与关键逻辑之间的物理距离影响 RC 延迟。时序敏感路径对应的模块需尽量靠近。
最小化布线拥塞
局部布线资源不足导致绕线增加、时序变差甚至无法完成布线。合理分散宏单元可降低热点拥塞。
| 关键概念 | 决策影响 |
|---|---|
| 芯片尺寸 (Die Size) | 工艺节点、功能需求和成本共同决定;是 Floorplan 第一约束 |
| 门数量 (Gate Count) | 决定标准单元所需 Core 面积,是利用率估算的基础 |
| 金属层数量 | 影响布线资源总量和 PDN 方案;先进工艺可达 15+ 层 |
| 硬核 IP / 宏单元 | 形状固定,必须 FIXED;其位置主导周边布线拥塞 |
| 电源分配 (PDN) | 保证全芯片 IR Drop 和 EM 满足规范;可靠性基础 |
| 扁平 vs 分层设计 | 扁平:全局优化空间大;分层:模块化强但接口约束复杂 |
Floorplan 输入与输出
| 输入 | 必需 | 说明 |
|---|---|---|
| 设计网表 (Netlist) | 必需 | 门级网表,描述逻辑功能与连接关系 |
| 面积需求 | 必需 | 标准单元和宏单元总面积估算,确定 Core 尺寸 |
| 功耗需求 | 必需 | 各模块功耗分布,影响 PDN 和热点预判 |
| 时序约束 (SDC) | 必需 | 时钟频率、输入输出延迟约束 |
| 物理分区信息 | 必需 | 相关模块归属信息,便于空间聚集 |
| I/O 与宏单元布局 | 可选 | 设计师或封装需求预先指定的固定位置 |
| 输出 | 说明 |
|---|---|
| 芯片/模块面积 | Die 和 Core 的具体尺寸 |
| I/O 引脚位置 | 每个信号/电源引脚的精确坐标 |
| 宏单元位置 | 所有 Hard Macro 的坐标和方向(FIXED) |
| 电源网格 | VDD/GND 网格的金属层、线宽、间距规格 |
| 电源预布线 | 主干 Strap 已完成布线,信号布线资源明确 |
| 标准单元布局区域 | 剩余 Core 空间中标准单元可合法布局的行 |
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% |
利用率(Utilization)
$\text{Die Utilization} = (\text{标准单元面积} + \text{宏单元面积} + \text{IO 环面积}) / \text{Die 面积} \times 100\%$
反映整个芯片(含 IO 区)的面积利用情况
$\text{Core Utilization} = \text{标准单元面积} / \text{Core 面积} \times 100\%$
反映 Core 区中标准单元的密度
| 利用率范围 | 典型状态 | 风险与对策 |
|---|---|---|
| 60%–80% | 推荐范围 | 留足布线和时钟缓冲空间,可实现性好 |
| >80% | 高密度 | 布线拥塞和局部 Hotspot 风险显著增加 |
| >90% | 极高密度 | 几乎必然出现布线拥塞;需调大 Die 或缩减功能 |
| <50% | 过于保守 | 面积成本浪费;线长可能增加 |
长宽比(Aspect Ratio)与布线资源
AR = Core 高度 / Core 宽度 = 垂直布线资源 / 水平布线资源
AR = 1.0(正方形)
高度 = 宽度。水平与垂直布线资源平衡,最常见的起始选择。
AR > 1.0(竖高矩形)
高度大于宽度,增加垂直方向空间,即增加水平布线轨道数。适用于水平布线资源不足的场景。
AR < 1.0(横宽矩形)
宽度大于高度,增加水平方向空间,即增加垂直布线轨道数。适用于垂直布线资源不足的场景。
垂直布线资源少 → 增加宽度(AR < 1):更多列 = 更多垂直轨道
水平布线资源少 → 增加高度(AR > 1):更多行 = 更多水平轨道
自测
- Core 面积 $1\ \text{mm}^2$,标准单元总面积 $0.65\ \text{mm}^2$,Core 利用率是多少?
- 发现水平金属层(M2/M4)特别拥塞,应调整 AR 变大还是变小?
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 要求。
宏单元布局原则与四级布局约束
布局原则
| 原则 | 理由 |
|---|---|
| 推向芯片边沿 | 中心区域留给标准单元,布局算法在大矩形区域效果更好 |
| 高功耗宏单元避开中心 | 中心散热最差,高功耗模块放中心形成热点,影响可靠性 |
| 标记为 FIXED | 防止布局工具在后续步骤中误移动已手动确认的宏单元 |
| 考虑布线通道 | 宏单元间需留足够宽度供信号线穿越 |
四级布局约束(强度递增)
| 类型 | 英文名 | 强制程度 | 含义 |
|---|---|---|---|
| 软引导 | Soft Guide | 最弱:建议 | 尝试聚集,但无需指定区域,工具可忽略 |
| 引导 | Guide | 弱:指导 | 尝试布局在指定区域内,约束冲突时可违反 |
| 区域 | Region | 强:必须在内 | 单元必须在指定区域内,但允许其他单元共存 |
| 围栏 | Fence | 最强:独占 | 单元必须在指定区域内,且该区域排斥其他单元 |
布局障碍(Placement Blockage)与布线障碍(Routing Blockage)
布局障碍类型
硬障碍 (Hard Blockage)
绝对禁止布局任何单元(布局与优化阶段均禁)。常用于宏单元占用区。
软障碍 (Soft Blockage)
布局阶段不可用,优化阶段(如时序修复)可用,提供灵活性。
部分障碍 (Partial Blockage)
设较低利用率上限(如 20%),允许少量单元进入,作梯度过渡。
光晕 (Halo / Padding)
宏单元外围保护缓冲区,禁标准单元进入,保证边界布线通道。
布线障碍类型
全网障碍 (All Nets)
阻止所有网络(信号+电源+地)在该区域布线,用于宏单元正上方等完全禁布区。
信号网障碍 (Signal Nets Only)
仅阻止信号网布线,不影响 P/G;常用于电源 Strap 预留区。
P/G 网障碍 (PG Nets Only)
仅阻止电源/地网布线,信号网可用;用于特殊电源隔离。
电源配送网络(PDN)——层次化网格结构
PDN 是芯片的"动脉系统",保证全芯片 VDD/GND 稳定供电。
IR Drop(电压降)
$\text{IR Drop} = I \times R$,过大的 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%,严重超标!)
→ 必须加宽电源线或增加并联路径。
电迁移(EM)与电源线设计权衡
EM 三种失效模式
| 失效模式 | 物理机理 | 后果 |
|---|---|---|
| 开路 (Void) | 金属原子从某处迁移离开,形成空洞 | 导线断路,信号或电源中断 |
| 短路 (Hillock/Bridge) | 金属原子堆积,形成突起桥接相邻导线 | 导线间短路,电路失效 |
| 性能退化 | 导线截面变形,R 和/或 C 变化 | RC 延迟增加,时序逐渐劣化 |
EM 严重程度与电流密度正相关。工艺厂商规定每层金属的最大允许电流密度 (J_max),PDN 必须满足该约束。
IR Drop vs 布线资源权衡
| 设计选择 | 对 IR Drop/EM 的影响 | 对信号布线资源的影响 |
|---|---|---|
| 加宽电源线 | 降低 R → 减少 IR Drop;降低电流密度 → 改善 EM | 占用更多金属层资源,信号布线可用轨道减少 |
| 增加 Strap 数量 | 增加并联路径 → 降低等效电阻 | 大量 Strap 可能阻断信号布线通道 |
| 使用更高金属层 | 高层金属更厚 → 电阻更低 | 部分占用高层资源,但影响相对小 |
自测
- 层次化 PDN 网格的四个层次各承担什么角色?
- 将 IR Drop 示例中线宽从 100 nm 改为 1 μm,IR Drop 变为多少?
电路划分(Partitioning)概述 📖 教材拓展
展平式设计把整张网表直接切成若干互连的划分块(Partitions),是布图规划之前的"分而治之"第一步。
为什么要先划分?
降低规模
把 10⁶+ 单元的网表切成若干子块,每块独立 P&R,使后续布局/布线在可控规模上求解;多级框架基础。
减少模块间互连
把强连接的单元聚到同一块内,块间只留少量互连线(割边),缩短全局线长、降低拥塞。
支撑层次化设计
划分块可作为软模块灵活调整长宽比,与层次化逻辑模块一起进入布图规划。
核心度量与约束
$|E_c|$ = 两个划分块之间被切断的线网(超边)数量,越小越好。
$\alpha\cdot|V| \le w(C_1) \le \beta\cdot|V|$,二分常取 $\alpha=0.45$、$\beta=0.55$(45%/55%)。
防止退化为"全塞一边"的零割解。
$rc = |E_c| / ( w(C_1) \cdot w(C_2) )$
把平衡约束直接编进目标函数:分母在两块等大时最大,从而自动倾向均衡划分(Wei & Cheng 1991)。
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)流程
每趟需重算成对增益:$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) 增删。
KL vs FM 对比
| 维度 | Kernighan–Lin (KL) | Fiduccia–Mattheyses (FM) |
|---|---|---|
| 基本操作 | 成对交换两顶点 | 移动单个顶点 |
| 网表模型 | 图(多端网建模差) | 超图(直接处理多端网) |
| 每趟复杂度 | $O(n^2 \log n)$ | $O(P)$(P=引脚数,线性) |
| 选点数据结构 | 重算全部成对增益 | 增益桶 O(1) 取最大 |
| 跳出局部最优 | 回滚到最优前缀 | 回滚到最优前缀(同思想) |
| 平衡控制 | 等大交换天然平衡 | 移动时显式检查平衡比 |
自测
- 为什么 FM 能做到每趟 $O(P)$,而 KL 需 $O(n^2\log n)$?关键数据结构是什么?
- "临界网"为什么能减少增益更新的计算量?
多级划分框架(Multilevel)与谱划分(Spectral) 📖 教材拓展
现代划分的事实标准:先把图反复"粗化",在最小图上划分,再逐级"细化"回原图。来源:Handbook of Algorithms for Physical Design Automation(划分章,hMETIS / 谱方法)
多级框架三阶段
谱划分(Spectral Partitioning)
$L = D - A$(D 为度对角阵,A 为邻接矩阵)。
最小特征值 $\lambda_1=0$;第二小特征值 $\lambda_2$ 对应特征向量 $u_2$ 即 Fiedler 向量
按 $u_2$ 各分量相对其中位数的正负,把顶点二分为两块。
$u_2$ 把强连接顶点拉近、弱连接拉远,天然给出低割集划分。
宏单元布局问题与线长目标:半周长线长(HPWL)
宏单元布局问题:在芯片边界内无重叠布局 n 个宏单元,最小化线网总长度与外接面积。
输入:模块 $\{(w_i,h_i)\}$、线网集合 $\{e_k\}$(每个线网连接若干模块引脚)。
变量:每个模块的位置 $(x_i,y_i)$ 及可选朝向。
约束:两两无重叠、落在固定边界 $(W,H)$ 内。
目标:$\min \sum_k \text{HPWL}(e_k)$(+面积/拥塞项)。
$\text{HPWL}(e) = (\max_x - \min_x) + (\max_y - \min_y)$
O(引脚数) 计算,与真实曼哈顿布线长度高度相关,是布局内循环的主优化目标。
主流的宏单元布图算法
宏单元布图=在芯片边界内无重叠布局 n 个矩形块、最小化面积与线长。下面是四大求解范式与三个可交互演示。
| 范式 | 代表 | 适用场景 | 本页演示 |
|---|---|---|---|
| 整数规划 | MILP | 小规模(n < 50),精确最优 | — |
| 启发式算法 | SA + 切片树 / B*树 | 中等规模,工程首选 | ① 模拟退火 ② B*树装箱 |
| 连续优化(解析法) | PeF、UFO | 大规模,结合连续松弛 | ③ 解析法 |
| 深度学习 / RL | Google 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)
布图表示法发展历程
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)。进一步扩展表达能力与搜索效率。
规范化波兰表达式(Normalized Polish Expression)
切片树与逆波兰(后缀)表达式一一对应:对切片树进行后序遍历,将模块名作为操作数、切割方向(H/V)作为操作符,得到后缀字符串。规范化要求连续的操作符链中不允许出现相邻同类(即无连续 HH 或 VV),使每个切片结构与唯一的规范化表达式对应。
-- 示例: 模块切片布图 -- 非规范化(含 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)。
切片树(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 结构,无法表示所有合法矩形版图拓扑。
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$ 由轮廓线确定。
Packing 复杂度:$O(n)$(轮廓线扫描)
解空间大小:$O(n! \cdot 2^{2n} / n^{1.5})$——比序列对小,比切片树略大
优点:简单易实现,packing 快,解空间折中,可表示 non-slicing 压缩版图。
缺点:只能表示紧凑(compacted)结构,含白空间的版图需额外处理。
自测
- B*树中模块 P 是模块 Q 的左子节点,说明什么几何关系?右子节点呢?
- 为什么序列对的解空间 $(n!)^2$ 比 B*树大得多?
序列对(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 下方
非切片结构与扩展表示法
切片结构的局限
切片结构只允许递归二切(水平/垂直),约 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)和对齐约束
| 表示法 | 年份 | 可表示结构 | Packing 复杂度 | 特点 |
|---|---|---|---|---|
| 切片树 | 1986 | Slicing | $O(n)$ | 最简单;不完整 |
| O-tree | 1999 | 无白空间非切片 | $O(n)$ | 减少冗余解 |
| B*树 | 2000 | 压缩非切片 | $O(n)$ | 工程常用 |
| 序列对 | 1995 | 任意版图 | $O(n \log n)$ | 解空间最大 $(n!)^2$ |
| CBL | 2000 | 马赛克 | $O(n)$ | 极紧凑编码 |
| TCG/TCG-S | 2004 | 通用(含白空间) | $O(n)$ | 最强表达;支持预置 |
固定边界布图规划(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) | 多种群并行搜索,自动满足固定边界 |
Fixed-Outline 代价函数
$\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 插入
- 热管理——高功耗模块周围留白改善散热
自测
- Fixed-Outline 问题为什么比无边界问题更难(当边界很紧时)?
- 若代价函数中没有 FO_penalty 项,SA 会产生什么结果?
启发式方法——模拟退火(SA)求宏单元布局
在布图表示法(切片树 / B*树)上迭代搜索,面积+线长多目标下找高质量解;高温接受劣解以跳出局部最优。
交互:随退火迭代,宏单元被更合理摆放、互不重叠,右侧代价曲线逐步下降。
AI 方法——强化学习 + 图神经网络
问题建模
网表和宏单元表达成图(Graph):节点为宏单元,边为线网连接。每次布局一个宏单元为一个动作(Action),形成序贯决策过程。
训练过程
在大量历史设计上离线训练,GNN 学习网表特征,RL 智能体(A3C 策略网络)学习布局策略,以线长和拥塞为奖励信号。
推断部署
模型对新设计快速推断宏单元布局方案,数小时内得到高质量结果,传统方法可能需要数周人工迭代。
自测
- RL+GNN 方法中,"动作"(Action)和"奖励"(Reward)分别是什么?
- 与 SA 相比,RL+GNN 方法的优势和局限各是什么?
示意动图:GNN 编码网表图后,RL 策略网络逐步决策每个宏单元的放置坐标(Action),以 HPWL 改善为奖励信号。
解析法宏单元布局(Analytical Macro Placement)
解析法将布图规划建模为连续优化问题,使用数学优化方法求解模块坐标,与合法化步骤结合处理不重叠约束。
| 方法 | 年份 | 核心贡献 |
|---|---|---|
| Analytical | 2006 ASP-DAC | 固定芯片轮廓解析法布图规划奠基 |
| UFO | 2011 IEEE TCAD | 统一凸优化,支持预置模块 |
| PeF | 2023 IEEE TCAD | 泊松方程法,大规模固定边界布图 |
| 旋转感知 | ICCAD 2023 | 静电法 + 旋转/长宽比约束 |
$\min_{x,y}\ W(x,y) + \lambda\cdot D(x,y)$
W = 线长目标(HPWL 的光滑可微近似,如 log-sum-exp / WA);D = 密度惩罚(电势场能量 $\sum \varphi\cdot\rho$);$\lambda$ 随迭代增大,从松弛解过渡到合法(无重叠)解。
交互:线长引力先聚拢宏单元,密度权重 $\lambda$ 渐增再把它们推开去重叠(解析法迭代)。
多级框架贪心方法 & iEDA iMP
多级框架(Multi-Level Framework)
为应对大规模宏单元(n 很大时 SA 收敛慢),多级框架将问题分层处理:
代表工作:MB*树(DAC 2003)、Capo(ICCAD 2004)、IMF(IEEE TCAD 2008)、Defer(IEEE TCAD 2010)、Qinfer(2021)
iEDA iMP——融合策略
模拟退火(SA)
基于 B*树,M1/M2/M3 扰动,在离散解空间中广泛探索。
解析法精细化
SA 找到优质离散解后,通过连续优化进一步精细化坐标,改善面积和线长。
智能参数优化
自动调整 SA 温度参数、目标权重等超参数,减少人工经验依赖。
混合尺寸布局与层次化设计
混合尺寸布局(Mixed-Size Placement)
先放宏单元再布局标准单元
Floorplan 阶段先确定宏单元位置(FIXED),再在剩余 Core 区域进行标准单元布局。简单但可能不是全局最优。
划分法(Partitioning)
将宏单元视为超大标准单元,与标准单元一起参与全局布局优化,然后对宏单元合法化到固定位置。
层次化设计(Hierarchical Design)
| 层次 | 包含内容 | 物理设计任务 |
|---|---|---|
| 芯片(Chip) | P/G Pads、信号 Pad | 顶层 Floorplan:各 Block 位置、IO Pad 分布、顶层 PDN |
| 模块(Block) | Pins、内部标准单元和宏单元 | 各 Block 独立 P&R,完成内部布局和布线 |
| 集成 | 所有 Block 完成后回集成到顶层 | Block 间连接布线(Top-level Routing) |
工业布图规划实践(Industrial Floorplanning)
学术 vs 工业的 Gap
学术布图规划以面积/线长最小化为主,使用纯自动算法;工业布图规划以时序收敛和可布线性为首要目标,允许甚至鼓励人工干预。
| 维度 | 学术研究 | 工业实践 |
|---|---|---|
| 主要目标 | 最小化面积 & HPWL | 时序收敛、可布线性、PDN 完整性 |
| 芯片边界 | 无边界(自由最优化) | 固定边界(Die 尺寸预先确定) |
| 人工介入 | 全自动 | 人机协同(手动约束 + 自动优化) |
| 层次结构 | 扁平为主 | 层次化(Block 分区,各 Block 独立 P&R) |
| 附加任务 | 一般不考虑 | PDN 综合、引脚分配、时序预算、buffer 规划 |
层次划分工作流
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 + GNN | Nature 2021 | 训练后推断快 | 训练成本高,泛化有限 |
| 工程全流程 | iEDA iMP(SA→解析法→智能参数) | 开源 iEDA | 兼顾质量与自动化 | 依赖工艺适配 |
本讲知识图谱回顾
| 节 | 核心问题 | 必须掌握的关键词 |
|---|---|---|
| 1 概述 | Floorplan 做什么、为什么重要 | 6 大任务、3 个目标、扁平 vs 分层 |
| 2 输入输出 | Floorplan 的信息边界 | 必需输入(网表/面积/功耗/SDC)、6 类输出 |
| 3 尺寸·利用率·长宽比 | 如何量化 Floorplan 参数 | Core/IO 区、Row/Site、Core Utilization 公式、AR 调优规则 |
| 4 TapCell & Latch-up | CMOS 闩锁失效机理与防护 | 寄生 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 融合策略 |
综合自测题
自测一:利用率与 IR Drop 计算
- 某芯片: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 利用率是否处于推荐范围?
- 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% 预算?
自测二:表示法与算法
- 给定序列对 S+ = (A, C, B, E, D);S− = (C, A, E, B, D),判断:A 和 C 的相对位置?B 和 E 的相对位置?
- 给定逆波兰表达式
A B V C H D E V H,描述对应版图拓扑,并对最长操作符链施加 M2 扰动,写出新表达式。 - 模拟退火中,$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} = 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\,\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}$ → 略超预算,需加宽/并联电源线。
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 在上)。
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
$P = \exp(-\Delta E/T_{10}) = \exp(-50/598.7) \approx \boxed{0.92}$(约 92%)
数字芯片物理设计自动化
第 2 讲 :布局
李兴权
东南大学 集成电路学院
E-mail: x.li@seu.edu.cn
本讲路线图——布局(Placement)
把综合后的数百万标准单元在 Core 区合法摆放,平衡线长、时序、拥塞与功耗。
1 · 布局概述
前置条件、三大目标、三步骤(全局→合法化→详细)
2 · 线长模型
HPWL、团/星/斯坦纳、P2WWL、LSE/WA 光滑化
3 · 解析布局
二次线长、力导向、Laplacian、GORDIAN→FastPlace
4 · 现代全局布局
密度约束、电场法、CG / Nesterov 梯度求解
5 · 划分/多级布局
最小割递归二分、多级布局
6 · 合法化
Tetris / Abacus、带障碍与固定区域
7 · 详细布局
行内优化、最优区域、单元翻转
8 · 驱动式布局
时序驱动、拥塞驱动、Benchmark 评测
布局概述(Placement Overview)
布局为每个标准单元在核心区内找到"合法"的位置——不重叠、对齐行/格点,并优化线长、时序与可布线性。
前置条件
核心区已定义
Core Area 由布图规划确定,标准单元只能在核心区内放置。
宏单元已固定
IP 宏(Memory、Analog 等)已 FIXED,布局不移动它们。
放置障碍已定义
Placement Blockage 标记完毕,单元不得进入。
电源网格已预布线
VDD/VSS 已布线,单元需对齐到正确行。
三大优化目标
布局三步骤
将所有标准单元散布(Spread Out)到核心区,允许单元重叠。快速找到全局最优大方向,兼顾线长、时序、拥塞,但不要求满足合法约束。
以全局布局结果为起点,消除所有单元重叠,将每个单元对齐到合法行(Row)与格点(Site),同时最小化单元移动量。
在合法化结果上,通过行内移动、跨行交换、单元翻转等局部微调进一步优化线长、时序、可布线性和功耗,同时保持合法性。
布局方法分类(Placement Methods)
三大类核心思想,现代 EDA 工具通常组合使用。
基于划分(Partition-based)
递归地将芯片区域和网表进行二分(Binary)或四分(Quadrisection),每次划分后对子区域分别布局。
代表:Min-cut 二分 + QP 布局
特点:层次化、可并行;但切割误差随深度累积。
迭代改进(Iterative)
从初始布局出发,通过随机或启发式操作(交换、移动)不断改进目标值。
代表:模拟退火(SA)、力导向法、解析法
特点:可避免局部极值;SA 质量好但慢;解析法快但需光滑化。
构造法(Constructive)
从芯片中心放置少量核心单元,将高度连接的相邻模块逐步放置在周围,向外扩展。
特点:速度快,适合粗粒度初始布局;局部最优质量有限。
| 方法 | 核心思想 | 速度 | 质量 | 典型工具 |
|---|---|---|---|---|
| 划分法 | 递归二分+Min-Cut | 快 | 一般 | 早期工业 EDA |
| 模拟退火 | 概率接受劣解 | 慢 | 好 | TimberWolf |
| 解析布局 | 连续优化+梯度下降 | 极快 | 优 | RePlAce, DREAMPlace |
线长评估:HPWL(半周长线长)
Half-Perimeter Wirelength(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 光滑化后可作为梯度优化目标函数。
线长评估: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)$$
一维取"到重心偏差和"、另一维取"包围盒跨度",两组合取较小者。
其他线长评估模型(多引脚线网)
线长模型计算案例(各模型 vs 真实布线)
以一个 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) | 说明 |
|---|---|---|---|
| HPWL | 9 | −25%(低估) | 下界,计算最快 |
| 团 Clique | 12.5 | +4% | 二次型代理,规模 $O(k^2)$ |
| 星型 Star | 16.8 | +40%(高估) | 到重心曼哈顿距离之和 |
| P2WWL | 12.8 | +7% | min(一维偏差和 + 另一维跨度) |
| RSMT 斯坦纳 | 12 | 0%(最接近) | 最贴近真实,NP-hard |
| 真实直角布线 | 12 | 基准 | 无拥塞时 = RSMT;拥塞/绕障时略增 |
线长模型与光滑化函数对比(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)$$
P2WWL 线长模型的光滑化(LSE / WA + $L_p$)
$$\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 再光滑)
迭代布局与模拟退火(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)$ 为时序临界度等权重。
子问题分解(Handbook 视角)
解析布局:二次线长模型与团模型
核心思想:用二次(平方)函数代替含 max/min 的 HPWL,使目标可微、可用线性代数精确求解。
$W_2(x_i,x_j)=(x_i-x_j)^2$ (x 方向;y 方向同理)
k 引脚网用完全图近似:$\tfrac{k(k-1)}{2}$ 条 2 引脚虚拟边,每条权重 $\tfrac{1}{k-1}$(避免大网过度计权);门视为无尺寸点。
例:4 引脚 → 6 条边、每条权重 1/3。
$W=x^{\top}Ax-2b^{\top}x+\text{const}$,令 $\partial W/\partial x=0$ → $Ax=b$(A 为对称正定稀疏 Laplacian),共轭梯度法(CG)高效求解。
$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 与求解
连接矩阵 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)高效迭代
二次布局数学基础:二次型、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)$,可分别求解。
$$\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$ 编码可移动单元与固定单元的连接。
$$Q_x x + c_x = 0 \;\Rightarrow\; Q_x x = -c_x$$
即课件中 $Ax = b$($A=Q_x$,$b=-c_x$)。
求解器
迭代法,利用 Q 的稀疏性,每步只做稀疏矩阵-向量乘,适合超大规模。
Cholesky 分解(Q=LL'),适合中小规模或重复求解。
经典解析布局器发展脉络 📖 教材拓展
从"二次+划分约束"到"二次+扩散力"再到"非线性+密度罚",解析布局的散开机制不断演进。
| 布局器(年代) | 核心思想 | 散开 / 去重叠机制 | 贡献 / 局限 |
|---|---|---|---|
| GORDIAN(1991) | 二次规划 + 递归二分 | 用区域中心约束(center-of-gravity)把单元逐层"拉"进子区域,再二分 | 奠定"二次+划分"范式;线性目标变体 GordianL 质量更优但更慢 |
| Kraftwerk | 力导向(二次近似) | 在 Qx=−c 上叠加恒定扩散力 f,按密度场迭代推开单元 | 最知名力导向布局器;无需显式划分,全局散开 |
| FastPlace | 二次 + 固定点 + 单元搬移 | 用固定点(伪单元/伪线网)等效常力 + cell shifting 局部均匀化 | 速度快、可扩展;固定点比常力更数值稳定 |
| RQL / mPL / FDP 等 | 多级 + 解析/力导向精炼 | 粗化降规模,细层叠加扩散力 / 密度罚精炼 | 多级框架成为大规模布局标配(见多级布局页) |
基于划分的布局(Partition-based Placement)
递归地将大问题分解为小子问题,每步仅处理一个子区域,计算代价可控。
对布局区域按垂直/水平切割线一分为二,将门分配到两个子区域,目标:最小化跨切割线线网数(Min-Cut)。
对门排序(按坐标、连接关系),平衡地分配到两个半区域,可用 FM 算法(Fiduccia-Mattheyses)高效实现。
对每个子区域独立构造 QP 矩阵。子区域外的门投影到边界,作为伪垫片(Pseudo Pads)传递外部拉力。递归执行直到区域足够小。
多级布局技术(Multilevel / Multiscale Placement)
多级方法(Multilevel)通过层次化"粗化 → 求解 → 展开"三步大幅降低运行时,同时保持布局质量,是现代百亿晶体管设计的关键技术(据 Handbook Ch19)。
三步 V-Cycle 流程
将高度连接的单元聚类为"超单元"(Cluster),逐级合并,问题规模从 N → N/k → … → N_coarsest。聚类策略:基于位置的聚类(邻近 + 强连接优先)、多级 FM 聚类等。
在最粗层(最小问题规模)上运行 QP/SA/解析布局,快速得到全局最优方向。粗层求解给出超单元的位置,作为细层的初始解。
将超单元位置插值展开到各成员单元,在每个细层运行局部优化(详细布局/行内移动),逐级恢复到原始粒度。混合尺寸设计中,宏单元在每层提前合法化。
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
电场法(ePlace / Electronic Field)
将单元密度类比为电荷分布:高密度区 → 高电位 → 向外电场(排斥力),驱动单元全局散开。
密度能量:$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$ 即密度梯度。
现代全局布局模型(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$ = 密度阈值。
$\text{HPWL} = \sum_{e}(\max|x_i-x_j| + \max|y_i-y_j|)$
光滑化:LSE 或 WA(见前页),使 WL 可微。
$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$ 推散去重叠。
解析布局求解器:CG 与 Nesterov(求解过程与对比)
把"线长 + 密度"写成可微目标 $f(x)$,用一阶方法求极小;病态曲面下动量法显著加速。
$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)$
沿共轭方向 + 线搜索步长;对二次型收敛快。
$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 默认求解器。
合法化(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-Region Legalization)
先进工艺(FinFET、GAA)设计规则使布局区域可能变成多连通图(非矩形、带孔)。
- 布局区域 = 多段可用矩形区域的并集。
- 单元需在行的合法段内重新排列,不得跨越不可用段。
- 算法需考虑行内分段约束,显著增加问题复杂度。
详细布局(Detailed Placement)
在合法化结果上进行局部精细优化,保持合法性的同时改善线长、时序、拥塞和功耗。
行内/跨行操作
单元翻转(Cell Flipping)
对单元做水平镜像(Horizontal Mirror),引脚相对位置改变,影响连接线网长度。
详细布局:最优区域(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$
总负时序裕量
最坏负时序裕量
时序驱动布局方法
对时序关键线网赋予更高线长权重 w,使优化器优先缩短关键线网长度。可直接叠加到任何线长驱动布局算法上,实现简单。
根据路径延迟约束添加数学约束(路径延迟 $\le T_{\text{target}}$),通过带约束规划求解坐标。精确但计算代价高,适合关键路径数量有限的场景。
对时序传播过程进行光滑化(softmax 近似 max),将 TNS/WNS 作为全局布局目标的一部分,与线长、密度一起用梯度下降优化。
在布局阶段通过预测线网布线形状(L 形、Z 形、斯坦纳树)估算 RC 延迟,无需真实布线。比 HPWL 更准确,有效减少时序违规。
拥塞驱动布局:RUDY / TOF / MOF
拥塞的定义
在 bin 内:需求布线资源 > 可用资源(金属层数 × 轨道数)。
轻度拥塞
布线器可绕道,但绕线使实际线长 > 估算线长,RC 延迟增加。
严重拥塞
布线无法完成(DRC 短路/断路);整个设计流程失败。
总溢出量
全局拥塞总量
最大溢出量
局部最严重拥塞
$$\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(构造法) | 慢 | 高 | 实际运行全局布线器,获取真实资源使用情况 |
拥塞修复:Cell Inflation 与修复策略
间接优化:单元膨胀(Cell Inflation)
在拥塞热点区域,临时膨胀该区域内单元的面积,使全局布局器被迫将其散开到低密度区域。膨胀后重新运行全局布局,迭代直到拥塞满足要求,最终恢复单元真实大小。
| 工具 | 年份 | 膨胀单元选择 | 膨胀比率 |
|---|---|---|---|
| SimPLR | 2011 | 拥塞最高前 5% 网格内单元 | 简单加权函数 |
| Ripple | 2013 | 所有拥塞网格内单元 | 简单分段函数 |
| POLAR | 2014 | 拥塞最高前 10% 网格内单元 | 固定 10% |
| RePlAce | 2019 | 所有拥塞网格内单元 | 超线性函数 |
Floorplan 层面修复策略
顶层端口调整
切换金属层;调整端口位置(分散、重排、移边)。
宏单元调整
改变宏位置或旋转;增大宏间距;添加 Blockage/Halo。
核心区调整
调整核心长宽比;增大整体芯片面积。
电源网格优化
优化层次分配和宽度,减少对信号布线通道的占用。
交互:拥塞区(红)单元逐步膨胀+扩散到稀疏区(绿),峰值密度下降,为布线留出空间。
标准 Benchmark 与评测方法 📖 教材拓展
学术界用公共基准电路在同一平台上量化对比布局器——ISPD 系列竞赛设定了现代布局能力的"门槛"。
常用基准套件
关键评测指标
$$\min\; \text{WL}(x,y)\quad\text{s.t.}\quad D_b(x,y) \le M_b,\ \forall b\in B$$
scaled-HPWL:违规越多缩放因子越大,防止"靠超密换短线"。
布局全流程:核心要点回顾
| 阶段 | 目标 | 主要方法 | 关键指标 |
|---|---|---|---|
| 全局布局 | 散开单元,优化总线长 | 解析布局(WA线长+密度罚+Nesterov) | HPWL、密度 $\rho_b$ |
| 合法化 | 消除重叠,对齐行/格点 | Tetris / Abacus / 最小费用流 / QP | 总移动量(位移$^2$之和) |
| 详细布局 | 局部精细优化 | 行内/跨行交换、翻转、最优区域 | HPWL、TNS/WNS |
| 时序驱动 | 关键路径延迟满足约束 | 线网权重、VR 虚拟布线、可微分法 | TNS、WNS、Slack |
| 拥塞驱动 | 避免布线资源超额 | RUDY 估拥塞、Cell Inflation | TOF、MOF |
HPWL
$=\Delta X + \Delta Y$;实际线长的下界;通过 LSE/WA 光滑化后可微。
模拟退火
$\exp(-\Delta L/T)$ 接受劣解;降温收敛;避免局部最优但速度慢。
解析布局
二次线长 + 团模型;$Ax=b$;密度惩罚 + CG/Nesterov 梯度下降。
ePlace/RePlAce
电场法 DCT 求泊松方程;密度惩罚梯度平滑;增广拉格朗日收紧约束。
自测题与思考
自测清单(能否独立回答?)
- 布局三步骤各自的目标和约束是什么?为什么不能直接做"精确布局"?
- 计算:4 引脚线网 A(2,5)、B(8,1)、C(5,7)、D(3,3),HPWL = ?(提示:找 x/y 方向的 max/min)
- SA 中当前 $T=10$,$\Delta L=15$,接受变差解的概率 $=\exp(-15/10)\approx\,?$;若 $T=1$,概率如何变化?说明了什么?
- 二次布局中,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$)。
- Tetris 和 Abacus 合法化的核心区别?什么场景下 Abacus 质量显著优于 Tetris?
- RUDY 如何估算 bin 的布线密度?相比完整 GR,RUDY 的主要优势和局限?
- 某芯片 3 条路径 Slack 分别为 −0.3ns、+0.1ns、−0.5ns,TNS = ?,WNS = ?
- Cell Inflation 的工作原理和迭代流程是什么?膨胀比率的设计对结果有何影响?
数字芯片物理设计自动化
第 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 总结与自测
核心知识梳理、数字口诀、自测练习
§1 布线概述——流程位置
布线(Routing)紧跟布局(Placement)之后,将网表中的所有逻辑连接在芯片金属层上实现为物理导线。
输入、输出与优化目标
输入 Inputs
- 逻辑网表(门级)
- 布局结果(单元坐标、行信息)
- 技术文件(LEF/DEF、工艺层规则)
- 时序约束(SDC)
- 电源规划(Power Plan)
输出 Outputs
- 已布线 DEF / GDSII
- DRC 报告
- STA 时序报告
- 寄生参数文件(SPEF/RSPF)
- SI 信号完整性报告
优化目标
零 DRC 违规
满足所有间距、宽度、Via 等规则
时序收敛
所有路径 Setup/Hold $\text{Slack} \ge 0$
最小化总线长
降低 RC 延迟和功耗
控制串扰与天线
保证信号完整性与可制造性
先进节点布线挑战
§2 GCell 与全局布线网格(GRG)
全局布线将芯片 Die 区域抽象为均匀矩形单元 GCell,构成三维容量图(Capacity Graph)。
Cap(e) = ⌊GCell_Width / Track_Pitch⌋ × Layer_Count − Blockage_Tracks
金属层方向约定与布线资源
| 金属层 | 优选方向 | 典型用途 | 轨道间距 |
|---|---|---|---|
| M1 | 垂直(V) | 单元内部连线、引脚接入 | 工艺最小 |
| M2 | 水平(H) | 单元间短距离互联 | 最小 ×1.0 |
| M3 | 垂直(V) | 中等距离信号 | 最小 ×1.0–1.5 |
| M4–M6 | H/V 交替 | 时钟、总线 | 放大 1.5–2× |
| M7+(顶层) | 根据需求 | 电源网络、长距离信号 | 放大 4–10× |
Capacity(e) = (穿越该边的可用 Track 数) × (层数)
布线需求 Demand(e) 超过 Capacity(e) 即溢出(Overflow),对应右图红色边。
§3 全局布线(Global Routing)概述
GR 不关心具体 Track 分配,只为每条 Net 规划经过哪些 GCell 的大致路径,生成"导航地图"。
直角斯坦纳树(RSMT)与线长模型
| 树模型 | 说明 | 线长估算 | 复杂度 |
|---|---|---|---|
| HPWL 半周长线长 | 引脚 Bounding Box 半周长,快速下界估算 | 下界(最短) | O(n),最快 |
| MST 最小生成树 | 直接连接所有引脚,不添加 Steiner 点 | 比 HPWL 长 ~15% | O(n log n) |
| RSMT 直角斯坦纳树 | 在非引脚位置添加 Steiner 点,进一步缩短线长 | 比 MST 短约 11% | NP-hard(精确),Flute 近似 O(n) |
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%,百万引脚秒级完成,工业级速度
Hanan 网格与直角斯坦纳树(交互演示)
Hanan 定理(1966):对任意引脚集合 P,存在一棵最优直角斯坦纳树(RSMT),其所有斯坦纳点均落在 Hanan 网格上——即所有水平/垂直网格线的交叉点。
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)
两点布线:Lee 迷宫算法(BFS Routing)
Lee 算法是最经典的最短路布线算法,基于 BFS 波前扩展,保证找到最短曼哈顿路径(若存在)。
大规模芯片(GCell 可达 $1000 \times 1000$)直接应用开销过大,通常只用于 DRC 局部修复。
A* 搜索与 Pattern 布线
A* 路径搜索
g(n):起点到 n 的实际代价(已走路径资源消耗)h(n):n 到终点的启发估计(曼哈顿距离)$h(n) \le$ 真实剩余代价时保证最优(可容许启发式)
A* 启发式搜索:受曼哈顿距离引导,朝终点定向扩展,遍历格子远少于 Lee 的全向 BFS 波前
Pattern 布线(3 种典型形状)
L 形(1次转弯)
2 种候选,覆盖大多数简单连接,速度最快(微秒级)
Z 形(2次转弯)
1 个中间弯折点,用于穿越障碍
U 形(3次转弯)
大幅绕行,用于局部避障
| 算法 | 扩展节点 | 最优性 | 典型用途 |
|---|---|---|---|
| Lee 迷宫 | 多(全向波前) | 保证最短 | DRC 局部修复 |
| A* 搜索 | 少(定向) | 可容许启发式下最优 | 两点主力搜索 |
| Pattern | 极少(固定形状) | 不保证 | 80%+ 简单网络 |
多线网布线策略(Multi-Net Routing)
全局布线同时处理数百万条网络,需要策略克服顺序布线的"先来先得"偏差。
| 策略 | 思想 | 优点 | 缺点 |
|---|---|---|---|
| 顺序布线 Sequential Routing | 按优先级(Slack/线长/扇出)排序,依次布线 | 实现简单,可控性强 | 受顺序影响大,后布网络资源不足 |
| 并发布线 Concurrent Routing | 同时考虑多条网络,联合优化资源分配 | 全局资源分配更均衡 | 实现复杂,规模受限 |
| 最小代价流 MCF / ILP | 建模为最小代价流或整数规划,全局最优 | 理论最优 | 计算代价高,仅用于小规模局部优化 |
| 协商式布线 Negotiation-based | 多轮迭代,逐轮提高拥塞区代价(History Cost),引导网络自然分散 | 收敛性好,工业主流 | 需多轮迭代,时间较长 |
拆线重布(Rip-up and Reroute,RnR)
当布线完成后仍存在溢出时,对拥塞区导线拆除后重新布线,是全局布线的核心优化循环。
PathFinder 协商布线与全局布线分区(交互演示)
PathFinder(McMurchie & Ebeling 1995)是现代工业全局布线的基础框架,通过多轮协商逐步消除拥塞,而非强制回避冲突。
cost(e) = b(e) × p(e) × h(e)
b(e):基础代价(线长/延迟);p(e):当前占用惩罚(> 容量时急剧增大);h(e):历史代价(反映长期拥塞)
拥塞分析与溢出度量
Congestion(e) = Demand(e) / Capacity(e)
$\text{Congestion} > 1.0$ 时发生溢出
TOF = Σ max(0, Demand(e) − Capacity(e))
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,称为层分配。
§4 详细布线(Detail Routing)概述
详细布线在 GR 的路径基础上,精确地将每条导线分配到具体 Track,生成满足所有 DRC 的物理版图。
引脚接入(Pin Access Generation)
接入点 Access Point (AP)
在单元引脚几何图形上找出满足 DRC 的合法连接点。一个引脚通常有多个 AP,布线器从中选最优。
On-grid 对齐
AP 必须对齐 Track 网格,否则 Via/Wire 无法连接。先进工艺 M1 引脚有时需要专用 Jog 才能对齐 Track。
引脚冲突解决
相邻单元引脚互相干涉时,通过单元重排、Via 类型选择或 Jog 引线解决引脚接入冲突(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
详细布线 DRC 规则类型
| 规则类型 | 描述 | 典型参数/说明 |
|---|---|---|
| 最小间距 Minimum Spacing | 同层相邻导线边缘距离 | 工艺最小特征尺寸量级 |
| 最小宽度 Minimum Width | 单条导线最小宽度 | M1 通常为工艺最小尺寸 |
| 端到端 EOL End-Of-Line | 导线端部与相邻导线间距,比体间距更严格 | 先进工艺达数十条 EOL 规则 |
| Notch 凹口 | 同一导线内部凹口的最小尺寸 | 先进节点必须满足 |
| Jog 折线 | 短折线长度与间距约束 | M1/M2 Jog 规则复杂 |
| Via 规则 | 通孔尺寸、间距、金属延伸(Enclosure) | 每种 Via 类型有独立规则 |
| 密度规则 Density | CMP 要求金属密度在范围内 | 通常 20%–80%,窗口检查 |
| 颜色感知 MPT | 多重图案光刻,导线须满足着色约束 | ≤10nm 节点强制要求 |



Search & Repair:DRC 修复迭代
布线完成后残留的 DRC 违规通过 Search & Repair 迭代修复。
全局布线的优化建模:ILP / 多商品流 / 拉格朗日松弛 📖 教材拓展
PathFinder 是工程化的协商迭代框架;从理论看,全局布线本质是一个带容量约束的组合优化问题,可用 ILP / 多商品流 / 拉格朗日松弛精确建模。来源:Handbook Ch23/Ch32 Routing
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。
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$;溢出边乘子持续上升。
§5 时钟树综合(CTS):偏差、抖动、插入延迟、有用偏差 📖 教材拓展
时钟树综合(Clock Tree Synthesis)为芯片所有寄存器提供稳定、低延迟、均匀分布的时钟,是物理设计中决定主频与功耗的关键环节。来源:《大规模集成电路设计方法》第8章(李兴权);Handbook Ch42 Clock
时钟偏差 Clock Skew
同一时钟到达两个寄存器的到达时间差 $\text{skew}_{ij}=t_i-t_j$。全局偏差=全片最大值;局部偏差=同一时序路径两端之差。理想目标→零偏差。
插入延迟 / 时钟延迟 Latency
时钟源到末端触发器的传播延迟。延迟越短、网络越快,对工艺偏差越鲁棒(小相位延迟→偏差占比小)。
抖动 Jitter
同一接收点时钟周期的时间波动,分随机抖动+确定性抖动。源自电源噪声、温度、缓冲器延迟变化、耦合串扰。网络结构对 jitter 影响很小,主要由电源网络/时钟源决定。
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$。
零偏差时钟树算法: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 的延迟模型基础 |
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
// DME 合并段构造(ASCII 示意) // 合并段 = 斜率±1 的曼哈顿弧 ms(X) ◣ ms(Y) \◣ ◢/ \ ◣ ◢ / d_X → \ ◣◢ / ← d_Y \ /\/ ms(Z) = ╳ (两倾斜矩形交集) 零偏差合法放置位置集 // 延伸:有界偏差 BST-DME 用合并区域 MR // 替代合并段 MS;有用偏差 UST-DME // 用约束图 CG 求可行偏差范围 FSR
时钟分发拓扑对比: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(网格多点驱动,就近短接)
┼──┼──┼──┼──┼
┼──▣──┼──▣──┼ ▣=驱动/接收点
┼──┼──┼──┼──┼ 各交点电位被拉平H 树时钟分发:对称递归 H 形使时钟源到每个叶节点的路径等长 → 规则阵列下近似零偏差
时钟功耗、门控时钟(Clock Gating)与缓冲器平衡 📖 教材拓展
时钟网络是芯片最大的功耗与翻转源——每周期翻转两次,驱动巨量寄存器输入电容与长导线。来源:《大规模集成电路设计方法》第8章(李兴权);Handbook Ch42
缓冲器插入与平衡(降 skew 三原则)
§6 电源/地网络(PG Network)布线:环 + 条带 + 网格 📖 教材拓展
电源网络由众多电源线/地线在金属层上规划构成,通过"打供电环 + 供电条 + 网格"把稳定电压送到每一个单元,是先于信号布线的预布线。来源:《大规模集成电路设计方法》第8章(李兴权);Handbook Ch44 Power
// PG 网络层次(剖面示意)
顶层 ╔════════ Power Ring ════════╗
║ ┃ ┃ ┃ ┃ (Strap)║
中间 ║──╂──┼──╂──┼──╂──┼──╂──║ Mesh
║ ┃ │ ┃ │ ┃ │ ┃ ║
║──╂──┼──╂──┼──╂──┼──╂──║
单元 ╠══▣══▣══▣══▣══▣══▣══╣ VDD Rail
╚══▣══▣══▣══▣══▣══▣══╝ VSS Rail
┼ = Via Array(过孔阵列层间连接)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)
§7 串扰效应(Crosstalk Effects)
功能性故障(Glitch / Crosstalk Noise)
激励线(Aggressor)翻转在受害线(Victim)上耦合感应脉冲,脉冲幅度超过噪声容限时导致逻辑值翻转(功能性错误)
延迟变化(Crosstalk Delay)
同向翻转:耦合电容等效减小(速度加快);异向翻转:等效电容加倍(速度减慢),Setup 分析最坏情况
C_eff = C_self + k × C_coupling
$k=0$(同向翻转)· $k=1$(Aggressor 静止)· $k=2$(异向翻转,最坏情况)
串扰缓解手段
屏蔽线(Ground Shield)
在关键信号线两侧放置接地屏蔽线,阻断耦合
间距增大
超过 DRC 最小间距,削弱耦合,代价是面积增加
中继器插入
在长线中间插入 Buffer,将 $L^2$ 延迟降为线性
层约束
关键信号走低干扰层(避免与 Clock 相邻)
Elmore 延迟模型与互连延迟计算
T_D(i) = Σ_k R_k × C_downstream(k, i)
对路径上每段电阻 $R_k$,乘以其下游所有电容之和
T ≈ 0.69 × R_driver × C_load + 0.38 × r × L × c × L
延迟与线长 $L^2$ 成正比,长线须插入中继器(Repeater)
时序驱动布线(Timing-Driven Routing)
将时序收敛融入布线决策,确保关键路径满足 Setup/Hold 时序要求。
§8 ECO 工程变更令(Engineering Change Order)
| 特性 | Non-Freeze ECO | Freeze ECO |
|---|---|---|
| 单元布局 | 允许重新布局所有单元 | 已放置单元坐标冻结,不可移动 |
| 使用场景 | 设计仍在迭代,时序违规较多 | 设计接近完成或已签核,修改极少量逻辑 |
| 新增单元 | 可在任何合法位置放置 | 只能放在预留 ECO Spare Cell 或空白 Site |
| 布线影响 | 可全局重布线 | 只在局部微小区域重布线,其余保持不变 |
| 层次结构 | 可跨层次修改 | 通常只改布线层(Metal-only ECO) |
| 重新流片代价 | 全层重新制版 | Metal-only ECO:只需重制 Via/Metal 层掩模版,节省数百万美元 |
§9 芯片收尾:天线效应(Antenna Effect)
在等离子体刻蚀工序中,已刻蚀的上层金属将积累的电荷"天线式"汇聚到晶体管栅极,造成栅氧击穿损伤。
Antenna Ratio = Metal_Area_Above_Via / Gate_Oxide_Area
超过工艺规定上限(通常数百至数千)时必须修复
修复方案
插入保护二极管
反向二极管为积累电荷提供泄放路径。最常用,但增加面积和引脚电容
跳层布线(Via Jumping)
将超标导线"跳"到更高金属层绕过问题段再回来,打断下层积累长度
切断导线(Wire Cutting)
超长连续导线中间切断,分段各自满足规则,切断点用另一层连接
冗余通孔(Redundant Via / Double Via)
单通孔存在随机缺陷(粒子污染)导致开路的风险,插入冗余通孔(Double/Triple Via)可大幅提高成品率(Yield)。
双 Via 失效率 $\approx p^2 = 10^{-8}$,降低 4 个数量级
Metal Fill、Slotting 与 CMP 平坦化
CMP 问题
碟形凹陷(Dishing)
宽金属线中心低于边缘,导致电阻增大
侵蚀(Erosion)
介电层过度研磨,影响上层光刻精度
过刻蚀
孤立金属区域附着力不足,制造中脱落
解决方案
计算光刻、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% |
耦合噪声(Crosstalk Noise)量化分析与屏蔽策略
Noise_peak ≈ λ × C_coupling / (C_self + C_coupling) × V_aggressor
$\lambda = C_\text{coupling}/C_\text{total}$;$\mu$ = aggressor 信号斜率;噪声与耦合电容成正比
I_total = Σ_j (λ_j × µ_j × C_coupling_j)
多条激励线同时翻转时噪声叠加,最坏情况更严峻
屏蔽与间距策略量化
| 手段 | 降噪效果 | 代价 |
|---|---|---|
| 增加间距 $2\times$ 最小 | $C_\text{coupling} \downarrow$ ~40–60% | 面积增加 ~1 Track |
| 接地屏蔽线(GND Shield) | 理论隔离 >95% | 面积代价:1 条保护线 |
| 插入中继器(Repeater) | 将耦合分段,降至单段 | 功耗/面积/延迟 |
| 层变换(Layer Change) | 换垂直层使平行长度归零 | Via 电阻增加 |
Wire Spreading 与 Filler Cell
Wire Spreading(导线扩展)
适当增大导线间距超过 DRC 最小间距,主要目的:
Filler Cell(填充单元)
填满标准单元行末尾空白 Site,三大作用:
芯片收尾——问题全景对比
| 问题 | 原因 | 解决方案 | 关键指标 |
|---|---|---|---|
| 天线效应 | 等离子体刻蚀中金属积累电荷损伤栅氧 | 插入 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 免疫测试通过 |
| 标准单元行空位 | 布局后行末空白 Site | Filler 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——流片前必须完成的收尾步骤
布线算法横向对比
| 算法 | 完备性 | 最优性 | 时间复杂度 | 典型应用场景 |
|---|---|---|---|---|
| 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)
- 为什么全局布线使用 GCell 网格而不是直接在 Track 上搜索?
- Hanan 定理的核心内容是什么?它如何将 RSMT 问题的搜索空间从无穷压缩到有限?
- A* 算法中,如果启发函数 h(n) 高估了真实代价,会有什么后果?
- PathFinder 协商布线中,历史代价 h(e) 的更新规则是什么?它如何防止拥塞振荡?
- Track Assignment 在全局布线和详细布线之间扮演什么角色?
- 为什么先进节点 EOL 间距规则比体间距规则更严格?
- 串扰 Miller 效应中,$k=2$ 对应哪种工作场景?对 Setup 时序有何影响?
- Elmore 延迟与线长 L 的关系是什么?为什么长线需要插入中继器?
- OPC(光学邻近校正)解决什么问题?为什么 EUV 节点仍然需要 OPC?
- 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 项目定位
iEDA 是覆盖 Netlist → GDSII 全链路的开源 EDA 平台,已完成 3 次完整芯片流片验证:
官网:ieda.oscc.cc
基础设施第一层:Parser 与 Database
iEDA 支持数字物理设计常用的全部标准文件格式:
六类 Database
Design DB
网表实例、引脚、网、模块层次
Layout DB
物理位置、方向、布局区域
Tech DB
工艺层次、间距规则、Via 定义
Timing DB
单元延迟、时序约束(SDC)
Parasitic DB
布线寄生 R/C(SPEF)
Network DB
连接关系、扇出、逻辑锥体
基础设施第二层:Manager
Platform Manager 协调各工具的初始化、数据输入、处理流程与输出,并提供统计与评估能力。
Config / ChipData / Interactive
Config(配置管理)
统一管理各工具参数,支持 JSON 格式,工具按需读取各自配置块
ChipData(芯片数据)
维护跨工具共享的芯片全局数据:Die/Core 边界、工艺层、单元库
Interactive(交互控制)
提供命令行与脚本接口,支持按需调用各物理设计步骤,灵活编排
统一评估指标(Evaluation Metrics)
Manager 为各工具提供一致的质量评估接口,便于横向对比与流程内监控:
基础设施第三层:Interface
TCL 接口
与商业 EDA 工具一致的脚本语言,支持批处理完整物理设计流程
Python 接口
面向算法研究者,在 Python 环境直接调用 iEDA 工具和数据 API
GUI 界面
可视化版图浏览与交互,支持 DRC 结果可视化、布线检查
# 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 / DEF | Layout DB + Tech DB |
| Liberty (.lib) | Timing DB |
| SDC | Timing DB(约束) |
| SPEF | Parasitic DB |
| VCD | 功耗分析输入 |
| GDSII | 最终版图输出 |
iEDA 工具集——10 个成熟工具,覆盖全链路
| 工具 | 全称 | 主要功能 | 输入→输出 |
|---|---|---|---|
| iFP | 布图规划 | Die/Core 尺寸、I/O 放置、宏单元规划、物理单元插入 | Netlist .v → iFP.def |
| iPDN | 电源分配网络 | 构建 VDD/VSS 网格,Power Stripe & Ring | iFP.def → PDN.def |
| iNO | 网表优化 | 修复高扇出(Fix Fanout),缓冲器插入,驱动优化 | DEF+网表 → 优化网表 |
| iPL | 布局 | 全局(Nesterov/CG)→ 合法化 → 详细布局 → 填充单元 | iFP.def → iPL_result.def |
| iCTS | 时钟树综合 | 时钟分配树,优化 Skew/Latency,插缓冲器 | iPL.def → iCTS.def |
| iRT | 布线 | 全局布线→轨道分配→详细布线,优化 WL/时序/拥塞/DRC | iCTS.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 Sizing | iPL/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 个。
三步插入的物理结构
iFP.def(版图骨架)→ 含 PDN 的供电网格 → 扇出修复后的网表,交给 iPL 布局。
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_threads | CPU 线程数 | 8/16 |
| max_buffer_num | 最大可插缓冲器数 | 35000 |
内部步骤:initial_place → global_place → legalize → detail_place → filler
交互演示:iPL 全局布局的梯度优化
iPL 全局布局把"线长 + 密度"写成可微目标,提供 共轭梯度(CG) 与 Nesterov 两种求解器。
- Nesterov 动量法在病态曲面收敛更快,是现代解析布局(ePlace/RePlAce)主流做法。
- 本讲实践作业即"用 C++/Python 实现 CG 并在 iEDA/iPL 上测试、提 PR"。
梯度下降(GD)
沿负梯度直走,病态曲面易"之字形"震荡、收敛慢。
Nesterov 动量
先按动量"前瞻"再校正梯度,显著减少迭代数。
$\min\ F = W(x) + \lambda\, D(x)$
iPL 布局结果与单元扩散演示
iCTS——时钟树综合
iCTS 构建时钟分配树,以最小化 Skew 和 Latency 为核心目标,同时控制时钟功耗。
CTS 阶段贡献 +3,284 个新网(87 个时钟大扇出网,>32 pin),是时钟树结构的正常产物。
交互演示:iCTS 时钟树综合(H 树拓扑)
iCTS 构建时钟分发网络,平衡偏斜(skew)、延迟(latency)、缓冲器与线长。
- H 树以递归等长分支实现近似零偏斜(zero-skew)。
- 工程中再结合缓冲器插入、聚类与 useful-skew 做微调。
Skew(偏斜)
不同寄存器时钟到达时间之差,H 树等长分支使其趋近 0。
Latency(延迟)
根到叶的传播时延,由缓冲器级数与线长决定。
iRT——三步布线流程
动画:多端线网的 Steiner 最小树构造——全局布线阶段连接策略
布线拥塞(Congestion)交互演示
iRT 拥塞热图解读
拥塞(Congestion)热图反映每个布线格点(GCell)的布线需求超出容量(Overflow)的程度:
冷色(蓝/绿)
布线容量充足,无溢出风险
暖色(橙/红)
布线需求超出容量,需算法调整走线或疏散单元
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(最小面积)
iSTA——签核级静态时序分析
iSTA 与商业工具 PrimeTime(pt)精度对比:
核心特性
iTO 时序优化 · iPA 功耗分析
iTO——三类优化
max cap/slew/wirelength/fanout 四类驱动违反,Buffer Insertion + Cell Sizing
插延迟缓冲器(Hold Buffer),增加信号到达时间
Rebuffer + Split Load + Cell Upsizing,对 WNS 最差路径提升速度
iPA——功耗分析
支持布局前/中/后各阶段评估功耗,采用均值功耗模型(Average Model):
# iPA 核心 API
buildGraph → readVCD
→ propagateToggleSP
→ calcLeakagePower
→ calcInternalPower
→ calcSwitchPower
→ reportPower
iFlow——Netlist → GDSII 全流程框架
iFlow 是 iEDA 提供的完整芯片物理设计流程框架,支持多种 EDA 工具组合、多 PDK 工艺,一键流转至 GDSII。
环境资源
iEDA 工具本体
Gitee/GitHub 下载源码编译,或使用预编译二进制包
工艺库文件(PDK)
TechLEF + Std Cell LEF + Liberty + SDC + SPEF(可选)
设计网表
综合后 Verilog 网表(.v),来自 Yosys / DC
支持工艺节点
一键流转的价值
可复现
配置 + 脚本固化在仓库,任何人都能复跑同一设计得到一致结果
可分步
既支持一键 Netlist→GDSII,也可单步调试任一阶段,便于教学与研究
可换工艺
仅替换 PDK 与配置即可在不同节点间迁移,无需改动流程脚本
动画:iFP→iPL→iCTS→iRT→iSTA→GDSII 六阶段依次点亮,迷你版图逐步成型
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 参数配置——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
}
}
}
过高(>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 设计为例,各阶段实例数 / 网数 / 引脚数变化规律:
| 阶段 | 报告核心内容 |
|---|---|
| iFP | Die/Core 面积、利用率、I/O Pin 数 |
| iNO | 高扇出网数量变化、插入 Buffer 数 |
| iPL | HPWL、密度分布、拥塞热图、时序 WNS/TNS |
| iCTS | Skew 分布、Latency 统计、Buffer 数 |
| iTO | DRV 违反数、Setup/Hold WNS/TNS |
| iRT | 总布线线长、金属层使用率、DRC 数 |
| iSTA | Setup/Hold Slack、关键路径列表 |
| iPA | Leakage/Internal/Switching 功耗(mW) |
实践案例:ysyx-04-01 RISC-V 处理器
处理器架构
11 级流水线 + I-Cache / D-Cache,支持 Linux 启动
片上外设 IP
UART · VGA · PS/2 · SPI · SDRAM · 2× PLL
iEDA 完成
iFP → PDN → iPL → iCTS → iTO → iRT → iDRC → GDSII
社区用户案例:gcd · APU(Sky130 130nm)
gcd——最大公约数加速器
工艺:Skywater 130nm(Sky130,完全开源)
面积:0.15mm × 0.15mm
功能:整数最大公约数硬件计算器,EDA 工具验证基准设计(benchmark)
APU——算术处理单元
工艺:Skywater 130nm(Sky130,完全开源)
面积:0.45mm × 0.45mm
功能:整数 + 浮点运算单元,规模适中,可验证 iEDA 多种优化能力
iEDA 开源社区与影响力
| 平台 | 地址 |
|---|---|
| Gitee(主仓库) | gitee.com/oscc-project/iEDA |
| GitHub | github.com/OSCC-Project/iEDA |
| Gitlink | gitlink.org.cn/OSchip/iEDA |
| OpenI | openi.pcl.ac.cn/OSCC/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 基础设施,实现成果转化
开源影响力一览
商业工具 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 教学 |
经典算法 → 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 | 整数规划/模式布线在容量约束下规划走线,控制 overflow | iRT(全局布线) |
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)求解。
$P(\text{accept}) = \exp(-\Delta E / T)$,$\Delta E>0$ 时仍以概率接受
可制造性设计(DFM):iDRC / iRT 的工程目标 📖 教材拓展
物理设计不仅要"功能/时序正确",还要"能被高良率地制造出来"。DFM 把制造工艺约束前移到设计阶段。来源:Handbook(制造/DFM)/《大规模集成电路设计方法》第11章
$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=单位面积缺陷数,α=聚集参数。
DTCO / STCO 与设计左移:iEDA 的研究价值 📖 教材拓展
先进工艺下,设计与工艺不再"各做各的",而是协同优化;开源、开放数据的 iEDA 正是这类研究的理想平台。来源:《大规模集成电路设计方法》第11章 DTCO/STCO
DTCO 设计-工艺协同优化
Design-Technology Co-Optimization:设计与工艺联合迭代(标准单元、布线层、设计规则)以提升性能、降低成本。
STCO 系统-工艺协同优化
System-Technology Co-Optimization:在 3D 集成等系统层面协同优化,从单芯片上升到系统级 PPA。
设计左移(Shift-Left)
把制造/工艺/可靠性约束提前到设计早期,减少后期返工——DFM、CAA、可靠性设计都是左移的体现。
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余科研团队
自测问题
思考以下问题,检验理解深度:
- iEDA 两层基础设施分别服务什么目标?为什么 Level 2 对 EDA 研发特别重要?
- iEDA Infrastructure 四层(Database / Manager / Interface + Tool)各自的职责是什么?
- iPL 全局布局采用 Nesterov 法或 CG 法,
target_density参数过高/过低分别会产生什么问题? - iRT 三步布线(全局布线 → 轨道分配 → 详细布线)各阶段解决什么子问题?
- iSTA 与 PrimeTime 比较结果 $\text{mean}\approx 1.11$,这说明 iSTA 偏乐观还是偏悲观?工程上如何处理?
- 在 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 非线性变体
用 C++ 或 Python 实现 CG 优化器,满足 iPL 全局布局模块的接口规范(梯度输入、参数更新、收敛判断)
接入 iEDA/iPL 优化器框架,在 Nangate45 上的 ICCAD2012 电路运行,对比 Nesterov 法的收敛速度、线长质量、运行时间
整理代码,以 Pull Request 提交到 iEDA 官方仓库(Gitee 或 GitHub),遵循 iEDA 代码规范和 PR 模板
src/operation/iPL/source/module/global_placer/参考:
NesterovOptimizer.cpp按相同接口封装 CG 优化器,实现
CGOptimizer.cpp
- CG 法数学推导正确
- 代码符合 iEDA C++ 编码规范
- 与 Nesterov 法对比实验数据充分
- PR 描述清晰,包含实验对比图表
感谢学习
从设计流程基础到布图规划、布局、布线,再到 iEDA 开源实践——物理设计全链路学习完成。
李兴权 · 东南大学 · 数字电路物理设计课程 | iEDA 开源 EDA 实践讲 · 完