作者: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 从脚本执行走向工程成熟的关键一步。