布线深入:全局/详细布线、天线效应、DFM 与制造友好
更新时间:2026-09-25。上一篇 寄生 RC 抽取 讲到,布线完成后的几何才是真正决定寄生参数的输入;本篇就顺着这条线走进 P&R 的最后一道大工序——布线(routing)。布线在早期节点几乎只需要回答一个问题:「连不连得上」;到了先进节点,它要同时回答四件事:能不能 100% 连通、时序/SI 满不满足、设计规则清不清零,以及这块版图在真实工厂里良率高不高。最后这一问,就是 DFM(Design for Manufacturing,可制造性设计)。
本文要回答的问题
- 布线为什么要拆成 global routing 和 detailed routing 两步?各自解决什么问题?
- 拥塞(congestion)是怎么被预估出来的,为什么布局阶段就要为它留余量?
- 天线效应(antenna effect)到底是什么物理过程,为什么靠跳层和加二极管能修?
- DFM 都包含哪些具体动作:冗余通孔、线端扩展、密度均匀、dummy fill、光刻友好,各自防的是什么失效?
- 为什么布线器报 DRC clean,签核 DRC 还可能报错,两者如何迭代收敛?
一、两阶段布线:先在网格上分配,再画具体几何
布线器面对的是几百万到上亿条需要连通的线,如果一开始就让每根线在连续平面上找具体路径,搜索空间大到无法计算。工业界的做法是把问题切成两层抽象,先用粗粒度的全局规划把「每条线走哪片区域」定下来,再在每个小区域内做精细走线。
全局布线(global routing) 先把整个布线区域划分成规则的网格,每个格子叫一个 gcell(global cell,全局单元)。它并不生成真实金属,只在 gcell 构成的图上做寻路:每条 net 被分配一条由一串 gcell 组成的通道,相邻 gcell 之间的边界(edge)有一个可容纳走线的容量(capacity),由该层的轨道数、通孔资源和障碍决定。当穿过某条边界的走线数超过容量,就出现了拥塞溢出(overflow)。全局布线的核心产物是一张拥塞图和一份给详细布线的布线规划(route guide)。
详细布线(detailed routing) 在每个 gcell 内部、沿着全局布线给的 guide,把每条线落实到具体的金属轨道和具体通孔坐标上,必须严格满足 foundry 的设计规则:线宽、间距、通孔包围(enclosure)、拐角方式等。详细布线通常还会细分出 track assignment(轨道分配)和最终 detail route 两步。
读这张图有两个关键点。其一,全局布线与详细布线之间不是单向传递:详细布线发现某些 gcell 内部规则冲突或资源不够时,会把局部区域拆掉重走,这就是 rip-up & reroute(拆线重布),严重时还要回头让全局布线重新分配,甚至回推到布局。其二,图的终点是签核 DRC 而不是布线器自带的 DRC——这个区别在第四节展开,它是先进节点流片前最容易踩的坑之一。
| 对比项 | 全局布线 global routing | 详细布线 detailed routing |
|---|---|---|
| 工作对象 | gcell 构成的离散网格 | 连续坐标上的真实轨道 |
| 产物 | 走线路径规划、route guide、拥塞图 | 真实金属线段与通孔几何 |
| 是否检查设计规则 | 只看网格容量,不看具体规则 | 严格满足线宽/间距/包围等规则 |
| 主要风险 | 拥塞溢出、长距离绕线 | DRC 违规、通孔冲突、局部间距不足 |
| 计算粒度 | 粗、快,可快速重跑评估布局 | 细、慢,数据量极大 |
二、拥塞:为什么布线问题要在布局阶段解决
gcell 边界的容量是有限的,穿过的线一多就会拥塞。全局布线用 overflow 的数量和热图(congestion map)来量化:红色区域表示走线需求远超轨道容量,通常出现在大量总线汇聚穿越的窄通道、宏单元之间的缝隙、高密度标准单元堆的正上方。
拥塞的可怕之处在于它的连锁反应。拥塞区里的线被迫绕远,线长增加直接抬高电阻电容、拖慢时序;为了绕开拥塞插入的大量通孔和弯折又挤占相邻层资源;最终无法在规则内连通时,只能回退到布局,把相关单元推开或重新规划电源条带和宏单元位置。所以工程上有一条经验:布线暴露的问题,绝大多数要在布局阶段预防。布局工具本身就带拥塞预估(congestion-driven placement),通过虚拟全局布线估计每个区域的走线需求,把过密的单元提前摊开;floorplan 阶段宏单元之间预留的布线通道宽度、pin 出口方向,也都是按拥塞预算定的。
判断拥塞严重程度不能只看 overflow 的绝对值,还要看分布:零星几处轻微 overflow 通常详细布线能靠局部拆线消化;大片连续的高溢出区域(尤其是跨越多个 gcell 的红带)基本意味着布局或 floorplan 必须改。另外要区分「布线拥塞」和「引脚拥塞(pin congestion)」——后者是标准单元引脚太小太密、局部通孔资源不足,即使上方金属富余也走不出来,这种问题要靠调整局部单元密度或换引脚分布更疏的单元库来解。
三、天线效应:刻蚀过程中长金属积累的电荷
天线效应(antenna effect,更正式的名字叫 plasma-induced gate oxide damage)不是说芯片在工作时像天线一样接收信号,而是一个制造过程中的损伤问题。
在金属刻蚀工序中,工艺腔体里充满等离子体(带电粒子)。当某根金属线正在被刻蚀成型、又恰好通过通孔或直接连接到一个 MOS 管的栅极时,这根暴露在等离子体中的金属就像一根天线,会收集电荷;刻蚀进行到中途,连接栅极的金属面积可能非常大,而栅极下面是极薄的栅氧化层,积累的电荷无处泄放就会在栅氧上形成高压,轻则使栅氧参数漂移、阈值和漏电流劣化,重则直接击穿栅氧,晶体管永久失效。关键在于:刻蚀是逐层做的,当下层金属刻蚀时,上层金属还不存在,所以违规判定看的是「单根金属在该层刻蚀那一刻连接到栅极的金属面积」与栅极面积之比,即 antenna ratio,而不是最终版图里上下层连通后的总面积。
修复手段对应两种思路。第一种是跳层布线(metal hopping / jumper insertion):把那根过长的同层金属截断,中间通过一小段更高层金属连过去——刻蚀低层时长金属被高层通孔切成了两段,任一段连接栅极的面积都降下来了;代价是多打两个通孔。第二种是加天线二极管(antenna diode / protection diode):在连栅极的金属上就近挂一个反向偏置的二极管,刻蚀积累的电荷通过二极管泄放,正常工作时它不导通;这种方法在高层资源紧张、不方便跳线时常用,标准单元库里通常有现成的天线二极管单元。foundry 的 rule deck 里对每一层都规定了允许的 antenna ratio 上限(不同工艺常见量级从几十到几百不等),先进工艺栅氧更薄,限制也更严。
图里要注意因果方向:等离子体→长金属→栅氧是损伤路径,两个修复分别切断「面积」和「电荷积累」这两个条件。天线检查属于 DRC 的一类(antenna DRC),但它不像普通几何规则那样只看相邻图形,而要沿连通关系累计面积,因此常单独出报告。
四、DFM:让「画得出来」变成「造得出来且良率高」
DRC clean 只说明版图没有违反确定性的几何规则,并不代表它在真实产线上好造。光刻的分辨率已经逼近物理极限,刻蚀、化学机械抛光(CMP,Chemical Mechanical Polishing)每一步都有偏差,版图图形的细微差别会被这些偏差放大成开路、短路或参数漂移。DFM 就是在设计侧主动选择对这些偏差不敏感的图形。常见手段有以下几类:
冗余通孔(redundant via / double via)。层间连接的通孔在制造中存在一定堵孔(void)概率,单通孔一旦堵死,整条线就开路。冗余通孔在空间允许时并排放两个甚至三个通孔连接同一对金属,按失效独立估算,双孔同时失效的概率是单孔的平方量级,显著降低开路失效率;同时并联通孔还略降电阻。工具一般在布线后自动插入,但会受间距和金属包围限制。
线端扩展与包裹(end-of-line extension / via enclosure)。刻蚀和套刻(overlay,层与层之间的对准误差)存在偏差,金属端点、通孔包围量留足裕量,避免偏差后通孔只挂住金属边缘甚至脱离,造成接触电阻飙升或开路。
金属密度均匀化与 dummy fill。CMP 抛光的去除率取决于局部图形密度:金属密的地方和空旷区抛光速率不同,会产生碟形凹陷(dishing)和侵蚀(erosion),使表面不平、后续层无法做准。foundry 规定每层金属在一定窗口内的密度必须落在区间内,空旷区域由工具自动填入不连接信号的 dummy metal(金属填充)来补齐。dummy fill 不是越密越好,它会增加对邻近信号线的耦合电容,所以先进流程采用 timing-aware / signal-aware fill:离关键线远的地方填实、靠近关键线的地方填稀疏或留空,并在填充后重新抽取寄生、增量检查时序与 SI。
光刻友好图形与 OPC。亚波长光刻下,掩模上的图形投到晶圆会发生光学邻近畸变:线端回缩、拐角变圆、密集线与散线的实际线宽不一致。foundry 侧通过 OPC(Optical Proximity Correction,光学邻近校正)在掩模上加辅助图形来补偿,而设计侧要遵守对光刻友好的规则:优先用同方向、间距一致的规整走线,避免奇特拐角、突兀宽窄变化和长距离孤立线;推荐间距(recommended spacing/pitch)往往比 DRC 的最小间距宽,按推荐值走的线良率明显更高,只有面积实在紧张时才用最小值。
| DFM 手段 | 防范的制造失效 | 代价/副作用 |
|---|---|---|
| 冗余通孔 | 单通孔堵孔导致开路 | 占金属包围面积、略增局部密度 |
| 线端扩展/包围 | 套刻偏差导致通孔接触不良 | 增加少量金属面积 |
| dummy fill | CMP 密度不均、碟形凹陷 | 增加耦合电容,可能影响时序/SI |
| 推荐间距/规整走线 | 光刻畸变、随机桥接/断线 | 占用更多布线资源与面积 |
| 宽线/开槽(slotting) | 大金属上电流与 CMP 问题 | 版图稍复杂 |
五、route-DRC 与 signoff-DRC:两套引擎的收敛问题
一个真实事故式的坑:布线器报告 DRC 全部清零,流片前用 foundry 签核 deck 一跑,却冒出成百上千条违规。原因是布线器内部为了速度,用的是简化的、二值化的规则模型(够宽/不够宽),而签核 DRC 用的是 foundry 提供的完整 rule deck,包含大量依赖上下文的复杂规则:表格化的间距(与并行长度、是否同侧、电压区域相关)、密度规则、多层交互、DFM 推荐规则等,两者对同一版图的判定天然存在差异。
正确的流程是让两套引擎迭代收敛:布线完成后用签核 deck 跑一轮,把违规按类别导回物理实现工具做针对性修复(很多工具有 signoff-DRC 驱动的自动修复),再跑签核 DRC,循环直到确定违规为零;末期剩余的个别违规,如果确认是 deck 误报或有明确工程依据,可以走 waiver(豁免)流程,但 waiver 必须逐条记录理由并得到 foundry/IP 提供方认可,不能由设计者自行放宽。LVS 同理:最终要确认抽取网表与签核网表一致,ECO 阶段任何手改都必须重跑 DRC 与 LVS。
时序方面,布线是时序闭环的最后一环:详细布线后提取真实 SPEF,做最终的 MMMC 时序签核;此时 OCV/AOCV/POCV、耦合串扰都按真实几何计算,布线阶段就应通过时序驱动布线(timing-driven routing,给关键路径更高的走线优先级、更短的路径)和 SI 优化,避免把问题全留到 物理 ECO。
这一篇在知识体系里的位置
本篇位于物理实现流程的末端:上接 寄生 RC 抽取,与 MMMC 时序签核、OCV/AOCV/POCV 在签核阶段并行;布线段控制串扰的效果最终由下一篇 SI 串扰毛刺与噪声 签核确认,剩余违规则进入 物理 ECO 和 DRC/LVS 物理验证。
总结
布线分两步:global routing 在 gcell 网格上分配通道、用容量模型提前暴露拥塞,detailed routing 把线落到真实轨道和通孔并满足设计规则,拥塞问题要尽量回布局阶段预防;天线效应是刻蚀时连接栅极的长金属在等离子体中积累电荷、威胁薄栅氧,靠跳层截断面积或加天线二极管泄放修复;DFM 用冗余通孔、线端裕量、密度均匀化加 dummy fill、推荐间距和光刻友好图形,把 DRC clean 的版图进一步变成良率高的版图,且 dummy fill 后必须重抽寄生检查时序;布线器内置 DRC 与 foundry 签核 deck 模型不同,必须以签核 DRC 迭代清零为准,时序与串扰也要在真实几何上闭环,全部收敛后才允许 tape-out。