
1. 电源AC阻抗仿真到底在仿什么电源AC阻抗仿真说白了就是给整块PCB的电源分配网络做一次“体检”看看在关心的频率范围内从芯片电源引脚看进去的阻抗到底是多少。很多硬件工程师第一次接触这个概念时会觉得抽象我用一个生活化的类比来解释把电源网络想象成城市供水系统芯片是用水大户VRM是水厂去耦电容是楼顶水箱PCB走线和平面是水管。AC阻抗仿真就是测量当用水大户突然加大用水量时水压会不会瞬间掉下去。阻抗越低说明供水系统越“硬”电压波动越小。那为什么非要仿真不能直接测吗实测当然可以但实测需要打样、焊接、上电一轮下来少说一两周而且测出来超标了还得改板重新来。仿真则可以在布局布线阶段就发现问题改起来成本几乎为零。这就是为什么现在做高速数字设计、大电流处理器供电、FPGA电源完整性分析的团队都把AC阻抗仿真列为必做项。Cadence Sigrity PowerSI是做这类仿真的主流工具之一它基于有限元法和矩量法混合求解能处理复杂的多层PCB结构。相比一些只做简单集总参数估算的工具PowerSI的优势在于它能提取分布式的寄生参数把平面谐振、过孔耦合、边缘辐射这些效应都考虑进去。当然代价是设置更复杂对使用者的电磁场基础有一定要求。这篇文章面向的是已经有一定PCB设计基础、准备上手PowerSI做电源阻抗仿真的工程师。我会把整个流程拆成5个核心步骤每一步都讲清楚为什么这么做、参数怎么定、容易在哪里翻车。如果你之前用过其他仿真工具但被PowerSI的界面和设置搞晕了或者你刚开始接触PDN阻抗分析这篇内容应该能帮你少走不少弯路。2. 仿真前的准备工作与思路拆解2.1 为什么仿真前的文件整理比仿真本身更重要我见过太多人拿到PCB文件直接往PowerSI里一扔就开始设端口结果跑出来的结果跟实测差了十万八千里。问题往往不出在仿真设置上而是出在输入文件本身。PowerSI支持多种输入格式包括.brd、.mcm、.spd、.s参数模型等但最常用的还是从Allegro PCB Designer导出的.brd文件。这里有个关键点你导出的.brd必须包含完整的叠层信息和器件模型否则PowerSI没法正确识别平面结构和材料属性。具体来说在Allegro里导出之前你需要确认几件事。叠层厚度和介电常数必须准确特别是电源平面和地平面之间的介质层。很多人直接用默认的FR4参数介电常数4.2、损耗角正切0.02但实际上不同厂商的板材参数差异很大高频下这个差异会被放大。如果你手头有板材的datasheet最好把参数填进去。另外铜箔的表面粗糙度也会影响高频损耗虽然对AC阻抗的影响不如对插入损耗那么明显但在几百MHz以上还是值得关注。还有一个容易被忽略的点器件的电源模型。AC阻抗仿真需要知道每个芯片电源引脚处“看到”的负载是什么样的。如果只仿PCB裸板那结果只反映PDN本身的阻抗如果要仿完整的电源系统还需要把VRM的闭环输出阻抗模型和芯片的片上电容模型加进去。VRM模型通常从厂商那里获取格式可能是Touchstone或者SPICE子电路。芯片的片上电容一般用简化的RLC串联模型来近似容值从芯片的PDN设计指南里查。注意如果你拿到的.brd文件里没有叠层信息PowerSI会报错或者用默认值替代结果完全不可信。导出前务必在Allegro的Cross-section编辑器里检查每一层的厚度、材料、铜厚是否正确。2.2 仿真频率范围怎么定才合理AC阻抗仿真的频率范围不是随便设的。太低没意义太高又浪费计算资源。一般来说下限从1kHz到10kHz开始上限则取决于你的芯片工作频率和去耦电容的有效频率范围。对于大多数数字芯片关心的频率范围是10kHz到100MHz有些高速SerDes或者DDR接口可能需要看到500MHz甚至1GHz。为什么下限不能设得太低因为在低频段VRM的闭环反馈还在起作用PDN阻抗主要由VRM的输出阻抗决定PCB的寄生参数影响很小。如果你把下限设到1Hz仿真时间会成倍增加但结果跟10kHz开始几乎一样。上限的设定则要考虑你板上去耦电容的自谐振频率。超过自谐振频率后电容呈感性阻抗反而上升这时候再往高频仿就是在看电感的阻抗了。如果你板上最高频率的电容是0402封装的0.1uF它的自谐振频率大概在20MHz到30MHz那仿真到100MHz已经足够覆盖。另外频率扫描的点数也很关键。PowerSI默认可能是每十倍频程10个点这个密度对于看阻抗曲线的整体趋势够了但如果你想精确捕捉谐振峰建议加密到每十倍频程50个点以上。谐振峰的Q值越高需要的点数越多。我一般先用稀疏点数快速跑一遍看趋势确认没有异常后再加密跑最终结果。2.3 端口设置的核心逻辑端口设置是AC阻抗仿真的灵魂。PowerSI里常用的端口类型有三种单端端口、差分端口、以及用于PDN分析的电源-地端口。做AC阻抗仿真时我们关心的是从芯片电源引脚到地之间的阻抗所以需要在芯片的电源球和地球之间设置端口。具体操作上你可以在PowerSI的“Port”菜单里选择“Create Port”然后选择“Between Two Pins”或者“Between Pin and Plane”。前者用于两个引脚之间后者用于引脚和平面之间。对于BGA封装的芯片通常选择电源球和相邻的地球作为端口的两端。这里有个经验端口的位置要尽量靠近芯片的实际电源引脚因为PDN阻抗是位置相关的离芯片越远阻抗越高。端口的阻抗设置也有讲究。PowerSI默认的端口阻抗是50欧姆但做PDN分析时应该设为0欧姆因为我们是在测短路条件下的电流响应。如果设成50欧姆相当于在端口处加了一个负载测出来的阻抗会被负载影响。这个细节很多人会忽略导致结果偏大。提示如果你要仿多个电源域比如1.0V核心电压和1.8V IO电压需要分别设置端口和仿真。不同电源域的PDN是独立的不能混在一起仿。3. 五步搞定AC阻抗仿真的完整流程3.1 第一步导入文件与叠层检查打开PowerSI后通过“File Open”导入你的.brd文件。导入过程中软件会解析叠层信息、网络连接、器件位置等。导入完成后第一件事是检查叠层。在“Setup Stackup”里确认每一层的类型导体、介质、厚度、材料属性是否正确。特别要注意的是电源平面和地平面之间的介质层这个厚度直接决定了平面电容的大小。平面电容的计算公式是C ε₀εᵣA/d其中A是平面重叠面积d是介质厚度εᵣ是相对介电常数。举个例子如果两块铜皮重叠面积是100mm²介质厚度是0.1mmFR4的εᵣ取4.2那么平面电容大约是37pF。这个值在高频段会起到一定的去耦作用但通常远小于去耦电容的容值。不过如果介质很薄比如2mil那平面电容就能达到几百pF这时候就不能忽略了。叠层检查完之后还要确认网络映射是否正确。PowerSI需要知道哪个网络是电源、哪个是地。在“Setup Net Properties”里把电源网络标记为Power地网络标记为Ground。如果有多个电源网络要分别标记。这一步如果搞错后面的端口设置和仿真都会出错。3.2 第二步设置仿真频率与扫描类型在“Analysis AC Impedance”里设置仿真参数。频率范围按前面说的原则来定扫描类型选“Logarithmic”对数扫描因为阻抗曲线通常在对数坐标下看更直观。点数密度建议先设每十倍频程20个点做初步仿真确认无误后再加密。这里有个细节PowerSI支持“Adaptive”自适应扫描它会根据阻抗曲线的变化率自动调整频率点密度。在谐振峰附近自动加密在平缓区域自动稀疏。这个功能可以节省不少时间但有时候会漏掉一些窄带的谐振峰。我的做法是先用自适应跑一遍然后在疑似谐振的位置手动加密验证。另外仿真精度设置也很重要。在“Options”里可以设置求解器的收敛精度和最大迭代次数。默认值通常够用但如果你的模型很大或者结构很复杂可能需要适当放宽收敛条件来避免仿真时间过长。不过放宽精度意味着结果可能不够准确这个取舍要根据实际情况来定。3.3 第三步端口与负载设置端口设置是这一步的核心。在“Port”菜单里创建端口选择芯片电源球和地球。如果你有多个电源球可以创建多个端口PowerSI会并行计算。端口的阻抗设为0欧姆如前所述。接下来是负载设置。如果你只仿PCB裸板那不需要加负载端口处就是开路。但如果你想仿完整的电源系统需要在VRM输出端加上VRM的闭环输出阻抗模型在芯片端加上片上电容模型。VRM模型通常是一个电压源串联一个输出阻抗可以用SPICE子电路或者Touchstone文件导入。片上电容模型则是一组RLC串联电路并联在芯片电源引脚和地之间。注意VRM模型的正确性直接影响低频段的仿真结果。如果你拿不到准确的VRM模型可以先用一个理想电压源串联一个估计的输出阻抗来代替但要在报告里注明这是近似值。3.4 第三步的补充去耦电容模型的导入与验证去耦电容是PDN阻抗控制的主力军。在PowerSI里你可以手动输入每个电容的RLC参数也可以从厂商的S参数文件导入。手动输入适用于低频段因为低频下电容可以近似为理想RLC串联。但到了高频段电容的等效串联电感ESL和等效串联电阻ESR会随频率变化这时候就需要用S参数模型。我一般建议对100MHz以下的仿真用手动RLC模型就够了因为大部分去耦电容在这个频段内还是容性主导。但如果你要仿到500MHz以上最好用厂商提供的S参数。Murata、TDK、Kemet这些厂商的官网都能下载到电容的S参数文件格式通常是Touchstone的.s2p。导入S参数后PowerSI会自动把它转换成宽带模型。这里有个坑S参数文件的参考阻抗通常是50欧姆但PDN里的实际阻抗远低于50欧姆。PowerSI在转换时会处理这个差异但如果你发现结果异常可以检查一下S参数的参考阻抗设置是否正确。3.5 第四步网格划分与求解设置网格划分是PowerSI计算量最大的部分。PowerSI采用自适应网格划分会根据结构的几何特征自动加密网格。对于PDN仿真平面上的网格密度直接影响平面谐振的捕捉精度。如果网格太粗高频谐振峰会偏移甚至消失如果太细仿真时间会急剧增加。我的经验是对于大多数PCB默认的网格设置已经够用。但如果你的平面形状很复杂比如有大量开槽、过孔阵列可能需要手动调整网格密度。在“Mesh Mesh Setup”里可以设置最大网格尺寸和最小网格尺寸。最大网格尺寸一般设为最高频率对应波长的十分之一。举个例子如果最高频率是1GHz在FR4中波长大约是150mm那最大网格尺寸就是15mm。最小网格尺寸则取决于结构的最小特征尺寸比如过孔间距或者平面缝隙宽度。求解设置方面PowerSI支持频域求解和时域求解。AC阻抗仿真用频域求解因为我们要看的是稳态频率响应。求解器类型选“Direct”直接求解器对于中小规模模型速度很快。如果模型特别大可以考虑“Iterative”迭代求解器但收敛性可能不如直接求解器稳定。3.6 第五步结果查看与阻抗曲线分析仿真跑完后在“Results AC Impedance”里查看阻抗曲线。横轴是频率纵轴是阻抗的幅值通常用对数坐标。一条典型的PDN阻抗曲线会有几个特征低频段阻抗平坦由VRM输出阻抗决定中频段出现多个谐振峰和反谐振峰由去耦电容和平面电容的相互作用产生高频段阻抗上升由封装和片上电容的寄生电感决定。看曲线的时候重点关注几个指标目标阻抗是否满足、谐振峰的位置和幅值、反谐振峰是否超标。目标阻抗的计算公式是Ztarget ΔV × 允许纹波百分比 / 最大瞬态电流。举个例子如果电源电压是1.0V允许5%的纹波最大瞬态电流是10A那目标阻抗就是1.0 × 0.05 / 10 5mΩ。整条阻抗曲线在关心的频率范围内都应该低于这个值。如果发现某些频段超标可以通过增加去耦电容、调整电容布局、改变平面结构来优化。增加电容是最直接的方法但要注意电容的自谐振频率要和超标频段匹配。比如超标频段在50MHz那就要选自谐振频率在50MHz附近的电容容值通常在0.01uF到0.1uF之间。4. 常见问题与排查技巧实录4.1 仿真结果与实测差异大的原因排查这是最常见的问题也是让人最头疼的。仿真和实测差异大原因可能有很多我按出现频率从高到低列一下。第一叠层参数不准。特别是介质厚度和介电常数如果用了默认值而实际板材不同平面电容和传输线阻抗都会偏。建议从PCB厂商那里要一份准确的叠层报告把参数填进去。第二端口位置不对。端口离芯片电源引脚太远或者端口之间的地回路不完整都会导致阻抗偏高。检查一下端口是否设置在芯片的电源球和最近的地球之间。第三去耦电容模型不准。特别是ESL如果用了默认值而实际电容的ESL不同高频段的阻抗曲线会差很多。建议用厂商的S参数模型。第四VRM模型不准。低频段的阻抗主要由VRM决定如果VRM的输出阻抗估计错了低频段就对不上。第五网格太粗。高频谐振峰对网格密度很敏感如果网格太粗谐振峰会偏移或者消失。排查的时候我建议从低频往高频查。先确认低频段1kHz到100kHz的阻抗是否和VRM的输出阻抗一致然后逐步往高频看找到第一个对不上的频段重点排查那个频段相关的因素。4.2 平面谐振导致阻抗峰值的处理平面谐振是PDN阻抗曲线中出现尖峰的主要原因。当平面尺寸接近半波长的整数倍时平面之间会形成驻波导致某些位置的阻抗急剧升高。平面谐振的频率计算公式是f c / (2 × L × √εᵣ)其中L是平面长度c是光速εᵣ是介电常数。举个例子如果平面长度是50mmFR4的εᵣ是4.2那基频谐振大约在1.46GHz。但实际上由于平面不是理想传输线谐振频率会低一些。处理平面谐振的方法有几种。一是加去耦电容在谐振的波腹位置放置电容可以有效地抑制谐振。波腹位置通常在平面的边缘和角落。二是改变平面形状比如在平面上开槽破坏谐振条件。三是加阻尼电阻在平面边缘放置低阻值的电阻消耗谐振能量。四是减小平面尺寸提高谐振频率让它超出关心的频率范围。提示平面谐振的位置和PCB的层叠结构有关。如果电源平面和地平面之间的介质很薄谐振频率会降低。所以在叠层设计阶段就要考虑这个问题。4.3 去耦电容布局对阻抗曲线的影响去耦电容的布局对PDN阻抗的影响非常大但很多人只关注电容的容值和数量忽略了布局。电容的安装电感包括过孔电感、走线电感和焊盘电感这些寄生电感会显著降低电容的高频去耦效果。过孔电感是安装电感的主要组成部分。一个典型的过孔电感大约是1nH到2nH如果电容通过两个过孔连接到电源和地平面总电感就是2nH到4nH。这个电感在100MHz时的阻抗是1.26Ω到2.5Ω远大于电容本身的阻抗。所以电容的高频去耦效果主要受限于安装电感。减小安装电感的方法有用过孔直接连接焊盘不要走线用多个过孔并联把电容放在芯片的同一面减少过孔数量用更小的封装比如0201或01005。我实测过同样容值的电容0201封装的安装电感比0402小30%左右高频去耦效果明显更好。另外电容的摆放位置也很关键。离芯片越近电容和芯片之间的走线电感越小去耦效果越好。但芯片周围的空间有限不可能把所有电容都放得很近。我的做法是把小容值、高频去耦的电容放在最靠近芯片的位置大容值、低频去耦的电容放在稍远的位置。4.4 仿真速度太慢的优化方法PowerSI的仿真速度取决于模型规模、网格密度、频率点数、求解器类型等因素。如果仿真跑得太慢可以从以下几个方面优化。第一简化模型。去掉不相关的结构比如远离电源网络的信号线、无关的器件。PowerSI支持“Cut”功能可以只保留关心的区域。第二降低网格密度。在保证精度的前提下适当放宽网格尺寸。可以先跑一个粗网格的版本确认趋势后再加密。第三减少频率点数。先用稀疏点数跑一遍确认没有异常后再加密。第四用对称性。如果PCB结构对称可以用对称边界条件把计算量减半。第五升级硬件。PowerSI支持多核并行计算内存越大越好。如果经常跑大模型建议至少32GB内存最好64GB以上。4.5 常见问题速查表问题现象可能原因排查方法解决措施低频阻抗偏高VRM模型不准检查VRM输出阻抗设置用准确的VRM模型或调整输出阻抗中频谐振峰偏移去耦电容模型不准对比电容S参数和RLC模型用厂商S参数模型高频阻抗上升过快安装电感过大检查电容布局和过孔数量优化布局增加过孔用小封装仿真结果与实测差异大叠层参数不准对比叠层报告更新叠层参数仿真时间过长网格太密或频率点太多检查网格设置和频率点数降低网格密度减少频率点平面谐振峰消失网格太粗加密网格重新仿真提高网格密度端口阻抗异常端口设置错误检查端口位置和阻抗重新设置端口5. 实操心得与避坑经验5.1 从实际项目中学到的几个关键教训做了这么多年的PDN仿真有几个教训是花钱买来的。第一个教训是不要等到PCB布局布线完成才开始仿真。最好在布局阶段就做一次初步仿真确认去耦电容的数量和位置是否合理。如果等到布线完成才发现问题改起来就很被动了。第二个教训是仿真模型要跟实际物料一致。我遇到过好几次仿真时用的电容模型是A厂商的实际采购的是B厂商的虽然容值和封装一样但ESL和ESR不同高频段的阻抗曲线就有差异。所以仿真用的模型一定要和BOM对应。第三个教训是不要迷信仿真结果。仿真只是工具最终还是要靠实测验证。我一般会在PCB打样后用矢量网络分析仪或者专用的PDN阻抗测试仪测一下实际阻抗和仿真结果对比。如果差异在可接受范围内说明仿真模型是可信的如果差异很大就要回头检查模型。第四个教训是目标阻抗不是越低越好。有些工程师为了保险把目标阻抗设得很低结果加了大量电容增加了成本和布局难度。实际上目标阻抗是根据芯片的瞬态电流和允许纹波算出来的只要满足这个值就行没必要过度设计。5.2 提高仿真效率的几个实用技巧第一个技巧是建立模板。如果你经常做类似的PCB仿真可以把常用的设置保存为模板包括叠层参数、端口设置、仿真频率等。下次做新项目时直接调用模板可以节省大量时间。第二个技巧是用脚本自动化。PowerSI支持Tcl脚本可以把重复性的操作写成脚本比如批量导入电容模型、批量设置端口、批量导出结果。我写过一个脚本可以自动从BOM里读取电容信息并导入模型效率提升很明显。第三个技巧是分区域仿真。如果PCB很大可以把它分成几个区域分别仿真然后把结果拼接起来。这样可以降低单次仿真的计算量也方便定位问题。第四个技巧是善用对比功能。PowerSI支持多个仿真结果的对比可以把不同版本的仿真结果放在一起看直观地看到改动带来的影响。5.3 与PCB设计团队的协作要点PDN仿真不是仿真工程师一个人的事需要和PCB设计团队紧密协作。我总结了几条协作要点。第一提前介入。在布局阶段就参与进去给设计团队提供去耦电容的布局建议。不要等到布线完成才提意见那时候改起来成本很高。第二用数据说话。不要只说“这里阻抗超标了”要给出具体的频率范围、超标幅度、以及建议的改进措施。最好能给出改前改后的对比曲线让设计团队直观地看到效果。第三考虑可制造性。仿真优化方案要结合实际生产工艺比如最小过孔尺寸、最小线宽、电容的可用封装等。不要提出理论上最优但实际做不出来的方案。第四建立反馈闭环。仿真结果要反馈给设计团队设计团队的改动也要及时更新到仿真模型里。这样才能保证仿真和实际设计一致。5.4 仿真报告的撰写要点仿真报告是交付物要写得清楚、专业、有说服力。我一般会包含以下几个部分。第一仿真目的和范围。说明为什么要做这个仿真关心的频率范围是什么目标阻抗是多少。第二模型描述。包括PCB叠层、器件模型、端口设置、仿真参数等。要让读者能根据报告复现仿真。第三结果展示。用图表展示阻抗曲线标注关键频段和谐振峰。最好能给出多个端口的对比以及和上一版的对比。第四问题分析。如果发现超标频段要分析原因给出改进建议。第五结论和建议。总结仿真结果是否满足要求给出下一步的建议。报告要避免堆砌数据要突出重点。我一般会把最关键的一两张图放在最前面让读者一眼就能看到结论。5.5 后续扩展与进阶方向AC阻抗仿真是PDN分析的基础掌握了之后可以往几个方向扩展。一是直流压降分析。AC阻抗关心的是交流特性直流压降关心的是直流电流在平面和过孔上产生的电压降。PowerSI的DC Drop功能可以做这个分析。二是电源噪声分析。AC阻抗是频域分析电源噪声是时域分析。可以把AC阻抗的结果转换成时域阻抗然后结合芯片的电流波形分析电源噪声。三是电磁辐射分析。PDN的平面谐振不仅影响阻抗还会导致电磁辐射。PowerSI可以和Clarity 3D Solver联合使用分析PDN的辐射特性。四是热分析。大电流通过PDN时会产生热量影响电源网络的可靠性。可以把PDN的电流分布导入热分析工具做电热联合仿真。这些进阶方向都需要额外的工具和知识但AC阻抗仿真是基础。把基础打牢了后面学起来会顺利很多。我个人在实际操作中的体会是PDN仿真最难的其实不是软件操作而是对电磁场原理的理解和对实际工程问题的判断。软件只是一个工具真正决定仿真质量的是使用者的经验和判断力。多做一些实际项目多和实测对比慢慢就能建立起对仿真结果的直觉。