一、DRC基础概念:设计规则检查

大家好,我是你们的后端芯片设计工程师。今天我们来聊聊DRC——设计规则检查。

说实话,我刚入行那会儿,觉得DRC就是个“找茬”的工具。后来吃过亏才明白,它其实是流片前的最后一道防线。嗯,咱们慢慢聊。

1.1 什么是设计规则检查(DRC)

设计规则检查,说白了就是检查你的版图有没有违反制造工艺的物理限制。

你想想看,芯片制造是个物理过程。光刻、刻蚀、沉积……每一步都有精度限制。比如两根金属线不能靠太近,否则会短路;通孔不能太小,否则电阻太大。

这些限制,就是设计规则。DRC就是自动检查这些规则的工具。

核心要点:DRC检查的是“物理可实现性”,不是功能正确性。

我举个例子。你画了一条金属线,宽度是0.1微米。但工艺厂说最小宽度是0.18微米。DRC就会报错:“嘿,你这线太细了,造不出来!”

常见的DRC检查项包括:

  • 最小宽度:金属、多晶硅、有源区等层的宽度不能小于某个值
  • 最小间距:同层或不同层之间的间距要求
  • 最小面积:某些图形必须有足够大的面积
  • 包围规则:比如通孔必须被金属完全包围
  • 密度规则:金属密度不能太高或太低

1.2 为什么DRC是流片前的最后一道防线

这个问题,我用亲身经历来回答。

我曾经参与过一个项目,前端功能验证都过了,时序也收敛了。结果流片回来,芯片不工作。查了三个月,最后发现是一根金属线间距不够,导致短路。

那次教训太深刻了。从那以后,我每次流片前都要反复跑DRC,直到零错误。

为什么说它是最后一道防线?因为:

  1. 物理验证不可替代:逻辑仿真、时序分析都检查不了物理规则
  2. 流片成本极高:一次65nm的流片就要几十万,更先进工艺上百万
  3. 改版周期长:发现问题再改,至少3-6个月
  4. DRC错误可能导致芯片完全失效:不是性能下降,是直接不工作

警告:千万不要抱有“这个错误应该没问题吧”的侥幸心理。工艺厂不会为你的“应该”负责。

1.3 DRC在OpenROAD流程中的位置

OpenROAD是一个开源的数字芯片设计流程。它把从RTL到GDSII的整个流程都串起来了。

DRC在OpenROAD中的位置,我画了张图来说明:

OpenROAD流程中的DRC位置 RTL综合 布局规划 时钟树综合 布线 DRC 设计规则检查 (流片前最后一步) GDSII 输出(流片文件) 有错误?返回修改 DRC通常在布线完成后执行,也可以在布局规划阶段提前检查

从图中可以看到,DRC在OpenROAD流程中处于布线之后、GDSII输出之前。这是最后一步物理验证。

我个人习惯在布局规划阶段就做一次初步的DRC。虽然那时候版图还不完整,但能提前发现一些大问题。比如电源网络间距不够、IO单元冲突等。

小技巧:在OpenROAD中,DRC检查可以通过 check_design -rule drc 命令触发。建议在每一步物理实现后都跑一下,不要等到最后。

1.4 OpenROAD中的DRC工具

OpenROAD主要使用两种DRC工具:

工具 特点 适用场景
OpenROAD内置DRC 轻量级,速度快,支持基本规则 快速迭代、早期检查
KLayout集成 功能强大,支持复杂规则,可视化 最终签核检查

我记得有一次,用内置DRC检查全过了,结果用KLayout一跑,发现了几十个密度规则违例。所以我的建议是:最终签核一定要用KLayout。

1.5 避坑指南

最后分享几个我踩过的坑:

  • 不要只看数量不看类型:100个同样的错误和100个不同的错误,处理方式完全不同
  • 注意伪错误:有些DRC错误是“假”的,比如层次化设计中的边界问题。但别轻易放过,先确认再waive
  • DRC规则文件要选对:不同工艺、不同版本,规则文件不一样。我曾经用错版本,白忙活了两天
  • 跑DRC前先做LVS:电路连接都错了,跑DRC没意义

记住:DRC零错误是流片的基本门槛,不是加分项。

好了,关于DRC的基础概念就聊到这里。下一节我们会深入OpenROAD的DRC实战操作,包括如何配置规则文件、如何解读错误报告、如何修复常见违例。

可可精品资料库