第三章 DRC工具使用入门
说实话,DRC工具这东西,刚入行的时候觉得它就是个「找茬的」。后来做多了才明白——它其实是你的第一道防线。今天我就带大家把主流DRC工具摸个透。
3.1 主流DRC工具介绍
目前业界主流的DRC工具有三款:Calibre、ICV和Assura。我这些年三款都用过,各有各的脾气。
Calibre
Mentor(现属Siemens)家的王牌。说实话,这玩意儿市场占有率最高,我见过的代工厂基本都支持。它的特点是:
- 速度快——尤其是大版图,Calibre的层次化处理很聪明
- 规则写法灵活——SVRF语言,上手不难
- 调试方便——RVE界面,一眼就能看到问题在哪
我个人习惯用Calibre做最终签核。为什么?因为代工厂的DRC deck基本都是基于Calibre写的,你用别的工具跑,结果可能对不上。
ICV
Synopsys家的。我记得有个项目,客户指定要用ICV,我只好临时学。它的特点:
- 和ICC2整合好——如果你用Synopsys的流程,ICV是亲儿子
- 内存优化不错——处理超大版图时,比Calibre省内存
- 规则语言是TCL-based——如果你会TCL,上手很快
嗯,这里要注意:ICV的规则写法跟Calibre差别挺大。你如果习惯了Calibre,刚开始用ICV会有点别扭。
Assura
Cadence家的老将。说实话,现在用的人少了,但有些老项目还在用:
- 和Virtuoso整合好——直接在版图编辑器里跑,方便
- 适合小规模——全芯片级别,我建议还是用Calibre或ICV
- 逐渐被PVS取代——Cadence现在主推PVS了
我的建议:如果你是新手,先学Calibre。代工厂支持最广,资料最多。等你把Calibre玩熟了,再学ICV或Assura,一通百通。
3.2 DRC运行流程
DRC跑起来其实不复杂。说白了就是三步:准备、运行、看结果。但每一步都有坑。
第一步:准备文件
你需要三样东西:
- 版图文件——GDS或OASIS格式
- DRC规则文件——代工厂提供的deck
- 运行脚本——告诉工具怎么做
举个例子,Calibre的DRC运行脚本长这样:
// Calibre DRC run script
LAYOUT PATH "top.gds"
LAYOUT PRIMARY "TOP"
LAYOUT SYSTEM GDSII
DRC RESULTS DATABASE "top.drc.db"
DRC SUMMARY REPORT "top.drc.summary"
// 包含规则文件
INCLUDE "foundry_rule.drc"
// 运行检查
DRC CHECK ALL
// 输出结果
DRC RESULTS DATABASE "top.drc.db"
我曾经犯过一个低级错误——忘了指定LAYOUT PRIMARY。结果工具找不到顶层cell,跑了一晚上报错。嗯,从那以后我每次都会检查这个参数。
第二步:运行DRC
命令行跑起来很简单:
calibre -drc -hier run_script.drc
这里有个小技巧:加个 -hier 参数,用层次化模式跑。大版图能快不少。我见过有人全芯片跑flat模式,等了三天还没跑完……
避坑指南:跑之前先检查磁盘空间。DRC结果文件有时候能大到几十GB。我曾经在服务器上跑了一夜,第二天发现磁盘满了,结果全白跑。
第三步:查看结果
跑完之后,你会得到两个文件:
- .drc.db——结果数据库,用RVE打开
- .drc.summary——文本摘要,快速看有多少violation
3.3 DRC结果查看与调试
好了,现在你跑完了DRC,看到一堆violation。别慌,我来教你怎么看。
用RVE看结果
Calibre的RVE(Results Viewing Environment)是个好东西。打开方式:
calibre -rve top.drc.db
RVE界面会显示:
- 每个violation的类型(比如M1.S.1)
- 坐标位置
- 涉及的层次
- 违反了什么规则
你想想看,几百个violation,一个个手动找?那不得累死。RVE可以按类型分组,你优先处理数量最多的那种。
调试技巧
我个人调试DRC的套路是这样的:
- 先看summary——了解总共有多少violation,哪些类型最多
- 按严重程度排序——有些是真正的错误,有些只是waive掉的
- 定位到版图——在RVE里双击violation,自动跳到版图位置
- 分析原因——是间距问题?还是宽度问题?还是层次问题?
- 修改版图——回到Virtuoso或ICC2里改
注意:不是所有violation都要修。有些是「假错」,比如天线效应规则,如果你的天线尺寸在安全范围内,可以waive掉。但waive之前,一定要确认清楚。
常见DRC错误类型
| 错误类型 | 描述 | 常见原因 |
|---|---|---|
| 间距违规 | 两条金属线靠太近 | 布线太密,或没考虑最小间距 |
| 宽度违规 | 金属线宽度不够 | 工艺要求的最小线宽没满足 |
| 包围违规 | Via被金属包围的面积不够 | Via离金属边缘太近 |
| 密度违规 | 某层金属密度不达标 | 需要加dummy metal |
我记得有个项目,M1的密度违规报了上千个。一开始我一个个加dummy,后来发现有个脚本可以自动加——嗯,从那以后我再也不手动干了。
3.4 DRC流程知识图谱
下面这张图,是我自己总结的DRC工具使用全流程。你照着这个走,基本不会漏步骤。
这张图把整个流程串起来了。你从左边开始,准备好文件,然后跑工具,再看结果,最后调试修改。如果改完了还有violation,就再跑一遍——直到全部清掉为止。
我的经验:第一次跑DRC,别指望一次过。我做过最夸张的项目,DRC迭代了20多轮。关键是每次迭代都要总结——哪些错误是重复出现的?能不能从源头避免?比如间距违规,如果每次都是同一类问题,那就在布线阶段就注意。
好了,DRC工具入门就讲到这里。记住:工具只是工具,关键是你怎么用它。多跑几次,多看看结果,慢慢就有感觉了。
可可精品资料库