前阵子一个做硬件的朋友跟我抱怨,他板子上的DDR读写偶尔出错,示波器抓到内核电源1.8V上有明显的噪声尖峰,PCB上并了一堆电容也没见好转。这个问题十有八九出在电源分配网络(PDN)上,光靠经验和原理图猜电容布局,已经很难解决问题了。要真正把电源平面的阻抗特性看透,需要用场仿真工具做一次完整的电源完整性(PI)分析。这篇文章就用一个实际会遇到的四层板案例,完整演示在ADS里如何用Momentum进行电源完整性分析:怎么算目标阻抗、怎么建电源地平面模型、怎么提取Z参数,以及最后怎么反推去耦电容策略。
1. 先把PDN目标阻抗这笔账算清楚
电源完整性领域的核心逻辑其实特别简单:从芯片电源引脚往电源网络看进去的输入阻抗Z(f),必须在整个芯片工作频段内始终低于某一个阈值。否则,芯片内部逻辑翻转时产生的瞬态电流ΔI,流经这个阻抗就会形成电压跌落,对应公式是:
ΔV = Z(f) × ΔI(t)
把这个式子挪一下,把ΔV换成芯片允许的最大纹波,得到的就是目标阻抗Ztarget。这是后续所有工作的一杆秤,仿真的每一根曲线最后都要拿它来比。
Ztarget的计算方法如下:
Ztarget = (Vcc × Ripple%) / ΔI
我拿一个很典型的核心供电场景来算:Vcc=1.8V,允许纹波5%,芯片瞬态电流变化量ΔI=2A。算下来:
Ztarget = (1.8 × 0.05) / 2 = 0.045Ω = 45mΩ
也就是说,在仿真曲线上,从10kHz到几百MHz,整个频段内从芯片电源脚看进去的阻抗都不能高于45mΩ。这里有个容易踩的坑:很多新手会把目标阻抗当成某个单一频率的指标,实际它是全频段指标。不同频段负责"扛指标"的东西不一样,低频靠远端模块和板上大容量电容,中频靠中等容量的去耦电容,高频靠小封装低ESL的电容和电源地平面本征分布电容。做Momentum仿真,主要看的就是中高频这段,而这段恰恰是电路仿真很难精确预估的部分。
那么仿真频率上限取到多少合适?这不是随便定的,要跟数字信号的上升沿挂钩。工程上常用估算式:
BW ≈ 0.35 / tr
如果信号上升沿tr=1ns,带宽约350MHz;tr=0.5ns,带宽约700MHz。考虑到谐波的影响,我一般习惯留一倍裕量,直接扫到2GHz。频率下限方面,电源完整性关心低频纹波,所以从10kHz开始扫是合理的,但这里有个重要前提:Momentum是基于矩量法的频域求解器,处理不了DC点,10kHz已经逼近它能仿真的实用下限。再往下的频段,要靠VRM模型和稳压器闭环输出阻抗来补,这超出了平面电磁仿真的范畴。
2. 选择Momentum打PI分析的底层逻辑:矩量法凭什么能算电源平面
很多人的第一反应是:电源完整性直接用SPICE或者ADS的电路仿真不就行了,为什么要费劲去跑Momentum?这个理解对了一半。电路仿真里的PDN模型,电容和寄生电感的取值基本靠经验公式或厂商文档,但电源平面本身是一个二维分布结构,它的谐振模式、边缘辐射、开槽效应,全靠等效成几个理想RLC是模拟不出来的。尤其你去耦电容怎么摆、摆在哪个位置对阻抗谐振点有什么影响,这种空间分布信息电路级仿真给不了。
Momentum在ADS里是平面矩量法(Method of Moments)电磁求解器。它把导体表面离散成一个个网格,通过求解积分方程得到表面电流分布,再换算成端口网络参数。电源平面本质上就是一对平行板导体,中间夹着介质材料,这恰好是Momentum最擅长处理的几何结构。用它的Multi-Layer模型,可以把叠层、介质厚度、介电常数、金属电导率都建进去,板级结构的谐振腔效应会被真实反映出来。
同样是电磁求解,为什么不直接用3D全波工具?我个人的经验是:没必要。3D全波求解器(例如FEM类)在封装级、连接器级的高频细节分析上有优势,但电源平面这种大尺寸、薄介质的结构,用3D网格剖分,计算量会大得离谱,收敛还慢。Momentum作为2.5D平面求解器,剖分的是二维表面网格,一个60mm×100mm的平面,用2mm网格跑出来也就几百到一千多个网格,几分钟出结果。这个性价比对PI迭代优化来说非常关键,你改一次电容布局就要重新跑一轮,如果每次要等一晚上,项目根本没法推进。
三类工具我放在一起对比过,特点非常清晰:
| 工具类型 | 能不能精确反映平面谐振 | 能不能反映电容位置影响 | 计算速度 | 典型场景 |
|---|---|---|---|---|
| 电路级PDN仿真 | 不能,靠等效电路 | 有限,靠估算 | 极快 | 系统级电源链路评估 |
| Momentum平面EM | 能 | 能 | 快 | 关键区域电源平面优化 |
| 3D全波EM仿真 | 能 | 能 | 慢 | 封装、连接器、多过孔细节 |
Momentum不是万能的,它的短板也很明确:真到了需要精确评估整板PDN的时候,比如几十层板、上百个电容,或者要看DC压降分布,那就不适合了。我不知道大家用的哪个版本,现在ADS里集成了更面向整板PDN分析的PIPro,但如果你跟我一样,主要工作是解决某块关键IC、某个局部电源平面区域的阻抗问题,Momentum完全够用,而且上手路径更简单,一步一个坑都清楚。
3. 建模实操:叠层参数、平面几何与端口布局的完整处理
3.1 叠层和板材参数必须按真实数据填
进入Momentum之前,先在Layout窗口里画好要分析的平面。以一个四层板为例,我习惯把电源完整性分析关注的两层定义为L2和L3,也就是地层和电源层紧耦合,这样平面电容最大,对高频去耦最有利:
| 层 | 功能 | 材料 | 厚度 | 关键参数 |
|---|---|---|---|---|
| L1 | 表贴器件与走线 | 铜 | 35μm | 电导率5.8e7 S/m |
| L2 | GND平面 | 铜 | 35μm | 作为参考回流层 |
| 介质1 | L1-L2隔离 | FR4 | 100μm | Dk=4.4,tanδ=0.02 |
| L3 | VDD平面(1.8V) | 铜 | 35μm | 本次分析的目标网络 |
| 介质2 | L2-L3隔离 | FR4 | 800μm | 这层介质厚度决定平板电容和谐振 |
| L4 | 底层布线或平面 | 铜 | 35μm | 视需要建模 |
这些参数在Layout窗口的 Momentum -> Substrate -> Create/Modify Multi-Layer Substrate... 里设置。介质厚度不是随便填的,它直接影响电源地平面之间的寄生电容大小和谐振频率位置。Dk也一样,FR4在1GHz附近的实际Dk通常在4.2到4.6之间,不同板材厂家的数据可能有5%甚至10%的差异,这个误差最后会反映成谐振频点的偏移,后面第六节我会专门讲怎么跟实测对上。
3.2 平面几何尺寸与端口位置定义
本次示例的VDD平面尺寸取60mm×100mm,这个尺寸是比较典型的小型核心板规模。在Layout中画一个矩形,注意要把平面放在对应的Metal层上。端口放置是建模里最需要动脑子的地方,它直接决定你提取的Z参数物理意义是什么。
如果只是看某个芯片供电点的输入阻抗,就在芯片电源引脚对应的位置打一个内部端口(Internal Port)。Momentum里端口有两种常用形态:Edge Port沿平面边缘添加,适合做模块边界端口;Internal Port则放在平面内部,模拟一个理想电流注入点。从芯片封装电源脚流入平面的电流,就是典型的内部端口场景。
如果你不仅关心阻抗,还想评估噪声从某个源头传播到敏感芯片的耦合强度,那就需要至少两个端口:一个放在噪声源(比如DC-DC开关节点或远端模块供电入口),一个放在受害者芯片电源脚,然后看Z21传传输阻抗。Momentum会一次性把端口间的完整Z矩阵算出来,这在设计早期判断去耦位置是否合理非常有用。
3.3 去耦电容安装点的预布端口
这一步是很多教程不会细讲的,但直接决定了后处理效率。Momentum本身仿真的是不含去耦电容的裸电源平面,电容必须在仿真结果出来之后接上去。如果你想在仿真阶段就尝试不同的电容位置和容值组合,最简单的做法是预先在Layout上打算放电容的位置全部标记好Internal Port。一个电容一个端口,后处理阶段把电容模型加到对应端口上再回看阻抗曲线,比每次改版图重仿真要快得多。
我一般会把同一类封装规格的去耦电容位置多放几个候选点,后处理时依次切换,对比哪种布局能把谐振峰压下去。端口数量增加会拖慢仿真速度,但对于单块平面、十几个端口以内的规模,Momentum完全扛得住。端口位置一定要尽量贴近焊盘中心,因为安装电感部分(过孔、焊盘、去嵌点)后面是要在电容模型里一起算的。
4. 一步步跑通Momentum仿真流程
4.1 网格控制与频率扫描设置
进入 Momentum -> Simulation -> S-parameters,这里有两个关键选项:扫频设置和网格设置。
扫频范围我设的是10kHz到2GHz,对数坐标,每十倍频程20个点。为什么用这么宽的跨度?因为去耦电容网络在低频段的阻抗特性决定了它是否能承接到中频段,如果你只从1MHz扫起,低频部分大电容选型心里就没底。对数扫描的好处是低频段点更密,能够捕捉到多级去耦电容的反谐振尖峰。
网格方面,Momentum是基于波长剖分的,问题在于电源平面尺寸远大于低频波长,自动生成的网格会偏粗,导致平面边缘电流被过度平滑,谐振Q值偏低。我习惯在 Mesh/Simulation Controls 里把最大网格尺寸手动限制在1.5mm到2mm之间,同时开启网格细化,让平面边缘和端口附近自动加密。设置好之后,可以用 Mesh Preview 提前看一眼剖分结果,确认端口处的网格没有明显畸形。这一步别偷懒,网格太粗跑出来的谐振频率往往跟真实情况差很远。
4.2 执行仿真与Z参数输出
设置完成直接点Simulate。仿真过程中会生成emModel的工程文件,进度条走完后,在Data Display里就能调出结果。ADS里Momentum的仿真结果默认会保存成S参数和Z参数两组数据,我们需要的主要是Z参数。在Data Display窗口添加Z(1,1)曲线,或者如果想看噪声耦合,就看Z(2,1)。
顺便提一下S参数和Z参数的换算关系,做PI时心里要有数。对单端口情况:
Z11 = Z0 × (1 + S11) / (1 - S11)
这里Z0默认是50Ω。不过Momentum的Z参数提取本身不依赖你设置的端口参考阻抗,它用1A电流激励直接得到阻抗矩阵,所以端口阻抗照默认50Ω设置就行。
4.3 第一版结果的判读方式
不加任何去耦电容的裸平面,Z11曲线大概率是低频段一路上升、高频段出现多个尖峰的模式。低频段的上升斜率和平面等效电感有关,近似公式是Z=2πfL;尖峰则对应平面谐振模式,这些尖峰对应的频率不是随便冒出来的,它跟平面尺寸、介质介电常数直接相关。对60mm×100mm、εr=4.4的平面,用平行板谐振公式可以估算前几个模式:
f_mn = [1 / (2√(με))] × √[(m/a)² + (n/b)²]
带入介质中的等效光速c/√εr,再除以2,就可以估算基频。下表是我常用的快速参考,和仿真结果对照过,误差在可接受范围内:
| 模式 | m, n | 理论估算频率 |
|---|---|---|
| TM01 | 0,1 | 约715MHz |
| TM10 | 1,0 | 约1.19GHz |
| TM11 | 1,1 | 约1.39GHz |
注意这两个基模附近,Z11会冲到上百欧姆的量级,和目标阻抗45mΩ差了几乎四个数量级。裸平面在这个维度上是完全没法用的,必须加去耦电容。这不是因为低频段电感太大,而是高频谐振把阻抗抬高到不可接受的程度。
5. 结果解读:电容选型、反谐振处理与优化后的阻抗曲线
5.1 谐振峰代表什么
频谱上的每个阻抗峰,都对应着平面腔体在这一频率上出现了驻波。能量在这个模式下来回反射,芯片抽电流时无法快速从远处补充,就表现为高阻抗。你可以把平面想象成一块鼓面,不同频率下振动的模式不同,鼓面上有些地方振幅大、有些地方是波节,这就是电流分布不均匀的本质。Momentum算出来的不仅是阻抗大小,还能看表面的电流分布图,用来定位谐振模式下电流聚集的位置,这对决定去耦电容该放在哪里非常有价值。
实际操作中我经常这么干:在这个谐振频点上,打开Momentum的Current Density视图,看平面边角和中心的电流分布,然后把电容优先布置在电流集中的区域附近。这比单纯按扇出规则撒电容要科学得多。
5.2 去耦电容模型的接入方式
这一步是Momentum做PI分析和最终产品指标衔接的关键。最灵活的方式是在ADS原理图中加入Momentum生成的器件模型,然后把阻抗端口和电容等效模型相连,进行电路级联合仿真。ADS里可以直接调用Murata等厂商的电容等效模型,这些模型内部已经包含了ESR、ESL等寄生参数,比我手搭RLC串联电路要准确得多。
如果没有厂商模型,也可以用最经典的等效串联RLC模型近似:电容的阻抗公式为
Z_C = R_ESR + j(2πfL_ESL - 1/(2πfC))
在谐振频率f=1/(2π√(L_ESL×C))处呈现最低阻抗,高于谐振频率后电容感性占主导,阻抗开始回升。这也是为什么不同容值的电容需要配合使用,单独堆同一种容值,高频段很快就会失效。
我常用的去耦电容组合如下:
| 容值 | 封装 | 典型安装后ESL | 适用频段 |
|---|---|---|---|
| 10μF | 0805 | 1.2nH | 100kHz-1MHz |
| 1μF | 0402 | 0.6nH | 1MHz-20MHz |
| 100nF | 0402 | 0.5nH | 20MHz-100MHz |
| 10nF | 0201 | 0.3nH | 100MHz以上 |
需要注意,上表的ESL是包含过孔和焊盘的安装电感,不是电容体本身的ESL。实际做项目时,封装越小、摆放越靠近芯片电源脚、过孔直径越小,安装电感越小,高频去耦效果越好。
5.3 优化迭代的目标
在原理图里依次把不同电容接到Momentum端口上,重新跑一次电路仿真,观察Z11曲线是否被压制到目标阻抗线以下。理想情况下,加入多级电容后,Z11在1MHz到几百MHz之间会形成一条平滑的、位于目标阻抗之下的曲线。低频段如果有缺口,说明大容量电容不够;中频段如果冒出一个尖峰,通常是相邻两级电容的反谐振——也就是一只电容已经呈感性、另一只还没进入低阻区,中间出现一个阻抗交点,这个交点的峰值如果超过目标阻抗,就需要调整容值组合或增加中间过渡容值。
这里有一个我自己绕了不少弯才明白的规律:不是电容越多越好。电容多到一定程度,反谐振点会大量出现,而且相互牵制,反而比少用几只精心调过的电容还差。PI优化的本质不是堆数量,而是让各级电容的阻抗低谷首尾衔接,把整个频段平滑地覆盖住。这个经验在Momentum仿真里可以快速验证,多跑几组配置对比,比在真实板子上反复试错要省钱得多。
6. 仿真结果和实测对不上的几个常见原因
做完优化仿真不代表事情就结束了,仿真曲线最终要跟网分实测对上才算闭环。我遇到过不少次仿真和实测频率对不上的情况,结合经验给大家排一排优先级的坑。
第一,过孔和反焊盘没有建进模型。Momentum默认会简化过孔处理,如果电源平面与地平面之间有过孔穿过,过孔的反焊盘会破坏平面电流路径,造成谐振频率偏移甚至引入新谐振。对严格的PI分析,关键区域过孔密集的话,需要用Momentum的Via模型自动处理或者手动建孔。
第二,介质参数拿不准。FR4的Dk在工厂实际压合后会有批次差异,谐振频率跟√Dk成反比,Dk从4.4变成4.6,谐振频点会偏移约2%到3%。如果仿真和实测尖峰位置差5%左右,先别怀疑Momentum,去查板材实际参数更靠谱。
第三,端口位置的寄生电感。实测时探针或同轴接头会带来约0.3nH到0.5nH的附加电感,这个电感在几百MHz以上会把Z11曲线整体抬高。我自己的做法是仿真结果里人为串联一个0.2nH到0.3nH的电感跟实测对比,高频段往往能完美贴合。
第四,裸平面模型里没有包含去耦电容以外的东西。比如封装焊线电感、相邻层的布局布线电容,这些在高频段都有贡献。如果你的目标是看某一块具体芯片的PDN,最好在Momentum端口上再串一个封装估算电感,通常0.5nH到1nH。
最后再说一个非常实用的小技巧:Momentum仿真得到的Touchstone文件不要只留在手上,把它当作一个完整的PDN子电路模型,导入到ADS的Schematic里跟芯片IBIS模型做一次时域联合仿真。这样不仅能看到频域阻抗曲线,还能直接观察瞬态电流下的电压纹波波形。我做过很多次,用这种方法能提前暴露出去耦电容布局不合理的隐患,甚至在板子打样之前就发现DDR读写出错的根源。整个流程跑通之后,你会发现用Momentum做PI分析并不复杂,真正花时间的反而是最开始的物理需求分析和最后的模型关联校准,而这两步恰恰决定了仿真结果能不能从纸上落到实际产品里。