2. 常见规则类型:设计规则(DRC)、电气规则(ERC)、时序规则(Timing)、物理规则(Physical)

做芯片设计这些年,我越来越觉得——规则检查就像是芯片的体检报告。你拿到一份报告,上面密密麻麻写满了各种指标。哪些是红线?哪些是警告?哪些可以忽略?这得心里有数。

今天咱们就把这四类最常见的规则掰开揉碎了讲。说白了,它们分别管的是:能不能做出来、会不会出问题、跑得快不快、放不放得下。

2.1 设计规则(DRC)—— 工艺厂的硬约束

DRC 全称 Design Rule Check。这是芯片设计里最基础、也最不讲情面的一类规则。为什么?因为它是工艺厂定的,你违反了,流片出来就是废片。

我刚开始做后端时,总觉得 DRC 就是一堆数字游戏。直到有一次,一个金属线间距差了 0.02 微米,流片回来那根线直接短路了。嗯,从那以后我再也不敢小看 DRC。

核心要点:DRC 检查的是版图几何图形是否符合工艺制造能力。

常见的 DRC 规则包括:

  • 最小线宽:金属线、多晶硅线不能太细,否则刻蚀时会断
  • 最小间距:同层金属之间不能靠太近,否则会短路
  • 最小面积:某些图形面积太小,光刻时可能无法成像
  • 包围规则:过孔周围要有足够的金属包围,否则接触不良

举个例子,一个典型的 DRC 规则文件里会这样写:

// 金属1最小线宽
METAL1_WIDTH_MIN = 0.18um

// 金属1到金属1最小间距
METAL1_SPACE_MIN = 0.20um

// 过孔包围金属1的最小尺寸
VIA1_ENC_METAL1_MIN = 0.05um

你想想看,这些数字不是随便写的。工艺厂会根据光刻机的分辨率、刻蚀工艺的偏差来定。我见过不少新手,为了省面积把线宽压到极限,结果 DRC 一片红。

我的习惯:做 DRC 时,我会留 10% 的余量。比如规则要求最小 0.18um,我做到 0.2um。这样即使工艺有波动,也能保证良率。

2.2 电气规则(ERC)—— 电路的电气健康检查

ERC 全称 Electrical Rule Check。它不关心你的线画得对不对,它关心的是——你的电路能不能正常工作。

我记得有一次做模拟芯片,ERC 报了一个「浮空栅极」的警告。我当时觉得没什么,结果仿真时那个管子的工作点完全不对。查了半天,原来是栅极没接好。

ERC 主要检查以下几类问题:

  • 浮空节点:MOS 管的栅极悬空,电荷积累会导致不确定状态
  • 电源短路:VDD 和 VSS 直接连在一起,电流会无限大
  • 驱动能力不匹配:一个弱驱动门带了太多负载,信号爬不上去
  • 天线效应:长金属线在刻蚀时收集电荷,可能击穿栅氧

这里有个典型的 ERC 违例:

// 警告:浮空栅极
WARNING: Floating gate detected at net N123
  - 连接到晶体管 M45 的栅极
  - 建议:检查该节点是否应该接电源或地

我曾经踩过的坑:有一次做数字模块,ERC 报了一个「电源域交叉」的问题。我没在意,结果芯片工作时,两个不同电压域之间发生了闩锁效应,芯片直接烧了。从那以后,ERC 的每一个警告我都会认真看。

2.3 时序规则(Timing)—— 芯片能不能跑起来

时序规则,说白了就是检查你的芯片能不能在目标频率下正常工作。这是数字芯片设计里最让人头疼的部分,没有之一。

我刚开始做 STA(静态时序分析)时,总觉得 setup time 和 hold time 就是两个数字。直到有一次,一个设计在 500MHz 下跑得好好的,换到 600MHz 就随机出错。查了两个月,发现是一条路径的 setup 违例。

时序规则主要包含:

  • 建立时间检查(Setup Check):数据必须在时钟沿之前稳定下来
  • 保持时间检查(Hold Check):数据必须在时钟沿之后保持稳定
  • 时钟偏斜(Clock Skew):时钟到达不同寄存器的时差
  • 最大/最小延迟:路径延迟不能太长也不能太短

一个典型的时序报告长这样:

Path: regA/Q -> regB/D
Slack: -0.15ns (VIOLATED)
  - 数据路径延迟: 1.85ns
  - 时钟周期: 2.00ns
  - 建立时间要求: 0.10ns
  - 时钟偏斜: 0.10ns

分析:数据路径延迟 1.85ns + 建立时间 0.10ns + 时钟偏斜 0.10ns = 2.05ns
时钟周期 2.00ns,所以 slack = 2.00 - 2.05 = -0.15ns

关键点:Slack 为负值,说明这条路径时序不满足。需要优化逻辑或降低频率。

我个人习惯在做时序分析时,先看最差的几条路径。因为往往最差的那条路径,就是整个芯片的瓶颈。

2.4 物理规则(Physical)—— 芯片的物理实现约束

物理规则,管的是芯片的「摆放」问题。你的电路再完美,放不下也是白搭。

我记得有一次做大型 SoC,逻辑综合通过了,时序也过了,结果布局布线时发现——核心模块的面积太大,芯片放不下。最后只能重新做 floorplan,折腾了两个月。

物理规则主要包括:

  • 面积约束:芯片总面积不能超过指定大小
  • 密度规则:金属密度不能太高也不能太低,否则 CMP 工艺会出问题
  • 天线规则:长走线要加天线二极管,防止刻蚀损伤
  • ESD 规则:IO 口要有静电保护结构

这里有个密度规则的例子:

// 金属密度要求
METAL_DENSITY_MIN = 20%
METAL_DENSITY_MAX = 80%

// 如果某区域密度低于 20%,需要加 dummy metal
// 如果密度高于 80%,需要挖掉部分金属

我的经验:做物理验证时,我会先跑一遍 DRC 和 LVS,再跑物理规则。因为物理规则往往和 DRC 有交叉,先解决 DRC 问题,物理规则会少很多假错。

2.5 四类规则的关系

这四类规则不是孤立的。它们之间互相影响,牵一发而动全身。

举个例子:你为了修时序违例,把一条路径上的管子尺寸加大了。结果呢?面积变大了,DRC 可能报密度违例。ERC 可能报驱动能力不匹配。物理规则可能报面积超限。

所以做规则检查,一定要有全局观。不能头痛医头,脚痛医脚。

芯片规则检查体系 DRC 设计规则 几何图形检查 ERC 电气规则 电路健康检查 Timing 时序规则 频率/延迟检查 Physical 物理规则 面积/密度检查 四类规则的关系 DRC 是基础,ERC 保功能,Timing 定性能,Physical 管实现 修改任何一类规则,都可能影响其他三类

这张图把四类规则的关系说得很清楚了。DRC 是地基,ERC 是框架,Timing 是性能指标,Physical 是最终实现。缺一不可。

总结一下:

  • DRC 管的是「能不能做出来」—— 工艺厂的硬约束
  • ERC 管的是「会不会出问题」—— 电路的电气健康
  • Timing 管的是「跑得快不快」—— 时序是否满足
  • Physical 管的是「放不放得下」—— 物理实现是否可行

做芯片设计这么多年,我最大的体会就是:规则检查不是走形式,它是芯片质量的最后一道防线。你偷懒跳过一步,流片回来可能就是几百万的损失。

嗯,这一章就到这里。记住这四类规则,后面我们会一个个深入讲怎么检查、怎么修。

可可精品资料库