【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_EDA20 天前
【Backend Flow工程实践 27】Backend Script Template:一个可维护的后端脚本体系应该如何组织?
eda·log·tcl·parameter·regression·backend flow·script template
DarrenHChen_EDA21 天前
【Backend Flow工程实践 23】Backend-to-PV Handoff:从 DEF/GDS 到物理验证,后端如何完成签核交接?
lvs·eda·pv·gds·drc·backend flow·def
DarrenHChen_EDA22 天前
【Backend Flow工程实践 16】从 Scan Chain 到 Placement:测试结构为什么会影响后端布局?
eda·dft·apr·placement·scan chain·backend flow·可测性设计
DarrenHChen_EDA22 天前
【Backend Flow工程实践 19】CTS:从 skew group 到 clock route rule,时钟树综合到底在综合什
eda·apr·cts·backend flow·skew group
DarrenHChen_EDA23 天前
【Backend Flow工程实践 12】Collection / Property / Filter:为什么对象查询能力决定 Backend 脚本工程上限?
eda
DarrenHChen_EDA25 天前
【Backend Flow工程实践 14】IO / Macro / Row:物理约束如何决定后端实现的搜索空间?
eda
倾心琴心2 个月前
【agent辅助pcb routing coding学习】实践9 CU GR 代码 算法学习
算法·agent·pcb·eda·routing
倾心琴心2 个月前
【agent辅助pcb routing coding学习】实践7 length matching 算法学习
学习·算法·agent·pcb·routing
倾心琴心2 个月前
【agent辅助pcb routing coding学习】实践3 kicad routing tools 从PCB文件获取了哪些信息
算法·agent·pcb·eda·routing