4. DRC 结果分析:RVE界面详解、错误定位与分类、常见错误类型

DRC跑完了,满屏的红色标记,怎么办?

别慌。我刚开始用Siemens EDA那会儿,第一次看到几千个DRC错误,说实话头皮发麻。后来才发现,90%的错误其实都是同一类问题,只是重复报出来而已。关键是你得会用RVE这个工具。

4.1 RVE界面详解:你的错误导航仪

RVE,全称是Result Viewing Environment。说白了,就是Calibre用来展示DRC结果的图形界面。我个人习惯叫它「错误地图」。你想想看,没有地图你怎么在迷宫里找路?

打开RVE的方式很简单:在Calibre Interactive窗口里,点一下「RVE」按钮就行。界面主要分三块:

  • 左侧导航树:按规则类别列出所有错误。比如「METAL1间距违规」、「VIA0缺失」等等。点一下,右侧就会显示对应的错误列表。
  • 右侧错误列表:每条错误都有坐标、层次、规则名称。双击就能跳转到版图对应位置。
  • 底部详情面板:显示当前选中的错误的具体描述。有时候还会给出修改建议。
我的小习惯:每次打开RVE,我第一件事是把错误列表按「规则名称」排序。这样能一眼看出哪种错误最多,先解决大头问题。

4.2 错误定位与分类:别被数量吓到

DRC错误通常分为三类。我在项目中遇到过很多新手,一看到几千个错误就慌了,其实分类一看就清楚:

错误类型 严重程度 常见原因
致命错误 短路、断路、层次缺失
违规错误 间距不足、宽度不够、包围不够
建议性错误 天线效应、密度不均

怎么快速定位?我教你一个方法:

  1. 先看致命错误。短路和断路必须优先解决,否则芯片直接报废。
  2. 再看违规错误。这类错误通常可以通过微调版图解决。
  3. 最后看建议性错误。这类错误一般不影响功能,但会影响良率。
注意:千万不要试图一次性解决所有错误。我曾经见过一个同事,花了一整天去修几百个天线效应错误,结果发现短路问题没改,最后流片回来直接短路。优先级搞反了。

4.3 常见错误类型详解

4.3.1 短路(Short)

短路是最严重的DRC错误。说白了就是两条本不该连在一起的金属线,莫名其妙搭上了。

为什么会这样?常见原因有:

  • 金属线画得太宽,超出了预期区域
  • 不同层的金属通过过孔意外连接
  • 版图编辑时不小心把两条线合并了

在RVE里,短路错误通常用红色高亮显示。双击错误,版图会自动放大到问题区域。我建议你打开「Highlight All」功能,这样所有相关的图形都会高亮,方便看清到底哪里连上了。

避坑指南:我曾经在做一个混合信号芯片时,发现数字地和模拟地短路了。查了半天,原来是一个过孔打错了位置。从那以后,我每次画完版图都会单独检查电源地网络。

4.3.2 断路(Open)

断路和短路正好相反。该连的线没连上,信号传不过去。

断路错误在RVE里通常用黄色或橙色标记。常见场景:

  • 金属线中间有一段缺失
  • 过孔没有完全连接上下两层
  • 布线时绕过了某个障碍物,结果绕断了

怎么修?我个人习惯是:先用RVE的「Net Trace」功能,沿着这条网络走一遍,看看断点在哪里。然后补上缺失的金属或过孔就行。

小技巧:如果断路错误很多,别一个个改。先检查一下是不是整个模块的电源网络都没连上。如果是,那可能是顶层连接的问题,而不是底层版图的问题。

4.3.3 间距违规(Spacing Violation)

间距违规是最常见的DRC错误。说白了就是两条线离得太近了,制造时可能会短路。

不同工艺的间距规则不一样。比如0.18um工艺,金属线间距可能要求0.3um以上。到了7nm工艺,间距可能只有0.05um。但不管怎样,规则就是规则。

在RVE里,间距违规通常用蓝色或紫色标记。双击后,你会看到两条线之间有个箭头,标出了实际距离和最小要求距离。

修改方法很简单:把其中一条线往远处挪一挪。但要注意,挪动一条线可能会引发新的违规。所以我的建议是:

  1. 先看全局,找到密度最高的区域
  2. 优先调整那些「挪一下就能解决多个违规」的线
  3. 改完后重新跑DRC,确认没有引入新问题
注意:间距违规有时候是假错。比如两条线属于同一个网络,那它们之间不需要间距检查。RVE里有个「Filter by Net」功能,可以帮你过滤掉这些假错。

4.4 实战建议:如何高效处理DRC结果

嗯,最后分享一点实战经验。处理DRC结果,我总结了三步法:

  • 第一步:分类统计。打开RVE,看错误列表。把相同类型的错误归到一起,统计数量。
  • 第二步:优先处理致命错误。短路、断路先搞定。这些不改,后面都是白费功夫。
  • 第三步:批量修改。对于间距违规这类重复性错误,写个脚本批量改,别一个个手动调。

你想想看,如果每次DRC都手动改几千个错误,那得改到什么时候?我一般会用Calibre的「DRC Fix」功能,或者写个Skill脚本,自动处理那些规律性的错误。

好了,这一章就到这里。下一章我们会讲怎么优化DRC运行效率,让检查跑得更快。到时候见。