2、IR Drop 基础理论:欧姆定律在PDN中的应用、静态IR Drop与动态IR Drop的区别、电源网格电阻模型

各位工程师朋友,咱们今天聊聊IR Drop。说白了,IR Drop就是电源从芯片外部送到内部晶体管门口时,电压被“吃掉”了一截。我刚开始做后端那会儿,总觉得这玩意儿不就是个电阻分压嘛,有啥好研究的?直到有一次项目在tape-out前一周,静态时序分析怎么都修不完,最后定位到是IR Drop把标准单元的延迟撑大了将近15%。嗯,从那以后,我再也不敢小看这个“简单的欧姆定律”了。

2.1 欧姆定律在PDN中的“变形”

先看最基础的公式:V = I × R。在电源分配网络(PDN)里,这个公式变成了:

IR Drop = I_load × R_PDN

其中 I_load 是芯片工作时的瞬态电流,R_PDN 是从板级VRM到芯片内部晶体管的等效电阻。

你想想看,一个芯片在满负荷工作时,核心电流动辄几十安培甚至上百安培。哪怕PDN的等效电阻只有几毫欧,压降也能达到几百毫伏。我见过一个28nm的项目,芯片功耗做到15W,核心电压1.1V,结果IR Drop算下来有85mV——将近8%的电压损失。这个数字在先进工艺节点下,足以让时序收敛变得非常困难。

PDN的电阻路径其实很长:

  • 板级:VRM输出 → PCB走线 → 去耦电容 → BGA焊球
  • 封装级:焊球 → 封装基板走线 → 凸点/键合线
  • 芯片级:焊盘 → 顶层电源网格 → 垂直通孔 → 底层金属 → 标准单元供电

每一段都有电阻,每一段都会产生压降。我个人习惯在做顶层规划时,先估算一个粗略的“电阻预算”:比如芯片级允许50mV,封装级允许30mV,板级允许20mV,加起来100mV。这样后面做详细仿真时,心里就有底了。

2.2 静态IR Drop vs 动态IR Drop

很多新手容易把这两个概念搞混。我简单说一下:

对比项 静态IR Drop 动态IR Drop
本质 电阻性压降(I×R) 电感性压降(L×di/dt)+ 电阻性压降
电流特性 平均电流,缓慢变化 瞬态电流,快速跳变
主要影响因素 电源网格的直流电阻 封装/芯片的寄生电感 + 去耦电容
仿真方法 静态IR分析(DC求解) 动态IR分析(时域瞬态仿真)
典型场景 持续高功耗模式(如GPU渲染) 时钟沿跳变、寄存器同时翻转
压降波形 平坦,缓慢变化 有尖峰,快速跌落再恢复

静态IR Drop,说白了就是“一直开着大灯”的情况。电流稳定,压降主要看电阻。动态IR Drop则是“频繁开关灯”的情况——电流突然从0A跳到50A,这时候电感上的反电动势(L×di/dt)会产生一个额外的压降尖峰。

我曾经踩过一个坑:一个7nm的AI芯片项目,静态IR Drop仿真结果只有60mV,看起来完全OK。结果芯片回来后,在最高频率跑benchmark时,核心电压跌到了0.72V(标称0.8V),直接导致逻辑错误。后来定位发现,是动态IR Drop在时钟沿附近产生了120mV的尖峰,和静态压降叠加后超过了阈值。从那以后,我要求团队必须同时做静态和动态两种分析,缺一不可。

2.3 电源网格电阻模型

要分析IR Drop,首先得把电源网格抽象成一个电阻网络。我常用的模型有三种:

2.3.1 集总电阻模型(Lumped Model)

最简单粗暴的方式:把整个PDN的电阻合并成一个电阻R_total,然后IR Drop = I_total × R_total。这个模型只适合做快速估算,精度很差。比如一个芯片有多个供电域,每个域的电流密度不同,集总模型完全反映不出来。

// 集总模型估算示例
R_total = R_board + R_package + R_die = 2mΩ + 1mΩ + 3mΩ = 6mΩ
I_total = 50A
IR_Drop = 50A × 6mΩ = 300mV  // 这个值偏大,因为实际电流分布不均匀

2.3.2 分布式电阻网格模型(Distributed Grid Model)

这才是工程上真正用的模型。把电源网格拆成一个个小电阻单元,每个单元代表一段金属走线。然后通过求解大规模线性方程组,得到每个节点的电压。

一个典型的网格单元包含:

  • 水平电阻:代表VDD/VSS金属走线的横向电阻
  • 垂直电阻:代表通孔(Via)的电阻
  • 电流源:代表该区域标准单元抽取的电流

我个人习惯:在做顶层电源规划时,先用分布式网格模型跑一个粗网格(比如50μm间距),快速定位供电薄弱区域。然后对薄弱区域加密网格(比如10μm间距),做精细分析。这样既保证了精度,又控制了仿真时间。

2.3.3 分层电阻模型(Hierarchical Model)

对于超大规模芯片(比如超过10亿门),全芯片的分布式网格模型节点数可能上千万,直接求解太慢。这时候我会用分层模型:

  1. 顶层网格:粗粒度,覆盖整个芯片,包含顶层金属(M9-M10)和主要供电环
  2. 中层网格:中等粒度,覆盖功能模块,包含中间金属层(M5-M8)
  3. 底层网格:细粒度,覆盖标准单元区域,包含底层金属(M1-M4)

求解时,先算顶层,把结果作为边界条件传给中层,再传给底层。这种“自顶向下”的方式,能把计算量降低一个数量级。

2.4 核心知识体系

下面这张图总结了本章的核心逻辑,我建议你保存下来,做项目时对照着看:

IR Drop 基础理论体系 欧姆定律:V = I × R 静态 IR Drop 动态 IR Drop 特征 平均电流 · 直流电阻主导 压降平坦 · 缓慢变化 特征 瞬态电流 · 电感效应主导 压降尖峰 · 快速跌落 电源网格电阻模型 集总电阻模型 分布式网格模型 分层电阻模型

2.5 工程中的几个关键点

最后,我分享几个在实际项目中积累的经验:

关于电阻提取:不要直接用工艺文档里的方块电阻值(Rsh)去算。实际金属走线在制造过程中会有厚度偏差、线宽偏差,这些都会影响电阻。我一般会在电阻值上留10%~15%的裕量,或者直接用foundry提供的RC寄生参数提取工具来算。

关于动态IR Drop的仿真设置:很多人只给一个固定的电流波形,这是不够的。动态IR Drop的峰值出现在时钟沿附近,这时候大量寄存器同时翻转,电流变化率(di/dt)最大。我建议至少设置三种场景:

  • 最差功耗场景(最大平均电流)
  • 最差di/dt场景(最大电流变化率)
  • 最差谐振场景(电流频率与PDN谐振频率重合)