DRC规则文件解析:规则文件格式、常见分类与语法入门

各位同学,今天我们来聊聊DRC规则文件。说实话,我刚入行那会儿,看到动辄几千行的规则文件,头都是大的。但后来我发现,这东西就像一本菜谱——只要你看懂了目录和常用术语,剩下的就是按步骤操作了。

规则文件格式:SVRF vs TCL

目前主流的DRC工具,比如Calibre,支持两种规则文件格式:SVRF和TCL。我个人习惯用SVRF,因为它更直观,但TCL的灵活性确实更强。

SVRF格式

SVRF(Standard Verification Rule Format)是Calibre的原生格式。它的语法结构非常清晰,说白了就是「条件+操作」的组合。举个例子:

// SVRF示例:检查金属线宽
WIDTH M1 < 0.18 {
    @ 金属1线宽小于0.18um,请检查
    M1
}

你看,WIDTH是检查条件,M1是检查对象,花括号里是报错信息。嗯,就是这么简单。

TCL格式

TCL(Tool Command Language)格式更接近编程语言。如果你写过脚本,上手会很快。我在项目中遇到过用TCL写复杂条件判断的场景,确实比SVRF灵活:

# TCL示例:检查金属线宽
if { [width M1] < 0.18 } {
    error "金属1线宽小于0.18um"
}
我的建议:新手先从SVRF入手,等熟悉了基本规则,再尝试TCL。别一上来就搞复杂的,容易劝退。

常见规则分类

DRC规则虽然多,但归纳起来就几大类。你想想看,芯片设计最怕什么?无非就是线太细、间距太小、东西没包住。所以规则也是围绕这些来的。

规则类型 检查内容 典型示例
宽度规则 检查金属、多晶硅等层的线宽 M1宽度 ≥ 0.18um
间距规则 检查同层或不同层之间的最小距离 M1到M1间距 ≥ 0.2um
包围规则 检查一层对另一层的覆盖程度 CONT包围M1 ≥ 0.05um
面积规则 检查图形的最小面积 M1面积 ≥ 0.5um²
密度规则 检查金属密度是否在合理范围 M1密度 20%~80%

避坑指南:我曾经在做一个28nm项目时,忽略了包围规则中的一个细节——CONT对M1的包围要求是0.05um,但我的版图里只有0.04um。结果流片回来,接触孔边缘的金属出现了断裂。从那以后,我对包围规则格外敏感。

规则语法入门

好了,我们来看看具体的语法。我会用SVRF格式来讲解,因为这是最常用的。

基本结构

每条规则通常由三部分组成:检查命令、检查对象、报错信息。比如:

WIDTH M1 < 0.18 {
    @ 错误:M1线宽小于0.18um
    M1
}
  • WIDTH:检查命令,表示检查宽度
  • M1:检查对象,这里是金属1层
  • < 0.18:条件,小于0.18um
  • @ ...:报错信息,用@开头

常用命令

我整理了几个最常用的命令,你记下来就行:

命令 含义 示例
WIDTH 检查宽度 WIDTH M1 < 0.18
SPACE 检查间距 SPACE M1 < 0.2
ENC 检查包围 ENC M1 CONT < 0.05
AREA 检查面积 AREA M1 < 0.5
DENSITY 检查密度 DENSITY M1 < 0.2

条件组合

实际项目中,规则往往不是单一的。比如,你可能需要同时检查宽度和间距。这时候可以用AND或OR来组合:

// 同时检查宽度和间距
WIDTH M1 < 0.18 AND SPACE M1 < 0.2 {
    @ 错误:M1线宽或间距不满足要求
    M1
}

注意:条件组合时,一定要用括号明确优先级。我曾经见过一个同事写的规则,因为没有加括号,导致检查结果完全错误。嗯,那天的debug过程相当痛苦。

知识体系总览

为了让你更直观地理解DRC规则文件的整体结构,我画了一张图:

DRC规则文件知识体系 DRC规则文件 文件格式 规则分类 语法入门 SVRF格式 TCL格式 宽度规则 间距规则 包围规则 基本结构 常用命令 WIDTH M1 < 0.18 SPACE M1 < 0.2 ENC M1 CONT < 0.05 掌握这三块,DRC规则文件不再难

这张图把DRC规则文件的核心内容串起来了。你从文件格式入手,了解规则分类,再学习语法,基本上就能看懂大部分规则文件了。

我的经验:刚开始学的时候,别急着写规则。先找几个现成的规则文件读一读,对照版图看看每条规则在检查什么。我记得我第一次读规则文件时,花了整整两天才把一条复杂的包围规则搞清楚。但搞懂之后,后面的规则就一通百通了。

好了,这一章的内容就到这里。规则文件解析是DRC检查的基础,你把这部分吃透了,后面的实战环节会轻松很多。

可可精品资料库