最近在做一块FPGA核心板的电源分配网络(PDN)验证时,我用ADS里的Momentum重新走了一遍电源完整性分析流程。说实话,ADS大多数工程师的第一反应是拿它做射频匹配、滤波器设计,真正用Momentum去摸电源平面的谐振特性、提取Z参数的人并不多。但只要你啃过一两次,就会发现它在“电源/地平面耦合分析”这个场景下其实非常顺手,尤其是要联合去耦电容做阻抗优化时,从电磁模型到原理图协同仿真的链路非常完整。
这篇文章我就拿一块典型的1.0V核电压平面当例子,把从叠层设置、端口定义、网格设置,到emModel生成、原理图协同仿真和电容选型这整条路线完整走一遍。适合那些已经会用ADS做常规RF仿真、但刚接触电源完整性分析的工程师;也适合正在对比SIwave、PowerSI和Momentum,想知道到底什么时候该用Momentum的人。
1. 为什么用Momentum做电源完整性分析
1.1 电源完整性到底在分析什么
电源完整性分析的核心不是看电源纹波有多大,而是看从芯片电源引脚往回看的阻抗曲线,在目标频率范围内是否低于某个门限值。这个门限值来自芯片对电压波动的容忍度,也就是目标阻抗。简单说,芯片需要多大的瞬态电流,电源平面、去耦电容、VRM(电压调节模块)这一整个路径上,阻抗越低,电压跌落越小。
这听起来像是个电路问题,但实际上在几十兆赫兹到几百兆赫兹这个频段,电源平面和地平面之间的分布电感、平面谐振才是主旋律,已经不是单纯的集总参数电路能描述的。Momentum在这里的价值就是,把电源/地平面当做一个分层电磁结构来处理,用全波方法提取出真实的频变阻抗,而不是靠估算或者经验公式。
1.2 Momentum在PI分析中的优势和边界
Momentum基于矩量法(MoM),非常擅长处理多层平面结构。电源/地平面本质上就是一对间距很小的大金属板,中间夹着薄介质。这类结构如果用FEM类的三维求解器处理,薄介质层会生成大量瘦长网格,计算量爆炸;而MoM只把金属层表面离散化,网格数量少得多,内存和耗时都更友好。
但Momentum并不是万能的。它擅长的是平面结构和过孔混合的结构,如果你的板子上有非常复杂的三维机械结构(比如屏蔽罩、连接器外壳、异形铜块),用完整三维求解器可能更合适。做电源完整性时,我一般把Momentum定位在“关键区域精细建模”上,而不是整板的大规模PDN扫描。它更适合分析一个芯片下方的电源平面切片、一条关键电源轨的谐振特性,而不是几十个网络、上千个去耦电容的那种全板协同分析。整板级别的快速评估,SIwave或PowerSI这类专门面向PI的工具投入产出比更高。
1.3 与SIwave、PowerSI等工具的分工
很多朋友习惯用SIwave做板级电源完整性,流程相对自动化,版图导入后可以直接加VRM、电容、IC模型跑一个全板阻抗。这类工具对工程效率很友好,但如果你想做更精细的电磁参数提取,或者需要在ADS这个生态里直接调度去耦电容的S参数模型、做匹配网络优化,Momentum就有不可替代的优势。
另一个实际场景是:你的PCB版图还在改版阶段,想快速评估某个区域的平面分割和过孔布局对阻抗的影响,Momentum可以直接从ADS Layout里画结构,或者把ODB++导入后局部切出来跑。这意味着你不需要单独维护一套PI仿真模型,直接在ADS环境里就能把事情做完。
2. 分析前的模型与叠层准备
2.1 叠层参数怎么填才靠谱
Momentum仿真的精度上限,取决于你叠层参数填得多准。叠层参数主要包括层数、每层介质的介电常数(εr)、损耗角正切(tanδ)、介质厚度、铜箔厚度和电导率。FR4板材的εr通常不是常数,低频段可能4.2到4.8之间波动,到了GHz以上还会继续下降。做电源完整性时,如果只关注100MHz以下,εr取4.3、tanδ取0.02一般就能接受;但如果你关心谐振点精度,特别是500MHz以上的平面谐振峰,我建议优先使用板厂给出的宽频实测数据,而不是凭经验猜。
介质厚度直接决定平面间的电容和电感值,这对谐振频率影响极大。举例来说,1.0V核电压层和相邻地层之间如果间距是100μm和50μm,Z参数曲线上的谐振峰能明显偏移,所以叠层参数一定要以实际压合后的目标厚度为准。铜箔厚度影响直流电阻和趋肤效应起始频率,对于PI来说,内层1oz(约35μm)是常见配置,电导率用5.8×10^7 S/m。
提示:Momentum的层叠编辑器里,每一层的物理属性都要单独确认。一个很容易踩的坑是,介质层里的金属层顺序搞反,导致参考地平面错位,仿真出来的阻抗曲线怎么看怎么不对劲。
2.2 平面结构与过孔的处理要点
在Momentum里画电源/地平面时,不需要把整块PCB都画进去。我的习惯是切出芯片和去耦电容所在的矩形区域,然后把电源平面和地平面分别画在对应层。关键是,地平面必须完整覆盖电源平面的投影范围,否则边缘的场泄漏会导致谐振频率偏高。
过孔在Momentum里可以真实建模,但每个过孔都有寄生电感,对高频段阻抗影响很大。如果你的设计里有几十个地过孔或电源过孔,要不要全部画出来是个取舍。全画会显著增加计算量;不画又会低估平面间的互连阻抗。折中方案是,先不放过孔算一次,看看谐振频率在哪里;再在敏感位置(靠近芯片引脚、电容焊盘)加上关键过孔,对比差异。实际经验表明,对最终Z曲线影响最大的是离芯片最近的那圈地过孔,这个必须保留。
如果你处理的是一片比较大的平面,比如边长超过50mm的电源区域,Momentum计算量会上升不少。这时候可以考虑只保留芯片所在区域和电容阵列区域,用“局部截断”的方式。截断边界会引入一定误差,但用辐射边界或理想磁壁处理一下,低频段的阻抗曲线仍然有参考价值。
2.3 频率范围从哪定到哪
频率范围的选择是PI分析里很关键的一步。常见误区是一上来就跑到10GHz以上,其实对于电源完整性来说,关注的频段取决于芯片的瞬态电流变化速度和解耦策略。拿1.0V核电压做例子:VRM负责低频(几kHz到几百kHz),大容量电解电容和钽电容负责中频(几MHz),陶瓷电容负责(几十到几百MHz),然后就是电源平面本身的分布电容和封装/芯片裸片去耦(GHz以上)。
我通常把仿真频率设置在10kHz到1GHz之间,用对数扫频,几十个频点就足够捕捉主要谐振峰。如果要分析芯片轻载到重载的瞬态响应,再把上限扩展到2-3GHz也不迟。频率上限设得太高,只会让网格细化要求更苛刻、仿真正时间线性增加,最终结果对PDN设计却没多少实际指导意义。这里需要补充一点:MoM在极低频(接近DC)会出现数值色散现象,所以频率下限我一般从10kHz开始,而不是从0Hz开始。
3. 端口设置与激励方式
3.1 常用端口类型及选择
Momentum里做PI分析,端口设置是最有讲究的一步。两种最常见的选择是Wave Port和Internal Port(内部端口)。Wave Port放在计算域边缘,适合模拟外部测量探头或者一个从电源入口向平面注入功率的场景。Internal Port则可以放在结构内部任意位置,它会自动创建一个连接电源平面与参考地平面之间的小型激励结构,非常适合模拟芯片电源引脚或者去耦电容的接入点。
我的实际用法是:芯片电源引脚位置用Internal Port,去耦电容焊盘位置也用Internal Port,外部电源模块入口用Wave Port或者一个较大尺寸的Internal Port。内部端口的实质是一个局部的同轴或探针激励,它不会引入额外的传输线,所以不会像Wave Port那样需要处理参考面问题。
在ADS Layout中定义Internal Port时,你需要选择端口所在层的金属焊盘或导体的边缘,然后指定它要参考到哪一层地平面。频率很低时,这个参考地的选择对结果影响不大;但上了GHz,地回路电感就会显现出来。一个通用的做法是让每个内部端口就近参考最近的地平面,这也是Momentum默认的处理方式。
3.2 去耦电容放置位置的端口化
做PDN优化时,每个去耦电容都对应一个端口,这样做的目的是:先用Momentum提取包含所有电容焊盘位置的电磁模型,然后在原理图里再把电容模型一个一个“挂”到对应端口上。这种做法的好处是,电容的型号、容值、封装要改时,不需要回到版图重新仿真,直接在原理图里替换模型即可——这就是所谓“电磁模型与电路联合仿真”的核心优势。
一个需要留意的问题是,端口过多会导致仿真时间明显增加。每增加一个内部端口,就要多计算一次激励模式。我在实际案例里,芯片端1个端口、电容端通常只选芯片周围最近的8到12个关键电容位,而不是把板上几十上百个去耦电容全部建进去。后续优化时再按需添加位置,效率更高。
3.3 端口数量与编号管理
当端口数量超过十几个,编号管理就会变成一个实际痛点。建议在版图阶段就给端口起有含义的名字,比如C1_Miller_100nF、C2_Bulk_10uF、IC_VDD_CORE这种。不要用默认生成的P1、P2、P3,不然后面在原理图里对着端口号找电容位置会让人抓狂。
端口极性方向也要统一。比如所有去耦电容端口的参考地都是同一层地平面,芯片端口的正极都指向芯片的核心供电引脚。极性不统一会导致后续加电容模型时,正负极接反而得不到预期结果。从S参数转换到Z参数时,符号错误会让阻抗实部出现负电阻的假象,看上去像是“不稳定”或者“错误结果”,实际就是端口参考方向搞混了。
4. 网格、扫频与Z参数提取
4.1 网格设置的两个关键原则
Momentum的自动网格在很多场景下工作良好,但PI分析里有个典型问题:电源/地平面的物理尺寸相对波长来说很小,自动网格会认为结构电尺寸不大,从而用比较粗的网格划分大平面。这会导致电容焊盘、过孔、窄铜皮附近的电流分布被严重低估,谐振峰的Q值变得很钝。
我的做法是在自动网格基础上,给每个端口周围设置局部加密区域。具体操作是选中端口对应的金属焊盘,设置一个半径大约为焊盘尺寸3到5倍的网格细化区,网格尺寸控制在焊盘尺寸的1/5左右。这样既不会让整个平面的网格爆炸,又能保证关键位置的计算精度。
第二个原则是,别忘了平面边缘的网格。电源/地平面边缘是电流密度不连续最明显的地方,对谐振频率影响很大。在Momentum里可以给平面边缘添加一条“edge mesh”,把边缘网格强制细化。这一步对Z曲线的平滑程度和谐振点位置精度的提升非常明显。
4.2 扫频方式的取舍
Momentum支持两种扫频方式:离散扫频(Discrete)和插值扫频(Interpolating)。离散扫频会在每个频点上做一次全波求解,精度高但是慢;插值扫频先用粗频点解算,再用有理函数拟合整个频段,速度快得多。做PDN阻抗分析时,我强烈建议用插值扫频。
但要注意插值扫频的“坑”:如果你的端口结构存在高Q值谐振,也就是谐振峰非常尖锐,默认的插值点数可能拟合不出峰顶,导致Z曲线峰值被抹平。解决办法是增加插值点数,或者把频率上限收紧,只扫关心频段。以10kHz到1GHz为例,我会设置每十倍频程6到8个点,重点频段再手动插入若干频点,比如100MHz附近多撒几个点,确保能覆盖平面谐振峰。
4.3 从S参数转Z参数的操作路径
Momentum求解完成后,默认结果是S参数。对于电源完整性分析,你真正关心的是Z参数。好在ADS里转换非常方便,不需要手动算公式。在数据显示窗口(Data Display)中,直接选择要显示的S参数文件,通过内置函数或者行列运算就可以得到Z11、Z21等参数。
更简单的方式是在原理图里放置一个Term元件,把S参数文件关联进去,然后用SP仿真控件做一次小信号分析,直接输出Z参数。这里有个细节:S参数默认参考阻抗是50Ω,如果你用公式手算Z参数,参考阻抗要对应清楚。用ADS自带转换函数时,Z = Zo * (1 + S) / (1 - S),Zo就是参考阻抗,一般是50Ω。
我的习惯是直接绘制Z11幅值和相位曲线,再用Marker标出各个谐振峰对应的频率和阻抗值。完整PDN优化时,Z11(从芯片引脚看进去的自阻抗)就是最核心的评估目标,几乎不需要看Z21、Z22这些耦合项。
5. 联合仿真:从电磁模型到系统PDN优化
5.1 生成emModel
Momentum仿真完成后,下一步是把电磁模型带到原理图里做系统级仿真。这一步的关键产物就是emModel,也就是Momentum导出的电磁模型。在版图菜单里选择导出emModel/EM Cosimulation,ADS会自动生成一个带多个端口的模型符号,直接插入到原理图中。
生成的emModel会包含对应频段内的完整多端口S参数行为。插入原理图后,它就是一个“黑盒”,你不需要关心内部平面是怎么耦合的,只需要在端口上接外部元件。我提醒一点:导出emModel之前,务必确认Momentum的频率范围已经覆盖后续电路分析所需的频段,否则超出范围的频点结果是外推出来的,不准确。
5.2 在原理图中搭建PDN网络
在原理图里,把VRM模型接到电源入口端口,把去耦电容模型逐个接到对应电容端口,最后把芯片负载模型接到芯片端口,一个完整的PDN网络就搭好了。
去耦电容模型我建议优先用厂家提供的S参数模型,因为它包含了封装引脚电感和ESR的频变特性。没有S参数时,再用RLC等效模型,但要注意容值和ESL取值的准确性。几种电容并联后形成的反谐振峰,只有在模型精度足够的情况下才会和实测对上。
VRM模型不需要太复杂。对频域分析来说,一个几十nH的电感串联一个几毫欧的电阻就够用了。它的作用主要是把低频段的阻抗拉起来,模拟真实电源模块的有限带宽。你也可以从电源芯片数据手册里提取闭环输出阻抗曲线,做成查表模型后接入仿真,精度更高。
5.3 目标阻抗评判与电容选型迭代
目标阻抗的计算公式很简单:Ztarget = (Vdd × ripple%) / ΔI。比如1.0V核电压、纹波容限3%、瞬态电流变化50A,那么Ztarget = 0.03V / 50A = 0.6mΩ。注意这里的0.6mΩ是相当低的数值,实际PDN很难在整个频段都压到这个水平,所以通常只要求在芯片关注的频段内满足目标。
在原理图里跑完AC仿真后,直接看芯片端口的Z11曲线。如果某个频段超过目标阻抗,就找对应频段的谐振点,调整该频段的去耦电容方案。低频段超了,加大容量;中频段超了,看100nF、1uF这类容值的数量和摆放位置;高频段超了,往往要靠平面本身和更小封装(0201、01005)的电容来解决。
每次改完电容模型参数,不需要重新跑Momentum,只需要在原理图里重新AC仿真即可。这是联合仿真最大的优势。我一般先做一个“裸模型”仿真,也就是不加任何去耦电容时的Z曲线,先找到平面谐振的固有频率和幅度;再加电容看抑制效果,这样能很清楚地看出每个频段的尖峰是平面引起的还是电容反谐振引起的。
6. 常见问题与排查技巧实录
6.1 阻抗曲线抖动或谐振点偏移
Z曲线如果出现锯齿状抖动,第一个怀疑对象是网格不够细。尤其是端口附近,局部加密之后抖动通常会消失。如果抖动仍然存在,可能是频率点数太少,插值拟合在谐振峰附近失真,把这一段的扫频点数加多就好。
谐振点偏移也是常见问题,比如仿真得到第一谐振频率是320MHz,实测或板厂仿真说是280MHz。这种差异大多来自叠层参数不准,尤其是介电常数和介质厚度。还有一个容易被忽略的因素是被截断平面的边界条件:如果你切出来的平面区域太小,相当于人为增加了边缘电容,谐振频率会往上偏。把截断区域扩大一点,或者把边界条件从理想电壁改成开放边界,谐振频率会向低频移动。
6.2 端口报错与低频不收敛
Momentum里最恼人的报错是端口“无法定位到金属层”或者“端口不在导体上”。这种问题基本是因为端口定义在了一个没有铜皮的区域,或者参考地平面层选错了。解决方法是回到Layout里,确认焊盘实际所在的金属层,再到端口属性里手动指定正确的层和参考层。
低频不收敛是MoM方法在高宽比过大结构上的老毛病。如果你把扫频下限设置到1kHz,很容易出现奇异矩阵导致仿真失败。我的经验是把下限设置到10kHz以上,有必要时再单独跑低频等效电路模型。另外一个办法是开启更高的求解精度设置,但计算时间会明显上升,不推荐一上来就用。
6.3 仿真太慢或内存不足
大平面仿真时间过长,通常不是CPU不够快,而是网格数量失控。一个典型症状是自动网格生成的单元数超过10万。这时候我建议先检查一下频率上限是不是设得太高,很多电源完整性分析根本不需要跑到5GHz。然后果断精简端口数量,把远端的去耦电容端口临时删掉,只保留最关键的十几个端口。
内存不足则多见于三维求解器,Momentum相对还好,但如果你同时开了多个仿真任务,内存也容易爆。Momentum支持多核并行,建议在仿真设置里把并行核数调到物理核心数减1,留给系统余量。操作系统层面,关闭一些占用内存的后台程序,也能让仿真稳定几个量级。
6.4 模型精度摸底
最后分享一个我常用的验收方法。拿到Momentum结果后,先不要急着优化,用一个已知的简单结构做精度摸底。比如做一对规则的矩形电源/地平面,用平行板谐振公式估算第一谐振频率,再和仿真结果对比。平行板谐振频率f = 1 / (2L√(εμ))(L是平面的最长边长),如果仿真算出的谐振点和这个估算相差不超过10%,说明叠层参数和端口设置基本靠谱。
如果这一步都对不上,后面再怎么优化电容都是空中楼阁。这个方法看似朴素,但能帮你把“参数设置问题”和“真实物理现象”迅速区分开,避免在错误的模型上浪费大量时间。
我个人在实际操作中的体会是,ADS Momentum做电源完整性分析,最舒服的用法不是替代专用PI工具,而是在设计过程中做“局部深挖”:用SIwave或PowerSI画出整板PDN的全貌,发现问题后用Momentum对敏感区域精细建模,再用ADS原理图做去耦方案优化。这套组合拳用熟了之后,你会明显感觉到对PDN的理解从“拍脑袋选电容”变成了“看着阻抗峰对症下药”。另外一个小技巧,仿真前把版图里的无用文字和辅助线清理干净,减少无意间生成的悬浮导体,这一步能避免很多难以解释的异常谐振。