3、设计规则检查(DRC)基础:DRC规则分类、最小间距与最小宽度、跨层DRC的特殊性
3.1 DRC到底在查什么?
设计规则检查,说白了就是给芯片做「体检」。
我刚入行那会儿,总觉得DRC是后端流程里最枯燥的一步——不就是跑个工具,等结果,修错误吗?后来吃过几次亏才明白,DRC其实是整个物理设计的「守门员」。你想想看,版图画得再漂亮,如果连最基本的制造规则都违反,流片回来就是一堆废片。
DRC检查的核心,是确保你的版图能被制造出来,而且能正常工作。它不关心你的电路功能对不对,只关心几何图形是否「规矩」。
DRC的本质: 用一组几何约束,把物理设计「翻译」成制造厂能理解的格式。每一层掩膜上的图形,长什么样、离多近、拐角多锐利,都得按规矩来。
3.2 DRC规则分类
我个人习惯把DRC规则分成三大类,这样好记也好用:
| 类别 | 检查内容 | 典型规则 |
|---|---|---|
| 单层规则 | 同一层内的几何约束 | 最小宽度、最小间距、最小面积、最小包围 |
| 双层规则 | 两层之间的空间关系 | 层间间距、交叠面积、包围余量 |
| 跨层规则 | 涉及三层及以上的复杂约束 | 通孔阵列规则、金属栈结构、天线效应 |
嗯,这里要注意——跨层规则是最容易出问题的。我在项目中遇到过好几次,单层和双层检查都过了,偏偏跨层规则报出一堆错,改起来特别头疼。
3.3 最小间距与最小宽度
这两个是DRC里最基础的规则,但也是最容易被忽视的。
最小宽度,指的是某层上连续图形的宽度下限。为什么要有这个限制?因为光刻工艺有分辨率极限。你画一根0.1um宽的线,制造出来可能只有0.05um,甚至断掉。
举个例子,M1层的最小宽度通常是工艺节点的关键尺寸。在28nm工艺里,M1最小宽度可能是0.07um左右。但注意,这只是「规则值」,实际设计中我建议留出10%~20%的余量,尤其是电源走线。
// 典型的DRC规则描述(以M1为例)
LAYER M1
WIDTH >= 0.07 // 最小宽度
SPACING >= 0.08 // 最小间距
AREA >= 0.01 // 最小面积(um²)
最小间距,就是两条相邻图形之间不能靠太近。靠太近会怎样?短路呗。或者更隐蔽的问题——串扰、漏电。
我曾经在一个高速接口项目中,因为M2间距只压着规则下限,结果后仿发现串扰噪声超标。后来不得不把间距放宽了20%,才解决问题。所以我的经验是:关键信号线,间距至少留20%余量。
避坑指南: 最小间距规则通常有「同电位例外」。如果两条线属于同一个网络,间距可以缩小。但要注意——不是所有工艺都支持这个例外,一定要看foundry的DRC手册确认。
3.4 跨层DRC的特殊性
跨层DRC,是很多工程师的噩梦。为什么?因为它涉及的不只是「距离」和「宽度」,还有「逻辑关系」。
举个例子,通孔(Via)的检查就属于典型的跨层DRC。一个通孔连接M1和M2,但检查时需要考虑三层:M1、通孔层、M2。规则包括:
- 通孔必须被上下两层金属完全包围(包围余量)
- 通孔阵列的间距和数量要求
- 通孔与相邻图形的间距(不同层之间)
我印象最深的一次,是一个射频芯片项目。所有单层DRC都过了,但跨层检查报出几百个错误。查了半天,发现是M1上的一个电感图形,与M2上的屏蔽层之间,有一个「虚拟通孔」的规则没满足。那个规则藏在foundry的补充文档里,一般人根本注意不到。
警告: 跨层DRC的规则往往分散在多个文档中。主DRC手册、补充规则、特殊器件规则、天线效应规则……你可能需要翻3~4个文档才能找全。我建议在项目启动时,就把所有跨层规则整理成一个清单,避免后期手忙脚乱。
3.5 跨层DRC的典型场景
这里列出几个我工作中经常遇到的跨层DRC场景:
- 通孔栈结构:比如从M1到M4的连续通孔,每一层通孔的尺寸、间距、包围余量都要满足规则。而且不同层的规则可能不一样。
- 天线效应检查:长走线在制造过程中会积累电荷,可能击穿栅氧。这个检查涉及金属层、通孔层和器件层,是典型的跨层规则。
- 密度规则:每层金属的图形密度必须在某个范围内。密度太低或太高都会影响平坦化工艺。这个检查虽然是单层,但密度计算需要参考上下层的图形分布。
- 特殊器件区域:比如IO区域、ESD保护区域,往往有额外的跨层约束。这些规则通常写在「特殊区域DRC」文档里。
我的建议: 跑DRC之前,先花半天时间把foundry的DRC手册通读一遍。重点看「跨层规则」和「特殊区域规则」这两章。别嫌麻烦,这半天能帮你省下后面几周的修错时间。
3.6 本章知识体系
下面这张图,是我自己总结的DRC规则分类和检查流程。你可以把它当作一个快速参考:
这张图把DRC的检查流程串起来了。从版图数据进来,经过三大类规则的检查,最后输出报告。注意看跨层规则那一支——它和单层、双层规则是并列的,但实际检查时,跨层规则往往需要调用更多的层信息,计算也更复杂。
小技巧: 如果你用的是Calibre,可以在SVRF脚本里用LAYER MAP语句把跨层规则涉及的层单独提取出来,这样调试时能看得更清楚。我每次做跨层检查,都会先写一个简化的测试脚本,只检查那几条关键规则,确认没问题后再跑全量检查。
好了,DRC基础就聊到这儿。记住一句话:DRC不是终点,而是起点。它帮你把设计中的「硬伤」找出来,但真正的设计质量,还得靠你对工艺的理解和经验的积累。
可可精品资料库