一、DRC基础概念:设计规则检查
大家好,我是你们的后端芯片设计工程师。今天我们来聊聊DRC——设计规则检查。
说实话,我刚入行那会儿,觉得DRC就是个“找茬”的工具。后来吃过亏才明白,它其实是流片前的最后一道防线。嗯,咱们慢慢聊。
1.1 什么是设计规则检查(DRC)
设计规则检查,说白了就是检查你的版图有没有违反制造工艺的物理限制。
你想想看,芯片制造是个物理过程。光刻、刻蚀、沉积……每一步都有精度限制。比如两根金属线不能靠太近,否则会短路;通孔不能太小,否则电阻太大。
这些限制,就是设计规则。DRC就是自动检查这些规则的工具。
核心要点:DRC检查的是“物理可实现性”,不是功能正确性。
我举个例子。你画了一条金属线,宽度是0.1微米。但工艺厂说最小宽度是0.18微米。DRC就会报错:“嘿,你这线太细了,造不出来!”
常见的DRC检查项包括:
- 最小宽度:金属、多晶硅、有源区等层的宽度不能小于某个值
- 最小间距:同层或不同层之间的间距要求
- 最小面积:某些图形必须有足够大的面积
- 包围规则:比如通孔必须被金属完全包围
- 密度规则:金属密度不能太高或太低
1.2 为什么DRC是流片前的最后一道防线
这个问题,我用亲身经历来回答。
我曾经参与过一个项目,前端功能验证都过了,时序也收敛了。结果流片回来,芯片不工作。查了三个月,最后发现是一根金属线间距不够,导致短路。
那次教训太深刻了。从那以后,我每次流片前都要反复跑DRC,直到零错误。
为什么说它是最后一道防线?因为:
- 物理验证不可替代:逻辑仿真、时序分析都检查不了物理规则
- 流片成本极高:一次65nm的流片就要几十万,更先进工艺上百万
- 改版周期长:发现问题再改,至少3-6个月
- DRC错误可能导致芯片完全失效:不是性能下降,是直接不工作
警告:千万不要抱有“这个错误应该没问题吧”的侥幸心理。工艺厂不会为你的“应该”负责。
1.3 DRC在OpenROAD流程中的位置
OpenROAD是一个开源的数字芯片设计流程。它把从RTL到GDSII的整个流程都串起来了。
DRC在OpenROAD中的位置,我画了张图来说明:
从图中可以看到,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实战操作,包括如何配置规则文件、如何解读错误报告、如何修复常见违例。
可可精品资料库