
最近在做一块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μmZ参数曲线上的谐振峰能明显偏移所以叠层参数一定要以实际压合后的目标厚度为准。铜箔厚度影响直流电阻和趋肤效应起始频率对于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 生成emModelMomentum仿真完成后下一步是把电磁模型带到原理图里做系统级仿真。这一步的关键产物就是emModel也就是Momentum导出的电磁模型。在版图菜单里选择导出emModel/EM CosimulationADS会自动生成一个带多个端口的模型符号直接插入到原理图中。生成的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的理解从“拍脑袋选电容”变成了“看着阻抗峰对症下药”。另外一个小技巧仿真前把版图里的无用文字和辅助线清理干净减少无意间生成的悬浮导体这一步能避免很多难以解释的异常谐振。