4、DRC结果解读:如何阅读DRC报告
DRC跑完了,一堆错误飘红,怎么办?
别慌。我刚开始带新人时,最常见的问题就是——看到几百个DRC错误,直接懵了。其实DRC报告没那么可怕,关键是你得知道怎么看。
4.1 DRC报告长什么样?
不同EDA工具输出的报告格式略有差异,但核心信息都一样。我以Calibre为例,这是业内最常用的工具之一。
一份典型的DRC报告,包含这几个部分:
- 头部信息:工具版本、运行时间、规则文件路径
- 错误摘要:按规则分类的错误数量统计
- 详细错误列表:每个错误的具体信息
- 结束标记:报告结束,总错误数汇总
嗯,这里要注意——很多人只看错误数量,不看摘要。其实摘要能帮你快速定位问题集中区域。
4.2 错误类型:你得认识这几种
DRC错误大致分三类,我按严重程度排个序:
| 错误类型 | 严重程度 | 典型例子 |
|---|---|---|
| 硬性错误(Hard Error) | 必须修复 | 金属间距不足、有源区重叠 |
| 软性错误(Soft Error) | 建议修复 | 天线效应、密度不足 |
| 警告(Warning) | 可忽略但需确认 | 浮空节点、未连接引脚 |
我在项目中遇到过一种情况:新人看到几百个Warning,急得不行。其实有些Warning是规则文件本身过于保守导致的。你想想看,如果每个Warning都去修,那项目周期得翻一倍。
注意:硬性错误必须清零才能tape-out。软性错误和警告,需要结合设计规范判断是否修复。
4.3 坐标信息:找到错误位置
DRC报告里每个错误都会给出坐标。格式一般是:
ERROR: M1.SPACE.1 - Metal1 spacing < 0.18um
@ (123.45, 678.90) layer: M1
Cell: TOP/INST_A/INST_B
坐标的单位是微米(um),对应版图坐标系的原点。我习惯的做法是:
- 先看Cell路径,确定错误在哪个模块
- 再看坐标,在版图里定位
- 最后看层次信息,确认是哪层金属或器件
说白了,坐标就是地图上的经纬度。你光知道经纬度没用,得知道它在哪个城市(Cell)才行。
4.4 层次信息:看懂层名
层次信息告诉你错误发生在哪一层。常见的层名缩写:
- M1, M2, M3...:金属层
- V1, V2, V3...:通孔层
- POLY:多晶硅层
- ACT:有源区
- NW:N阱
- CONT:接触孔
举个例子,错误信息里写「M1.SPACE.1」,意思就是金属1层的间距规则被违反了。我见过有人把M1的间距错误当成M2的去修,结果修了半天发现位置不对——这就是没看清层次信息。
4.5 RVE工具的使用
光看文本报告效率太低。RVE(Results Viewing Environment)就是帮你可视化DRC结果的工具。
我个人习惯的RVE操作流程:
- 加载结果:打开RVE,导入DRC运行生成的数据库文件(.db或.asc)
- 查看摘要:RVE会按规则分组显示错误数量,双击某条规则可以展开所有实例
- 定位错误:选中一个错误,RVE会自动在版图窗口中高亮显示
- 查看详情:右侧面板会显示该错误的完整信息,包括坐标、层次、违反的规则描述
- 标记状态:修完一个错误后,可以标记为「已检查」或「已修复」
小技巧:RVE里有个「Filter」功能,可以按错误类型、层次、坐标范围筛选。我经常用它只看M1层的错误,这样不会眼花。
4.6 知识体系总览
下面这张图帮你理清DRC结果解读的核心逻辑:
4.7 实战经验:如何高效排查DRC错误
最后分享一个我自己的排查流程:
- 先看总数:如果错误超过1000个,大概率是规则文件配置有问题,或者有全局性错误(比如电源地短路)
- 再看分布:错误集中在某个模块?还是分散在全芯片?集中问题好修,分散问题要警惕
- 从大到小修:先修大面积的错误(比如整条总线间距不够),再修零散的小错误
- 善用RVE的Group功能:把相同类型的错误分组,批量定位
核心要点总结:
- DRC报告 = 头部 + 摘要 + 详细列表
- 错误分硬性、软性、警告三类,硬性必须清零
- 坐标 + Cell路径 + 层次信息 = 精确定位
- RVE是可视化利器,学会用Filter和Group
嗯,DRC结果解读这块,说白了就是「看得懂报告,用得好工具」。刚开始可能会觉得信息量太大,但跑过两三个项目后,你闭着眼睛都能找到问题在哪。
可可精品资料库