3、DRC规则文件解析:读懂Calibre/SVRF格式的DRC规则
各位同学,今天我们来聊聊DRC规则文件。说实话,我刚入行那会儿,看到那些密密麻麻的规则语句,头都大了。但后来我发现,只要你掌握了套路,这东西其实没那么玄乎。
DRC规则文件,说白了就是代工厂给我们的“设计约束说明书”。它告诉你:哪些地方不能画太窄,哪些地方不能离太近,哪些地方必须包住。今天我就带大家把这份说明书彻底读透。
3.1 SVRF语法基础:规则文件的语言
Calibre用的规则语言叫SVRF(Standard Verification Rule Format)。我个人习惯把它分成三块看:层定义、规则语句、输出语句。
先看一个最简单的例子:
// 层定义
M1 = layer 1
M2 = layer 2
VIA1 = layer 3
// 规则语句:M1最小宽度0.1um
WIDTH M1 < 0.1 {
@ M1最小宽度违规
COPY M1
}
// 输出语句
OUTPUT M1 "m1_width_error.gds"
嗯,这里要注意:WIDTH是检查宽度的关键字,< 0.1是阈值,花括号里是违规后的处理动作。你想想看,这其实就像写if语句一样——如果宽度小于0.1,就报错。
3.2 常见规则类别:宽度、间距、包围、密度
代工厂的规则文件动辄几千行,但核心规则类型就那么几种。我给大家归纳一下:
| 规则类别 | SVRF关键字 | 检查内容 | 典型值(28nm) |
|---|---|---|---|
| 宽度规则 | WIDTH | 金属/多晶硅最小宽度 | M1: 0.1um |
| 间距规则 | SPACE | 同层/异层最小间距 | M1-M1: 0.1um |
| 包围规则 | ENC | 通孔被金属包围的最小尺寸 | VIA1: 0.04um |
| 密度规则 | DENSITY | 金属密度上下限 | 20%~80% |
我在项目中遇到过最坑的一次,就是密度规则。有个客户设计的芯片,金属密度只有12%,代工厂直接拒收。后来我们花了整整两周加dummy metal,才把密度拉到20%以上。所以密度规则千万别忽视。
3.3 宽度规则:别画太细
宽度规则是最基础的。代工厂的光刻机有分辨率极限,你画太细了,生产出来就是断的。
看这个例子:
// M1最小宽度0.1um
WIDTH M1 < 0.1 {
@ M1宽度违规:最小宽度0.1um
COPY M1
}
// M1最大宽度10um(超过要加slot)
WIDTH M1 > 10 {
@ M1宽度违规:最大宽度10um,需加slot
COPY M1
}
为什么要有最大宽度?因为金属太宽了,热膨胀系数不一样,容易把层间介质撑裂。我曾经见过一块芯片,电源线画了20um宽没加slot,流片回来直接裂开...嗯,那场面,挺惨的。
3.4 间距规则:别离太近
间距规则防止短路。同层金属离太近,光刻时可能连在一起;异层金属离太近,寄生电容会变大。
// M1到M1最小间距0.1um
SPACE M1 M1 < 0.1 {
@ M1间距违规:最小间距0.1um
COPY M1
}
// M1到M2最小间距0.2um(跨层)
SPACE M1 M2 < 0.2 {
@ M1-M2间距违规:最小间距0.2um
COPY M1 M2
}
这里有个细节:同层间距和异层间距的阈值往往不同。异层因为有ILD(层间介质)隔开,间距要求反而更宽松。但要注意,如果两层之间有通孔,那包围规则会接管检查。
3.5 包围规则:通孔要包好
包围规则是专门针对通孔(VIA)的。通孔连接上下两层金属,如果金属包不住通孔,电流就会断。
// VIA1被M1包围,每边至少0.04um
ENC M1 VIA1 < 0.04 {
@ M1包围VIA1违规:最小包围0.04um
COPY M1 VIA1
}
// VIA1被M2包围,每边至少0.04um
ENC M2 VIA1 < 0.04 {
@ M2包围VIA1违规:最小包围0.04um
COPY M2 VIA1
}
我建议大家在画通孔阵列时,一定要留足包围余量。代工厂给的0.04um是下限,你最好做到0.05um以上。为什么?因为光刻有对准误差,万一偏了0.01um,你的通孔就露出来了。
3.6 密度规则:别太空也别太满
密度规则是CMP(化学机械抛光)工艺的要求。芯片表面如果金属密度不均匀,抛光时就会凹凸不平。
// M1密度:20%~80%,窗口大小100um x 100um
DENSITY M1 > 0.8 {
@ M1密度违规:密度超过80%
COPY M1
}
DENSITY M1 < 0.2 {
@ M1密度违规:密度低于20%
COPY M1
}
密度检查有个关键参数:窗口大小。代工厂通常用100um x 100um的滑动窗口来算密度。你想想看,如果窗口太小,局部密度波动大;窗口太大,又看不出局部问题。一般先进工艺会要求多个窗口尺寸同时检查。
核心要点:DRC规则文件虽然长,但核心逻辑就四个字——宽、距、包、密。宽度管线宽,间距管短路,包围管通孔,密度管平坦度。把这四个维度吃透了,任何工艺的规则文件你都能快速上手。
3.7 规则文件的结构化阅读方法
拿到一份新的DRC规则文件,我一般按这个顺序读:
- 先看层定义:搞清楚每层叫什么名字,对应什么物理层
- 再看宽度规则:了解最小线宽,这决定了你的设计能多密
- 接着看间距规则:注意同层和异层的区别
- 然后看包围规则:通孔相关的尺寸要记牢
- 最后看密度规则:确认窗口大小和密度上下限
我曾经带过一个新人,他拿到规则文件直接从头读到尾,读了三天还没读完。我说你傻啊,规则文件是按字母顺序排的,又不是按重要性排的。你先看目录,找到关键规则再看细节,效率高得多。
小技巧:用grep命令快速定位规则。比如你想查M1的宽度规则,直接grep -i "width.*M1" rule_file.svf。别傻乎乎地手动翻页。
3.8 规则文件中的“潜规则”
代工厂的规则文件里,有些规则是“建议性”的,有些是“强制性”的。怎么区分?看关键字:
- MUST:强制规则,不满足就流片失败
- SHOULD:建议规则,不满足可能影响良率
- OPTIONAL:可选规则,一般用于特殊工艺
嗯,这里要注意:千万别把SHOULD当成可选。我见过有人把SHOULD规则全跳过了,结果流片回来良率只有30%。代工厂写SHOULD,其实是“强烈建议”,你最好当MUST来对待。
警告:规则文件中的注释(以//开头的内容)也要仔细看。代工厂经常在注释里写一些“隐藏规则”,比如“建议M1宽度不小于0.12um以保证良率”。这些注释虽然不参与DRC检查,但往往是代工厂的经验总结。
3.9 实战:读懂一段完整的规则
最后,我们来看一段真实的规则片段(简化版):
// ============================================
// 层定义
// ============================================
M1 = layer 1
M2 = layer 2
V1 = layer 3
// ============================================
// M1宽度规则
// ============================================
WIDTH M1 < 0.1 {
@ M1最小宽度违规:最小宽度0.1um
COPY M1
}
// ============================================
// M1间距规则
// ============================================
SPACE M1 M1 < 0.1 {
@ M1间距违规:最小间距0.1um
COPY M1
}
// ============================================
// V1包围规则
// ============================================
ENC M1 V1 < 0.04 {
@ M1包围V1违规:最小包围0.04um
COPY M1 V1
}
ENC M2 V1 < 0.04 {
@ M2包围V1违规:最小包围0.04um
COPY M2 V1
}
// ============================================
// M1密度规则
// ============================================
DENSITY M1 > 0.8 {
@ M1密度违规:密度超过80%
COPY M1
}
DENSITY M1 < 0.2 {
@ M1密度违规:密度低于20%
COPY M1
}
你看,是不是很清晰?每一段规则都有明确的注释,告诉你它在检查什么。你只要按这个结构去读,任何规则文件都能快速理解。
好了,关于DRC规则文件的解析,今天就讲到这里。记住四个字:宽、距、包、密。下次你拿到一份规则文件,先看这四类规则,其他的都是锦上添花。
可可精品资料库