第二章:设计规则检查(DRC)基础
各位同学,大家好。今天我们聊聊DRC——设计规则检查。这玩意儿,说白了就是芯片设计的“交通规则”。你开车不守交规,轻则扣分罚款,重则车毁人亡。芯片设计也一样,不守规则,流片回来就是一堆废硅。
我刚开始做版图那会儿,觉得DRC就是走个过场。直到有一次,一个最小间距的违规没修干净,流片回来那根信号线直接短路了。嗯,从那以后,我再也不敢小看DRC了。
一、DRC到底是什么?
DRC,全称Design Rule Check,设计规则检查。它的任务很简单:检查你的版图是否符合代工厂给出的制造规则。
你想想看,芯片制造是一个物理过程。光刻、刻蚀、沉积,每一步都有物理极限。线宽太窄,光刻机刻不出来;间距太小,相邻导线会串扰甚至短路;面积太小,接触孔可能打不透。代工厂把这些极限总结成一条条规则,就是设计规则。
DRC就是自动检查这些规则的工具。它把版图数据和规则文件一起读进去,然后告诉你:哪里违规了,违规了什么规则,违规的位置在哪。
核心要点:DRC不是“建议”,是“必须”。所有DRC违规必须全部清掉,才能进入下一阶段。这是流片的硬门槛。
二、常见设计规则有哪些?
设计规则种类很多,不同代工厂、不同工艺节点都不一样。但万变不离其宗,最核心的就三类:最小宽度、最小间距、最小面积。我一个个说。
1. 最小宽度(Minimum Width)
这条规则规定:版图上任何一条走线、一个图形,它的宽度不能小于某个值。为什么?因为太细的线,光刻时容易断掉,或者电阻太大,电流过不去。
举个例子,在0.18μm工艺里,金属1的最小宽度通常是0.24μm。你画一根0.2μm的线,DRC就会报错。
我在项目中遇到过一个情况:为了省面积,我把一条电源线画窄了0.02μm。结果DRC报了一堆违规,我还不以为然,觉得就差这么一点没事。后来老工程师告诉我:代工厂的工艺窗口就那么宽,你差0.02μm,良率可能就掉5个点。从那以后,我再也不在这种地方“钻空子”了。
2. 最小间距(Minimum Spacing)
这条规则规定:两个相邻图形之间的间距不能小于某个值。为什么?因为太近了,光刻时可能连在一起,或者产生寄生效应。
最小间距分好几种情况:
- 同层间距:同一层金属上两条线之间的距离
- 不同层间距:不同金属层之间的垂直距离(通常由介质层厚度决定)
- 特殊间距:比如阱与阱之间、有源区与阱边沿之间
我记得有一次,一个同事画差分对,两条线走了很长一段平行线,间距刚好卡在规则边界上。DRC没报错,但我建议他拉开一点。为什么?因为工艺波动时,间距可能变小,导致差分对的匹配性变差。这种“擦边球”能不打就不打。
3. 最小面积(Minimum Area)
这条规则规定:版图上任何一块独立的图形,它的面积不能小于某个值。为什么?因为太小的图形,刻蚀时可能被完全刻掉,或者接触孔打上去根本连不上。
最小面积通常和最小宽度是联动的。比如金属1的最小面积是0.2μm²,你画一个0.4μm宽、0.5μm长的方块,面积0.2μm²,刚好达标。但如果你画一个0.2μm宽、1μm长的细长条,面积虽然也是0.2μm²,但宽度违规了,照样报错。
我的个人习惯:画版图时,我会把最小宽度和最小面积记在脑子里。画完一层,先自己扫一遍,心里有数。等跑DRC时,违规数量会少很多,省时间。
三、DRC的运行流程
DRC怎么跑?说白了就三步:准备、运行、修错。我画个图给你看。
这张图很清楚了。我展开讲讲每个阶段。
准备阶段
你得有两样东西:版图数据和规则文件。版图数据通常是GDS或OASIS格式,规则文件是代工厂提供的,后缀可能是.drc、.rul、.tf之类的。
这里有个坑:规则文件版本要对。代工厂会更新规则,你用旧版本跑DRC,可能漏掉一些新加的规则。我曾经就因为用了旧规则文件,漏掉了一条天线效应规则,结果流片回来芯片ESD性能很差。后来查了半天,才发现是规则文件没更新。
运行阶段
DRC工具会把版图拆成一个个小格子,然后逐条规则去比对。这个过程可能很快(几分钟),也可能很慢(几小时),取决于版图大小和规则数量。
常用的DRC工具有:Calibre DRC、ICV、Assura等。我个人最常用的是Calibre,它的速度和精度都不错。
运行完成后,工具会生成一个报告,列出所有违规。报告里会告诉你:违规的规则名称、违规的位置坐标、违规的图形信息。
修错阶段
这是最花时间的阶段。拿到报告后,你要在版图编辑器里定位到违规位置,然后手动修改版图。改完之后,再跑一遍DRC,看看还有没有违规。如此循环,直到零违规。
警告:修错时不要“拆东墙补西墙”。你改了一个违规,可能引发新的违规。所以每次修改后,一定要全芯片跑一遍DRC,不能只跑局部。
四、DRC报告怎么看?
DRC报告通常长这样:
RULE: M1_MIN_WIDTH (金属1最小宽度检查)
VIOLATION: 宽度 = 0.18μm, 要求 ≥ 0.24μm
LOCATION: (123.45, 678.90) 在顶层模块 top_chip
LAYER: M1 (金属1层)
CELL: buffer_inst (实例名)
RULE: M1_MIN_SPACE (金属1最小间距检查)
VIOLATION: 间距 = 0.20μm, 要求 ≥ 0.24μm
LOCATION: (234.56, 789.01) 在顶层模块 top_chip
LAYER: M1 (金属1层)
CELL: mux_inst (实例名)
看到报告后,我的习惯是:先看违规数量,如果太多(比如上千个),先别急着修,看看是不是规则设置错了,或者是不是有全局性的问题。如果只有几十个,那就一个个定位、修改。
五、避坑指南
最后,我分享几个实战中容易踩的坑:
- 规则文件别搞混:不同工艺节点、不同代工厂的规则文件不能混用。我曾经把0.18μm的规则用在0.13μm的版图上,跑出来的结果全是错的。
- 别忽略“软规则”:有些规则是“建议性”的,比如密度规则。虽然不强制,但违反了会影响良率。我的建议是:能遵守就遵守。
- 修错要彻底:不要只修DRC报出来的那一个点,要看看周围有没有类似的问题。有时候一个违规是系统性的,修一个点解决不了根本问题。
- 版本管理要做好:每次修改版图后,记得保存版本。万一改坏了,还能回退。我见过有人改了一整天,结果发现改错了,又没有备份,只能从头再来。
好了,DRC的基础知识就讲到这里。记住一句话:DRC是芯片制造的“通行证”,没有它,你的设计永远停留在纸上。下一章我们聊聊更进阶的内容——天线效应和Latch-up规则,那才是真正考验功力的地方。
课后小作业:打开你的版图工具,跑一次DRC,看看你的设计有多少违规。然后挑一个违规,手动修改,再跑一次。感受一下这个“准备-运行-修错”的循环。
可可精品资料库