【Backend Flow工程实践 21】DRC / Antenna / Metal Fill:为什么 route 之后还远没有结束?

作者:Darren H. Chen

方向:Backend Flow / 后端实现流程 / EDA 工具工程 / Physical Verification

demo:LAY-BE-21_drc_antenna_fill

标签:Backend Flow、EDA、DRC、Antenna、Metal Fill、Routing、Physical Verification、Signoff、Layout Closure

很多人第一次学习后端实现时,会把 routing 当作最后一步。

直观理解是:

text 复制代码
floorplan 完成
placement 完成
CTS 完成
routing 完成
然后芯片版图就结束了

但在真实后端工程中,route 完成远远不等于版图结束

因为 route 只是把连接关系变成金属线和 via,而这些几何图形还必须满足制造规则、电气规则、可靠性规则和签核工具规则。换句话说,routing 的输出只是一个"候选版图",不是一个可以直接交付的制造版图。

route 之后通常还要面对三类关键问题:

text 复制代码
DRC        : 几何设计规则是否满足工艺制造要求
Antenna    : 等离子刻蚀过程中是否可能损伤 gate oxide
Metal Fill : 金属密度是否满足 CMP 和制造均匀性要求

这三件事情看起来像 route 后的检查和补丁,但它们实际上直接影响芯片能否制造、能否签核、能否量产。

本文从底层原理、架构模型和工程方法论角度解释:为什么 route 之后还远没有结束,以及 DRC / Antenna / Metal Fill 在后端闭环中到底扮演什么角色。


一、Routing 只是连接闭合,不是制造闭合

Routing 的目标是把 netlist 中的连接关系转换成物理金属几何。

例如一个 net:

text 复制代码
N1:
  U1/Y
  U2/A
  U3/B

在 routing 之后,会变成:

text 复制代码
M2 horizontal wire
M3 vertical wire
via stack
pin access segment
branch topology

但是,这些几何图形是否合法,并不只取决于"有没有连上"。

一个 net 即使电气上连通,也可能存在:

text 复制代码
金属间距太小
线宽不合法
via enclosure 不足
notch 形状非法
end-of-line spacing 不满足
金属密度不满足
antenna ratio 超限
pin access 形状不可靠
与 block boundary 冲突
与 macro obstruction 冲突

所以 route 完成只能说明:

text 复制代码
connectivity closed

但还不能说明:

text 复制代码
manufacturing closed
physical verification closed
reliability closed
signoff closed

这是很多初学者容易误解的地方。

真实后端 flow 的阶段边界更接近下面这样:

text 复制代码
route completed
      ↓
route DRC cleanup
      ↓
antenna check / fix
      ↓
metal fill insertion
      ↓
post-fill extraction
      ↓
post-fill timing / power check
      ↓
signoff DRC / LVS / PEX
      ↓
layout closure

因此,route 之后不是结束,而是进入物理签核闭环。


二、DRC 的本质:把工艺制造约束转成几何约束系统

DRC 是 Design Rule Check。

它的表面含义是检查版图是否满足设计规则。

但从底层看,DRC 本质上是:

把工艺制造能力、光刻限制、刻蚀限制、CMP 限制、可靠性限制,转化为一组可计算的几何约束。

例如:

text 复制代码
minimum width
minimum spacing
minimum area
minimum enclosure
end-of-line spacing
notch spacing
via enclosure
cut spacing
density window
forbidden pitch
same-net spacing
different-net spacing

这些规则不是凭空来的,而是由制造工艺决定的。

后端工具内部看到的是多层版图几何:

text 复制代码
Layer M1:
  rectangles
  polygons
  pins
  obstructions

Layer VIA1:
  cuts
  arrays

Layer M2:
  wires
  shields
  blockages

DRC 引擎看到的是:

text 复制代码
geometry set
layer relation
measurement rule
violation marker

因此,DRC 检查的核心不是"检查线",而是对几何集合执行规则计算。

可以抽象成:

text 复制代码
Layout Geometry
      ↓
Layer Boolean / Edge Extraction
      ↓
Rule Measurement
      ↓
Violation Marker Generation
      ↓
Result Database / Report

比如 minimum spacing 检查,可以理解为:

text 复制代码
对同一层金属图形提取边界
计算相邻边之间距离
小于规则值则生成 violation marker

via enclosure 检查,可以理解为:

text 复制代码
对 via cut 与上下层 metal 做几何包含关系计算
如果 metal 对 cut 的包围不足
则生成 enclosure violation

所以 DRC 是几何计算系统,不是简单文本规则匹配。


三、为什么后端工具内置 DRC 和 signoff DRC 结果可能不同?

真实项目中经常出现一种情况:

text 复制代码
后端工具里检查没有问题
signoff PV 工具里还有 DRC violation

这并不奇怪。

原因在于:后端工具内置 DRC 和 signoff DRC 的定位不同。

后端工具里的 DRC 通常服务于实现过程:

text 复制代码
帮助 routing 避免明显非法图形
帮助 route optimize 修复局部问题
帮助工程师快速定位可修复 violation
在交互式编辑时做即时检查

signoff DRC 则服务于最终制造交付:

text 复制代码
使用 foundry rule deck
覆盖完整制造规则
对复杂几何和特殊工艺规则更严格
使用签核级数据库和规则解释
输出正式 violation database

两者关注点不同:

类型 主要目标 特点
In-design DRC 支持实现阶段快速修复 快、局部、工程迭代友好
Signoff DRC 支持制造签核 全量、严格、规则覆盖完整

因此,后端工程方法论不能只依赖一种检查。

更合理的做法是:

text 复制代码
route 阶段尽量用 in-design DRC 减少明显问题
阶段收敛后用 signoff DRC 找最终问题
把 signoff violation 分类后回推给后端修复
修复后再次导出并复查

这就是 route 后 DRC closure 的基本闭环。


四、DRC violation 不能只看数量,要看类型和修复代价

很多人看 DRC report 时只看 violation count。

例如:

text 复制代码
DRC violations: 128

但在工程上,单纯的数量意义有限。

真正要看的是 violation 类型、分布、根因和修复代价。

例如:

violation 类型 可能根因 修复代价
spacing route 太拥挤、NDR 冲突、pin access 差 中等
min area wire segment 太短、cut 旁金属不足 较低
via enclosure via 与 metal 几何不匹配 中等
notch polygon 形状复杂、route patch 不干净 中等
density 金属密度不足或过高 后期 fill 相关
antenna 长金属连接 gate,缺少 diode 或跳层 可能较高
boundary macro / block 边界约束不一致 可能较高

如果某类 violation 大量集中在一个区域,说明不是局部修线问题,而可能是上游决策出了问题。

例如:

text 复制代码
某个 macro channel 周围 spacing violation 很多

可能说明:

text 复制代码
macro channel 太窄
pin access 太差
routing blockage 不合理
power stripe 占用了过多 routing resource
placement 把高连接 cell 推到了错误位置

这时如果只靠 detail route 修复,很可能越修越乱。

工程上应该回到更高层次:

text 复制代码
macro placement
channel width
routing layer assignment
blockage strategy
pin access strategy
power route planning

所以 DRC closure 的方法论是:

不要把所有 DRC 都当成 route 后局部修复问题,要先判断它是不是 floorplan / placement / power plan / routing resource 的系统性问题。


五、Antenna 的底层原理:长金属在制造过程中可能积累电荷

Antenna 问题和普通 DRC 不同。

DRC 主要看几何规则,而 antenna 关注的是制造过程中的电荷累积风险。

在芯片制造过程中,金属层刻蚀会经历等离子工艺。某些长金属线在制造中可能像天线一样收集电荷。

如果这条金属线连接到 MOS gate,而 gate oxide 很薄,积累的电荷可能通过 gate oxide 放电,造成损伤。

抽象地说:

text 复制代码
long metal area
      ↓
charge accumulation during plasma process
      ↓
connected gate oxide stress
      ↓
potential reliability failure

这就是 antenna effect。

因此 antenna rule 通常会定义类似关系:

text 复制代码
metal area / gate area < limit
cut area / gate area < limit
partial metal area / gate area < limit

这不是简单的线宽线距问题,而是制造阶段的电荷路径问题。


六、为什么 antenna 经常在 routing 后暴露?

Antenna 风险依赖最终 routing topology。

在 placement 阶段,工具知道 cell 在哪里,但不知道最终金属怎么走。

只有 routing 之后,才知道:

text 复制代码
某个 gate 接了多长金属
经过了哪些 layer
用了哪些 via
是否先连接到 diffusion
是否存在可释放电荷的路径

所以 antenna 常常是在 route 之后检查。

典型风险场景包括:

text 复制代码
一个 input pin 连接到很长的上层金属
net 在连接到 diffusion 之前已经形成很大金属面积
跨多个金属层的长距离连接
clock / reset / enable 等高扇出信号局部连接复杂
macro pin 到 standard cell input 的长线

如果不处理 antenna,即使版图 DRC clean,也可能存在可靠性问题。


七、Antenna 修复的两类基本方法

Antenna 修复通常有两类方法。

1. 插入 antenna diode

思路是给可能积累电荷的金属提供泄放路径。

抽象示意:

text 复制代码
Before:

Long Metal ─────────────── Gate

After:

Long Metal ─────┬───────── Gate
                │
              Diode

优点:

text 复制代码
修复直接
对 routing topology 改动相对较小
适合部分长线输入端

缺点:

text 复制代码
增加面积
可能增加负载
可能影响 timing
需要合法 placement site
需要 power/ground 连接

2. Metal jumper / layer hopping

思路是改变制造过程中金属形成顺序,让长金属面积不要过早连接到 gate。

抽象示意:

text 复制代码
Before:

M2 ───────────────────── Gate

After:

M2 ───── Via ── M4 ── Via ───── Gate

优点:

text 复制代码
不一定增加 cell
可能减少某些 antenna ratio

缺点:

text 复制代码
占用 routing resource
增加 via
可能引入额外寄生
可能制造新的 DRC 或 timing 问题

因此 antenna fix 不是孤立动作,它会影响:

text 复制代码
placement legality
routing resource
net capacitance
timing slack
power connection
DRC closure

这就是为什么 antenna 修复之后还要重新检查 timing 和 DRC。


八、Metal Fill 的本质:为制造均匀性补充金属密度

Metal Fill 看起来像"在空白区域填一些金属块"。

但它的底层原因是制造工艺中的 CMP。

CMP 是 Chemical Mechanical Polishing,用于平坦化晶圆表面。如果某些区域金属密度太低或太高,抛光后的高度会不均匀,从而影响后续工艺层。

因此 foundry 通常会规定每一层金属在一定窗口内的密度范围。

例如抽象规则:

text 复制代码
在 100um x 100um 窗口内:
M3 density must be between 20% and 80%

如果某个区域金属太少,就需要插入 dummy metal fill。

抽象示意:

text 复制代码
Before fill:

+-----------------------------+
|                             |
|   routed wires              |
|   ========                  |
|                             |
|                 =====       |
|                             |
+-----------------------------+

After fill:

+-----------------------------+
|  []  []  []  []             |
|   ========       []         |
|  []      []      []         |
|                 =====       |
|  []  []  []  []             |
+-----------------------------+

Metal Fill 的目标不是连接电路,而是改善制造均匀性。

但它会带来新的电气影响。


九、为什么 Metal Fill 会影响 timing 和 extraction?

Dummy metal 虽然不承载逻辑连接,但它是真实金属。

真实金属会产生寄生电容。

例如一条信号线旁边插入 fill 后,可能增加:

text 复制代码
wire-to-fill coupling capacitance
wire-to-ground capacitance
effective capacitance
local coupling environment

这会影响:

text 复制代码
net delay
slew
setup slack
hold slack
noise / SI
power

所以 Metal Fill 之后,通常需要重新做:

text 复制代码
post-fill extraction
post-fill STA
post-fill power analysis
post-fill signoff check

这就是为什么不能把 fill 当成纯版图装饰。

它是制造约束与电气签核之间的耦合点。


十、Route 后闭环的推荐架构

一个相对稳健的 route 后闭环可以抽象为:

text 复制代码
Routed Design Database
        ↓
In-design DRC Check
        ↓
Route DRC Repair
        ↓
Antenna Check
        ↓
Antenna Fix
        ↓
Metal Fill Insertion
        ↓
Post-fill Extraction
        ↓
Post-fill Timing / Power Check
        ↓
Export DEF / GDS / Netlist
        ↓
Signoff PV Tool
        ↓
DRC / LVS / PEX Results
        ↓
Violation Classification
        ↓
Backend Fix Loop

这条链路的重点是:

每一个修复动作都可能改变版图,每一次版图变化都可能影响 timing、power、DRC、antenna 和 extraction。

因此 route 后 flow 不能设计成一次性脚本,而应该设计成可迭代闭环。


十一、Demo 设计:LAY-BE-21_drc_antenna_fill

这个 demo 的目的不是替代真实 signoff DRC,而是建立一个最小工程模型,让读者理解 route 后检查的结构。

建议 demo 输入:

text 复制代码
data/layout/routed_layout.def
数据中的抽象 routing wire
数据中的抽象 gate area 信息
数据中的抽象 layer rule
数据中的抽象 density window rule

建议 demo 执行逻辑:

text 复制代码
1. 读取 routed layout 摘要
2. 检查 wire spacing / min area / via enclosure 的抽象规则
3. 计算每个 net 的 antenna ratio
4. 对超过阈值的 net 生成 antenna violation
5. 对每个 density window 计算金属密度
6. 对低密度窗口给出 fill 建议
7. 输出 route 后检查报告

建议 demo 输出:

text 复制代码
reports/drc_summary.rpt
reports/antenna_summary.rpt
reports/fill_density_summary.rpt
reports/post_route_closure_plan.rpt
logs/post_route_check.log

其中 post_route_closure_plan.rpt 可以按修复优先级输出:

text 复制代码
[HIGH] short / spacing / via enclosure
[HIGH] antenna ratio violation connected to input gate
[MED ] density window below target
[LOW ] cosmetic / optional cleanup

这个 demo 的工程价值在于:它把 route 后问题从"工具报错"拆成了可分类、可解释、可排序的 closure 任务。


十二、方法论:route 后问题要按依赖关系修,不要乱修

Route 后修复非常容易陷入混乱。

如果修复顺序不对,可能出现:

text 复制代码
修 antenna 引入 DRC
修 DRC 破坏 antenna
插 fill 影响 timing
修 timing 又改 route
改 route 又产生新 DRC

因此需要一个修复顺序策略。

推荐顺序是:

text 复制代码
1. connectivity 和 gross DRC 优先
2. routing DRC cleanup
3. antenna check / fix
4. metal fill insertion
5. post-fill extraction
6. post-fill timing / power check
7. signoff PV closure

原因是:

text 复制代码
connectivity 错误会让后面所有检查失去意义
严重 DRC 会影响 PEX 和 LVS
antenna fix 会改变 routing 或 cell insertion
fill 会改变寄生参数
post-fill timing 才接近最终版图状态

工程上不要只问:

text 复制代码
这个 violation 怎么修?

更应该问:

text 复制代码
这个 violation 属于哪个 closure 层级?
它应该在 fill 前修还是 fill 后修?
它会不会改变 timing?
它会不会触发重新 extraction?
它是否需要回退到 floorplan / placement?

这才是后端工程方法论。


十三、Route 后报告应该如何组织?

成熟 flow 不应该只保存最终 DRC count,而应该保存一组分层报告。

建议至少包括:

text 复制代码
route_drc_summary.rpt
route_drc_by_type.rpt
route_drc_by_region.rpt
antenna_by_net.rpt
antenna_fix_plan.rpt
metal_density_by_window.rpt
fill_insertion_summary.rpt
post_fill_timing_delta.rpt
post_route_closure_summary.rpt

这些报告的作用是:

text 复制代码
按类型定位问题
按区域定位拥塞或设计缺陷
按 net 定位 antenna 风险
按窗口定位 density 问题
比较 fill 前后 timing delta
为 signoff handoff 提供依据

报告设计得越清楚,后续 PV handoff 和 ECO 修复越容易闭环。


十四、总结

Route 之后还远没有结束。

Routing 只是完成了连接几何,后端真正的收敛还必须通过 DRC、Antenna、Metal Fill、post-fill extraction、post-fill timing 和 signoff PV 闭环来确认。

可以用一句话概括本文:

Route 解决的是"连得上",DRC / Antenna / Metal Fill 解决的是"造得出、用得稳、签得过"。

从工程架构看,route 后阶段不是一个尾声,而是从实现工具内部闭环走向物理验证和制造签核的过渡区。

从方法论看,route 后问题不能简单按报错逐条修,而要按类型、区域、根因、依赖关系和修复代价建立 closure plan。

这也是 Backend Flow 从脚本执行走向工程成熟的关键一步。

相关推荐
DarrenHChen_EDA4 小时前
【Backend Flow工程实践 23】Backend-to-PV Handoff:从 DEF/GDS 到物理验证,后端如何完成签核交接?
lvs·eda·pv·gds·drc·backend flow·def
DarrenHChen_EDA1 天前
【Backend Flow工程实践 16】从 Scan Chain 到 Placement:测试结构为什么会影响后端布局?
eda·dft·apr·placement·scan chain·backend flow·可测性设计
DarrenHChen_EDA1 天前
【Backend Flow工程实践 19】CTS:从 skew group 到 clock route rule,时钟树综合到底在综合什
eda·apr·cts·backend flow·skew group
DarrenHChen_EDA3 天前
【Backend Flow工程实践 12】Collection / Property / Filter:为什么对象查询能力决定 Backend 脚本工程上限?
eda
DarrenHChen_EDA4 天前
【Backend Flow工程实践 14】IO / Macro / Row:物理约束如何决定后端实现的搜索空间?
eda
倾心琴心1 个月前
【agent辅助pcb routing coding学习】实践9 CU GR 代码 算法学习
算法·agent·pcb·eda·routing
倾心琴心1 个月前
【agent辅助pcb routing coding学习】实践7 length matching 算法学习
学习·算法·agent·pcb·routing
倾心琴心2 个月前
【agent辅助pcb routing coding学习】实践3 kicad routing tools 从PCB文件获取了哪些信息
算法·agent·pcb·eda·routing
倾心琴心2 个月前
【agent辅助pcb routing coding学习】实践4 kicad pcb 核心类层次关系
算法·agent·pcb·eda·routing