设计规则检查(DRC)基础:DRC规则分类与规则文件格式初探

各位同学,今天我们聊聊DRC。设计规则检查,说白了就是给芯片版图做“体检”。你画出来的每一层图形,宽度够不够?间距会不会短路?包围有没有留足余量?这些都得靠DRC来把关。

我刚开始做后端那会儿,觉得DRC就是个跑脚本的苦力活。后来有一次,一个0.18μm的项目,我漏了一条最小面积规则,结果流片回来那块区域直接烧了。嗯,从那以后,我再也不敢小看DRC了。

DRC规则到底在检查什么?

DRC规则可以分成几大类。我个人习惯把它们分成四类:宽度、间距、包围、面积。你想想看,版图里无非就是这些几何关系。

1. 宽度规则(Width Rule)

这条规则要求金属线、多晶硅、有源区等图形的最小宽度不能小于某个值。为什么?因为太细的线,光刻时容易断,电流大了还可能熔断。

举个例子: 0.18μm工艺里,M1的最小宽度通常是0.22μm。你画成0.20μm?DRC直接报错。

避坑指南: 我曾经在电源网络上偷了宽度,想着电流大一点也没事。结果IR drop分析没过,重新改版图,浪费了两周。记住,电源线的宽度宁多勿少。

2. 间距规则(Spacing Rule)

同一层或不同层之间的图形,必须保持最小间距。太近了会怎样?短路风险。尤其是不同电压域的线,间距不够可能击穿。

我遇到过最头疼的是同层间距和不同层间距的区别。比如M1到M1的间距是0.23μm,但M1到M2的间距可能只有0.15μm。别搞混了。

规则类型 典型值(0.18μm工艺) 检查内容
同层间距 0.23μm 同一金属层两条线的最小距离
不同层间距 0.15μm 不同金属层之间图形的最小距离
阱间距 0.6μm 不同电位阱之间的隔离距离

3. 包围规则(Enclosure Rule)

这条规则要求一层图形必须完全包围另一层图形,并且留出足够的余量。最常见的例子:接触孔(Contact) 必须被金属完全包围。

我记得有个项目,接触孔的包围只做了0.05μm,DRC没报错,但流片后接触电阻偏大,芯片功耗超标。后来查出来是包围不够,金属和接触孔接触面积太小。

小技巧: 包围规则通常有方向性。比如“M1包围Contact”和“Contact包围M1”是两回事。别搞反了。

4. 面积规则(Area Rule)

图形面积不能太小。为什么?因为光刻时,太小的图形可能根本印不出来。比如多晶硅栅的最小面积,如果太小,晶体管可能无法正常工作。

我见过最坑的是浮空金属的面积规则。有些浮空的金属碎片,面积不够,DRC会报“天线效应”或“密度不足”。

规则文件格式:SVRF和Tcl

规则写在哪里?写在规则文件里。业界主流有两种格式:SVRF 和 Tcl。我两种都用过,各有千秋。

SVRF格式

SVRF是Calibre工具的老牌格式。语法很直观,像写英文句子。比如:

// 检查M1最小宽度
M1_WIDTH {
  @ Minimum width of M1 is 0.22um
  WIDTH M1 < 0.22
}

// 检查M1到M1最小间距
M1_SPACING {
  @ Minimum spacing between M1 shapes is 0.23um
  SPACING M1 < 0.23
}

你看,WIDTH 和 SPACING 就是关键字。后面跟层名和数值。简单粗暴。

注意: SVRF里大小写敏感。M1和m1是两回事。我曾经因为大小写问题,DRC跑了三天没结果,最后发现是层名写错了。

Tcl格式

Tcl格式更灵活,可以写条件判断、循环。适合复杂的规则。比如:

# 检查M1最小宽度
set min_width_M1 0.22
check_width -layer M1 -min $min_width_M1

# 检查M1到M1最小间距
set min_spacing_M1 0.23
check_spacing -layer1 M1 -layer2 M1 -min $min_spacing_M1

Tcl的好处是可以用变量。比如工艺变了,改一个变量就行,不用满篇找数值。我个人更喜欢Tcl,因为可维护性好。

知识体系结构图

下面这张图,我画了DRC规则的核心分类和文件格式的关系。你看一眼就能记住。

DRC规则体系 宽度规则 最小线宽 间距规则 同层/异层间距 包围规则 接触孔包围 面积规则 最小图形面积 SVRF格式 Tcl格式 规则文件 = 工艺厂提供的“版图法律条文”

初探规则文件:怎么看懂它?

拿到一个规则文件,别慌。我教你三步走:

  1. 找层名定义:文件开头通常有 LAYER 或 define 语句,告诉你M1、M2、POLY这些层对应什么编号。
  2. 找规则分组:规则通常按功能分组,比如 METAL_RULES、VIA_RULES。直接跳到你要检查的部分。
  3. 看注释:好的规则文件,每条规则前面都有注释,说明这条规则是干嘛的。比如 @ Minimum width of M1。

我的习惯: 拿到新工艺的规则文件,我会先搜 MINIMUM 和 MAXIMUM 这两个关键词。把所有的极值列出来,心里就有底了。

好了,DRC规则分类和文件格式就聊到这儿。记住,规则是死的,但版图是活的。多跑几次DRC,多看看报错,慢慢就熟了。

可可精品资料库