4. 设计规则检查(DRC)详解

设计规则检查,圈里人通常直接叫 DRC。这步要是没做好,后面流片就是白扔钱。我见过太多团队,前面仿真跑得飞起,结果 DRC 一跑,几千个错误弹出来,心态直接崩了。

说白了,DRC 就是检查你的版图,符不符合代工厂的制造规则。晶圆厂不是万能的,光刻机有极限,刻蚀有偏差,这些物理限制都写进了设计规则里。你违反了,芯片就造不出来,或者造出来也是坏的。

核心观点:DRC 不是找茬,是帮你省钱。一个 DRC 错误在流片前改掉,成本是几分钟;流片后发现,成本是几十万。

4.1 DRC 规则分类

代工厂给的规则文档,动辄上千页。但归纳起来,核心就几大类。我习惯把它们分成「几何约束」和「工艺约束」两个维度。

4.1.1 宽度规则(Width)

这条规则最简单:你的金属线、多晶硅、有源区,不能太细。太细了,光刻显影时可能断掉,或者电流密度过大把线烧了。

  • 最小宽度:比如 M1 最小 0.1μm,你画 0.09μm 就报错。
  • 最大宽度:有些层不能太宽,比如多晶硅栅极太宽,刻蚀不均匀,会影响晶体管性能。

我记得有一次,一个实习生画电源线,为了减小电阻,把 VDD 的金属线画得特别宽。结果 DRC 报了一堆最大宽度违例。嗯,后来我们加了 slot(开槽)才解决。

4.1.2 间距规则(Spacing)

两条同层图形之间,必须隔开一定距离。间距不够,光刻时可能连在一起,造成短路。

  • 同层间距:M1 到 M1,Poly 到 Poly。
  • 异层间距:比如 Contact 到 Poly 的间距,防止漏电。
  • 阱间距:不同电位阱之间的间距,防止闩锁效应。

你想想看,先进工艺下,间距规则越来越复杂。7nm 以下,还有复杂的「双重曝光」间距规则,处理不好就是一堆 dummy 填充问题。

4.1.3 包围规则(Enclosure)

这个规则说的是:一层图形要完全包住另一层。比如 Contact 必须被 M1 完全包住,不能露出来。

  • Via/Contact 包围:金属层必须包住通孔,每边至少留多少余量。
  • 阱包围:有源区必须被 N阱/P阱包住一定距离。

我曾经遇到过一个 case,DRC 报了几百个 Via 包围错误。查了半天,发现是脚本生成通孔阵列时,边界处理出了问题。这种问题,手动改能改到吐血。

4.1.4 密度规则(Density)

晶圆厂要求:每一层金属、多晶硅、有源区,在芯片上的面积占比,必须在一个范围内。比如金属密度不能低于 20%,也不能高于 80%。

为什么?密度太低,CMP(化学机械抛光)时,低密度区域会被磨掉太多,导致表面不平。密度太高,刻蚀时气体进不去,刻不干净。

避坑指南:我曾经在 28nm 项目上,因为金属密度不够,被迫在空白区域插了几十万个 dummy 金属块。结果这些 dummy 影响了信号线的寄生电容,导致时序收敛困难。所以,布局布线阶段就要考虑密度均匀性,别等 DRC 再补。

4.1.5 其他特殊规则

  • 天线效应规则:长金属线在刻蚀时会收集电荷,可能击穿栅氧化层。需要加天线二极管或跳线。
  • 孔规则:通孔阵列的间距、数量、堆叠方式。
  • ESD 规则:静电防护器件的特殊几何约束。

4.2 DRC 工具介绍

市面上主流的 DRC 工具,其实就两家:Mentor(现在是 Siemens)的 Calibre,和 Synopsys 的 ICV。我两个都用过,各有千秋。

特性 Calibre ICV
市场占有率 最高,几乎代工厂都支持 较高,尤其先进工艺
运行速度 快,多线程优化好 更快,分布式计算强
规则语言 SVRF(标准验证规则格式) TCL 风格
调试能力 RVE 图形界面,直观 ICV Workbench,功能强大
内存占用 中等 较高

我个人习惯用 Calibre,因为它的 RVE 调试界面太方便了。点一下错误,直接高亮到版图,还能看详细的违例描述。ICV 呢,在超大规模芯片上跑得更快,但学习曲线陡一点。

我的建议:新手先用 Calibre 入门,规则文件好读,报错信息友好。等做到 7nm 以下项目,再考虑 ICV 的分布式加速能力。

4.3 DRC 结果分析与修复

跑完 DRC,你会得到一个结果文件。里面密密麻麻全是错误。别慌,我教你分类处理。

4.3.1 错误分类

  • 致命错误:短路、断路、最小间距违例。不改,芯片必坏。
  • 警告:密度略低、包围略小。可能影响良率,但不一定致命。
  • 建议:天线效应、ESD 相关。最好改,但可以 waiver(豁免)。

4.3.2 修复策略

修复 DRC 错误,说白了就是「哪里错了改哪里」。但有些技巧,能让你事半功倍。

  1. 批量修复:对于 Via 包围、间距等规则错误,可以用脚本批量调整。比如写个 TCL 脚本,把所有违例的 Via 往外扩 0.01μm。
  2. 手动微调:关键路径上的错误,必须手动修。因为批量修改可能引入新的时序问题。
  3. Waiver:有些错误,经过仿真验证,确认不影响功能,可以申请 waiver。但 waiver 要谨慎,代工厂不一定批。

警告:千万不要为了修 DRC 而修 DRC。我见过有人把一条线拉来拉去,DRC 过了,但寄生电容翻了一倍,时序直接崩了。修 DRC 的同时,要跑一遍 LVS 和寄生参数提取,确保电路功能不变。

4.3.3 常见错误修复示例

// 错误类型:M1 间距违例(M1.S.1)
// 描述:两条 M1 线间距 0.08μm,要求最小 0.1μm
// 修复方法:将其中一条线往右移动 0.02μm

// 错误类型:Via 包围违例(V0.E.1)
// 描述:Via 被 M1 包围,每边只有 0.02μm,要求 0.03μm
// 修复方法:将 M1 图形向外扩大 0.01μm

嗯,这里要注意:修完一个错误,可能引发新的错误。比如你移动一条线,间距好了,但可能和旁边的线又产生了新的间距违例。所以,修 DRC 是个迭代过程,要有耐心。

4.4 知识体系总览

下面这张图,是我自己整理的 DRC 知识框架。你可以把它当成一个检查清单,做项目时对照着看。

DRC 知识体系总览 设计规则检查 (DRC) DRC 规则分类 宽度规则 间距规则 包围规则 密度规则 特殊规则 DRC 工具 Calibre (Siemens) ICV (Synopsys) 结果分析与修复 → 迭代收敛

这张图把 DRC 的核心内容串起来了。左边是规则,中间是工具,右边是结果处理。做项目时,你就按这个流程走:先搞清楚规则,选好工具,跑完 DRC 后分类修复,直到零错误。

好了,DRC 这块就聊这么多。记住一句话:DRC 是芯片流片的最后一道防线,别偷懒,别侥幸。每一个错误,都可能是流片回来的一个坏消息。

可可精品资料库