设计规则检查(DRC)基础

各位工程师朋友,今天我们来聊聊DRC。说实话,DRC是物理验证里最基础也最绕不开的一环。我做了十五年芯片,每次流片前最紧张的就是看DRC报告——那种感觉,就像高考查分一样。

DRC,全称Design Rule Check,设计规则检查。它的任务很简单:检查你的版图是否符合代工厂给出的制造规则。为什么要有这些规则?因为光刻机、刻蚀机这些设备有物理极限,你画得太细、太密,生产出来就是废片。

核心观点:DRC不是找茬,是帮你省钱。一次流片失败,几百万就没了。

一、DRC规则分类

代工厂给的规则文件,少则几百条,多则上万条。但归纳起来,无非四大类。

1. 宽度规则(Width)

说白了,就是你的金属线、多晶硅线不能太细。太细了,电流一大会烧断,或者刻蚀时直接断掉。

我记得有个项目,后端工程师为了省面积,把电源线画得刚好卡在规则下限。结果流片回来,芯片一上电就冒烟。嗯,从那以后我养成了习惯:电源线至少比规则下限宽20%。

2. 间距规则(Spacing)

两条线之间不能靠太近。靠太近会怎样?短路呗。或者信号串扰,逻辑出错。

这里有个坑:不同金属层的间距规则不一样。比如M1和M2,因为工艺不同,间距要求也不同。我曾经见过一个新手,把M1的间距规则套用到M2上,结果DRC报了上千个错误。

3. 密度规则(Density)

这个很多人容易忽略。代工厂要求你的版图里,金属、多晶硅的密度不能太高也不能太低。太高了,刻蚀不均匀;太低了,化学机械抛光(CMP)会把表面磨不平。

我建议:在布局布线阶段就考虑密度问题。别等到最后加dummy fill,那玩意儿很费时间。

4. 天线效应规则(Antenna Effect)

这个比较有意思。长金属线在等离子刻蚀时,会像天线一样收集电荷。电荷积累多了,会击穿栅氧化层,导致晶体管报废。

怎么解决?加天线二极管,或者跳层布线。我个人习惯是:在长走线末端加一个反偏二极管,简单粗暴有效。

规则类型检查内容常见错误
宽度线宽是否达标线宽不足
间距线间距离间距违规
密度图形密度密度过高/过低
天线效应电荷积累天线比超标

二、DRC规则文件结构

规则文件有两种主流格式:SVRF和TVF。SVRF是Calibre用的,TVF是ICV用的。其实核心逻辑都一样,只是语法不同。

SVRF格式(Calibre)

SVRF的语法很直观。举个例子:

// 定义规则
RULE WIDTH_M1 {
    // 检查M1层宽度
    WIDTH M1 < 0.18
    // 报错信息
    ERROR "M1 width must be >= 0.18um"
}

你看,先定义规则名,然后写检查条件,最后给报错信息。就这么简单。

TVF格式(ICV)

TVF的语法稍微复杂一点,但逻辑一样:

rule WIDTH_M1 {
    condition: width(M1) < 0.18
    message: "M1 width must be >= 0.18um"
}

我个人更喜欢SVRF,因为它的报错信息可以写得更详细。比如加上坐标、层名、当前值,方便定位问题。

小技巧:写规则文件时,把报错信息写得越详细越好。你想想看,如果只报"宽度错误",你还要去查是哪一层、哪个坐标。如果写成"M1 width 0.15um at (100,200) must be >= 0.18um",直接就能定位。

三、DRC运行流程

DRC的运行流程,说白了就是三步:读入、检查、输出。

1. 读入版图 GDS/OASIS + 规则文件 2. 规则检查 逐条比对规则 3. 输出结果 DRC报告 + 错误标记 DRC运行流程:输入 → 处理 → 输出

第一步:读入版图

你需要准备两样东西:版图文件(GDS或OASIS格式)和规则文件(.rul或.rule)。

这里有个坑:版图文件必须和规则文件匹配。比如你用0.18um的规则去检查0.13um的版图,那结果肯定不对。我曾经见过有人把工艺搞混了,结果DRC报了十万个错误,吓得脸都白了。

第二步:规则检查

工具会逐条比对规则。这个过程很快,几百万条规则几分钟就能跑完。但要注意:规则文件里可能有条件语句,比如"如果A层存在,则检查B层"。这些条件必须写对,否则会漏检。

第三步:输出结果

DRC报告会告诉你:哪些地方违规了,违规类型是什么,坐标在哪里。我建议:不要只看错误数量,要看错误类型。有时候一个错误类型下面有几百个实例,其实都是同一个问题导致的。

警告:DRC报告里的"waiver"(豁免)要慎用。有些工程师为了快速清掉错误,把一些违规标记为"豁免"。但豁免不等于解决,流片时这些地方还是会出问题。我个人的原则是:能不豁免就不豁免,实在要豁免,必须写清楚原因。

好了,DRC的基础知识就讲到这里。记住:DRC不是终点,是起点。跑完DRC,你还要跑LVS、ERC、ANT等检查。但DRC是基础,基础不牢,地动山摇。

最后分享一个经验:每次跑DRC前,先检查规则文件的版本。代工厂会更新规则,用旧版本检查新工艺,结果会不准确。我习惯在项目开始前,把规则文件的版本号、日期都记录下来,方便追溯。

可可精品资料库