第三章 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跑起来其实不复杂。说白了就是三步:准备、运行、看结果。但每一步都有坑。

第一步:准备文件

你需要三样东西:

  1. 版图文件——GDS或OASIS格式
  2. DRC规则文件——代工厂提供的deck
  3. 运行脚本——告诉工具怎么做

举个例子,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的套路是这样的:

  1. 先看summary——了解总共有多少violation,哪些类型最多
  2. 按严重程度排序——有些是真正的错误,有些只是waive掉的
  3. 定位到版图——在RVE里双击violation,自动跳到版图位置
  4. 分析原因——是间距问题?还是宽度问题?还是层次问题?
  5. 修改版图——回到Virtuoso或ICC2里改

注意:不是所有violation都要修。有些是「假错」,比如天线效应规则,如果你的天线尺寸在安全范围内,可以waive掉。但waive之前,一定要确认清楚。

常见DRC错误类型

错误类型 描述 常见原因
间距违规 两条金属线靠太近 布线太密,或没考虑最小间距
宽度违规 金属线宽度不够 工艺要求的最小线宽没满足
包围违规 Via被金属包围的面积不够 Via离金属边缘太近
密度违规 某层金属密度不达标 需要加dummy metal

我记得有个项目,M1的密度违规报了上千个。一开始我一个个加dummy,后来发现有个脚本可以自动加——嗯,从那以后我再也不手动干了。

3.4 DRC流程知识图谱

下面这张图,是我自己总结的DRC工具使用全流程。你照着这个走,基本不会漏步骤。

DRC工具使用流程 准备阶段 版图文件 (GDS/OASIS) DRC规则文件 (deck) 运行脚本 运行阶段 命令行执行 层次化/Flat模式 生成结果文件 查看阶段 RVE打开结果 查看Summary 定位Violation 调试与修改 分析违规原因 → 修改版图 → 重新DRC 迭代 工具选择:Calibre(推荐)| ICV | Assura 关键文件:.drc.db(结果数据库)| .drc.summary(摘要报告)

这张图把整个流程串起来了。你从左边开始,准备好文件,然后跑工具,再看结果,最后调试修改。如果改完了还有violation,就再跑一遍——直到全部清掉为止。

我的经验:第一次跑DRC,别指望一次过。我做过最夸张的项目,DRC迭代了20多轮。关键是每次迭代都要总结——哪些错误是重复出现的?能不能从源头避免?比如间距违规,如果每次都是同一类问题,那就在布线阶段就注意。

好了,DRC工具入门就讲到这里。记住:工具只是工具,关键是你怎么用它。多跑几次,多看看结果,慢慢就有感觉了。

可可精品资料库