
好多年没专门写电源仿真的总结贴了但每次拿到一块新板子我依旧会在投板前先在Cadence Sigrity里跑一遍完整的电源完整性流程。原因很简单核心电压越来越低负载电流越来越大几毫欧的阻抗差异都可能让系统在高温满载时无故复位或者误码。之前我带过的一块视频处理板DDR4供电附近的去耦电容数量堆得不少结果核心供电在满载压力测试下直接掉了将近120mV系统重启。后来把PowerDC的IR Drop云图调出来看VRM输出到BGA引脚这一段两个过孔密集的瓶颈点贡献了近一半压降。所以电源仿真真不是锦上添花这是投板前就该做掉的工程量。这篇文章我打算用实际项目里最常用的一条流程把Sigrity电源仿真从VRM设置到结果解读完整串一遍。文章会覆盖DC IR Drop、AC阻抗扫描、瞬态响应这几类最常见的分析重点讲清楚VRM模型参数怎么填、PDN网络怎么建模、去耦电容怎么评估以及最后拿到Z(f)曲线和电压云图时该怎么判断板子到底行不行。适合正在做高速数字板、服务器主板、FPGA核心供电或者被PI问题折磨过几次的硬件工程师参考。1. 项目概述Sigrity电源仿真到底在仿什么1.1 三类仿真对应三类问题先别急着打开软件得先理清楚我们说的电源仿真究竟是哪一类。我见过不少新手对着Sigrity全家桶发懵其实大多数情况下我们只关心三类问题DC IR Drop直流压降够不够。电流从VRM流过铜皮、过孔、连接器到达芯片引脚沿途会因为电阻产生压降。芯片规格书通常要求到达引脚的电压不能低于某个值比如1.0V的核电压静态压降一般要控制在2%以内就是20mV。这部分用PowerDC去算。AC阻抗从芯片引脚往电源网络看进去阻抗Z(f)在整个频段内是否低于目标阻抗。如果某个频点阻抗突起来芯片供电在这个频点的噪声就会大轻则纹波超标重则逻辑误翻转。这部分用PowerSI或者PowerAMM做。瞬态响应负载电流突变时电压会怎么跌、跌多少、多久能恢复。比如CPU从空闲瞬间切换到满载电流阶跃几十安培电压会有一段下垂droop幅值不能超过容限。这部分用PowerDC的transient分析或者和VRM厂商模型联仿。这三类分析的本质都是在评估从VRM到芯片die之间的供电路径到底能不能在静态和动态两种条件下维持合格的电压。VRM在整个PDNPower Delivery Network里既是源头也是边界条件所以它的建模对不对直接决定后面两步仿真的准确性。1.2 通用PDN模型与VRM的关键作用从信号完整性的角度你可能习惯把电源网络想象成干净的直流平面但从PI的角度看整个供电路径其实是一串寄生电阻、电感和电容的组合。VRM负责把输入电压转换成稳定的低电压大电流输出但它的输出并不完美——开关频率带来纹波控制环路有带宽限制负载突变时它的输出电压会跟着摆动。因此VRM在仿真中的角色是两重的在DC分析里VRM是一个接近理想的恒压源带一点输出电阻和负载反馈特性决定整个网络的电压参考点。在AC分析里VRM的输出阻抗和环路增益决定了电源网络低频段的行为。低频段Z(f)通常由VRM输出阻抗主导中频段由体电容主导高频段才轮到陶瓷去耦电容和电源平面寄生参数。所以很多人一上来就花大量时间折腾去耦电容结果低频段的VRM模型用了个错误的输出电容整个阻抗曲线都是错的。先把VRM这个源头搞对后面所有结果才有意义。1.3 标准的PI仿真流程骨架我平时在项目里跑PI的流程大概是这样的后续章节就是按这个顺序展开的从Allegro导出版图导入Sigrity确认叠层、铜厚和材料参数。定义电源网络和地网络给负载芯片分配电流。创建VRM模型设置输出电压、负载电流、感测方式和输出网络参数。跑PowerDC静态IR Drop检查电压云图和电流密度。根据IR结果调整平面、过孔和铜皮宽度直到静态压降满足要求。跑PowerSI AC阻抗扫描核对Z(f)曲线是否低于目标阻抗。必要时跑瞬态分析看负载阶跃下的电压跌落情况。如果耐压或纹波不达标针对性地调整去耦电容和VRM反馈参数。这套流程里第3步VRM设置是最容易被忽略又是最关键的环节。下面单独展开讲。2. VRM设置从模型选择到参数填写2.1 VRM模型的三种选择策略Sigrity里建VRM模型不同场景有不同选择。我做过不少板子总结下来有三种常见策略理想电压源 串阻最粗暴的方式只适合做非常早期的可行性评估比如粗略看一块铜皮的IR Drop是否离谱。把VRM设成理想源在输出端串几十毫欧电阻结果偏乐观因为真实的VRM环路响应和输出电容都会影响动态性能。厂商提供的VRM模型文件很多主流VRM控制器厂商比如TI、MPS、Infineon会给仿真文件格式可能是.lib、.snp、.vrm或者其他加密模型。这类模型包含控制器环路信息做瞬态仿真时最准确但是获取麻烦而且经常需要签NDA。我建议有条件就从厂商拿这是最省事也最不容易被挑战的路子。Sigrity内置的通用VRM行为模型PowerDC里可以直接选择VRM模型类型填输出电压、最大电流、输出电感、输出电容、ESR、反馈环路参数等工具会根据这些参数自动生成一个行为级模型。对于没有厂商模型的情况这是最实用的选择精度在自己可控范围内。我实际项目里用最多的反而是第三种。因为很多板卡用的VRM方案都是参考设计改的厂商模型往往覆盖不了我们改过的输出电感值而行为模型反而可以快速调整参数来匹配实际BOM。2.2 PowerDC中的VRM参数细节进入PowerDC之后创建VRM的交互界面在不同版本里略有差别但核心参数基本一致。我以常见版本为例逐个说下该怎么填Output VoltageVRM输出的标称电压。比如1.0V的核电压就填1.0。这里注意如果你开了远程感测Remote Sense那么这个电压应该填芯片端期望达到的电压值而不是VRM输出瞬时的电压。感测线会补偿线路压降让芯片端电压尽量接近设定值。Maximum Output CurrentVRM标称最大输出电流。这个参数会影响负载线Load Line和环路特性如果填得比实际小后面瞬态压降会显得更狠。我的习惯是填芯片规格书里的最大瞬态电流而不是板卡整体功耗折算的均方根电流。Output InductanceLoutVRM输出扼流圈电感值。这个值对AC阻抗曲线中低频谐振点的位置影响很大通常几款参考设计里选型的L值就是几十到几百纳亨级别。注意填的是有效值不是磁芯厂家标称值要考虑偏流降感。Output CapacitanceCout与ESRVRM输出端的体电容总和。多个电容并联时ESR要用并联后的等效值不是单个电容的ESR。这个值定了低频段的Z(f)平台高度。Switching FrequencyVRM的开关频率一般几百kHz到几MHz。这个参数主要影响纹波和环路带宽估算对AC阻抗低频段可能有一点影响对DC分析几乎没影响。Feedback Loop Bandwidth环路带宽如果模型支持填写反馈环路参数带宽越高动态恢复越快但容易不稳定。没有厂商数据时可以先用默认值或者按开关频率的1/10估算。这些参数里最容易翻车的是Cout和ESR。很多工程师会把板端所有电容都当成VRM输出电容包括分布在芯片旁边的陶瓷去耦电容结果低频段阻抗被算得很低仿真过于乐观。实际在建模时只有靠近VRM输出、和输出电感构成LC滤波的那部分体电容才会直接影响VRM环路行为高频去耦电容的作用在AC分析里会被单独体现。2.3 感测方式和负载线设置VRM的设置里还有一个很关键但是经常被忽视的部分——感测方式Remote Sense和负载线Load Line。我们做IR Drop分析时VRM的输出电压如果按照芯片端电压来校准那相当于默认开启了远程感测。这种情况下从VRM输出到感测点之间的直流电阻引起的压降会被VRM的反馈环路补偿掉芯片端电压会更接近设定值。如果你的板子实际上没有远程感测那仿真模型里却开着感测就会得到偏乐观的结果。这个开关一定要和硬件原理图对齐。负载线是Intel这类CPU平台常见的特性VRM会根据输出电流主动降低输出电压让芯片端在轻载时电压高一点、重载时电压低一点从而减小瞬态电压变化幅度。如果你的VRM控制器支持负载线仿真模型里要设置对应的毫欧值如果普通板卡没这个功能就不要填否则会低估重载情况下的电压跌落。我在实际项目里踩过一个坑某块板子的VRM明明不带负载线功能仿真模型里却保留了默认的1.0mΩ负载线设置结果满负载IR Drop仿真显示只有十几mV看起来非常理想实际板子上量出来却接近30mV。排查了半天最后才意识到是模型里的负载线设置多补偿了一部分压降。所以填完VRM参数之后务必对照一下控制器规格书把不属于你的功能全部关掉。3. PDN网络去耦与目标阻抗3.1 网络分组与负载建模VRM设置完之后下一步是把整个电源网络在Sigrity里组织起来。这一步看起来像体力活但直接影响仿真速度和准确性。首先是网络分组。导入版图之后同一个电源net可能在版图里叫不同的名字比如AGND和PGND虽然都是地但如果你在仿真里把两者合并可能在真实单点连接处产生错误的回流路径。我一般手工检查一遍所有电源地网络把同属性的合并确保没有因为命名差异导致网络断裂。然后是负载建模。芯片端电流的加载在PowerDC里通过Current Sink或Source实现。这里最常犯的错误是把整个芯片的全部电流都加载到一个引脚上。实际大芯片的电流在不同引脚区域分布差别很大尤其BGA封装内部的电源引脚密集分布在不同位置最好按区域分配多个电流源并设置合理的电流比例。比如CPU核心区域和IO区域可以分开建模每个区域的电流大小按功耗估算。这样IR Drop云图才能真实反映瓶颈。如果你有厂商的功耗数据直接用如果没有就按芯片最大功耗除以核电压得到总电流再按引脚分布比例粗分。粗分总比把电流全塞在一个pin上好得多。3.2 去耦电容的建模和模型参数AC阻抗仿真中最核心的变量是去耦电容。电容模型不是填一个容量就完事至少要包含ESR、ESL和安装寄生。MLCC陶瓷电容在高频下的阻抗主要由ESL决定而安装到PCB上之后还有过孔、焊盘的寄生电感。我见到过很多初学者把100nF电容当成理想电容用仿真出来的反谐振峰全部偏移到兆赫兹以下和实测完全对不上。正确的做法是用电容供应商提供的S参数模型绕不过去时也应该给每个电容标注ESL和ESR。不同封装、不同容值的安装电感经验值差异很大电容封装容值范围典型ESL含安装寄生典型ESR08051nF~100nF0.8nH~1.5nH10mΩ~50mΩ0402100nF~10uF0.4nH~0.8nH5mΩ~30mΩ0201100nF~1uF0.3nH~0.5nH5mΩ~20mΩ这些数值只是经验参考关键是ESL决定电容在哪个频点自谐振ESR决定了这个频点对应的最小阻抗值。仿真时如果拿不到S参数至少按上表的量级去填而不是默认0。另外一个常见问题是电容容值随直流偏置变化。大容量的X5R/X7R陶瓷电容在额定电压的一半时有效容值可能只有标称值的50%甚至更低。AC仿真时的直流偏置通常按实际工作电压设置所以在填电容模型时记得把容值换算成偏置后的有效值。很多反谐振峰超标的问题追根究底是仿真模型里用的容值人人都是理想值实际板子上电容表现早就缩水了。3.3 目标阻抗的计算逻辑去耦电容布置得好不好需要拿目标阻抗Target Impedance也叫Ztarget来评判。目标阻抗的计算公式在业界很通用Ztarget (Vdd × ΔV%) / ΔI其中ΔV%是允许的动态电压波动比例ΔI是瞬态电流变化量。举个例子1.0V核电压动态容限5%也就是50mV负载阶跃电流是8A那么Ztarget 50mV / 8A 6.25mΩ。这意味着从芯片引脚看进去的电源阻抗在关注频带内都要低于6.25mΩ否则瞬时电流变化产生的压降就会超出50mV的容限。这个计算虽然简单但要小心几个陷阱。动态容限不是静态容限很多芯片规格书会区分稳态电压误差和动态电压突变。如果误把静态容限通常更小拿去算目标阻抗会过于严格导致仿真里怎么调都调不出来白白加一堆电容。反过来如果把动态容限当成总容限又可能过于乐观。正确的做法是查规格书里的VI tolerance during load transient这类条目拿到动态窗口。实在查不到的时候业内有一个常见的保守默认值动态容限取核心电压的5%瞬态电流取最大负载电流的50%~80%。这个数值作为前期评估够用但正式出报告前还是要去和芯片厂商确认。4. DC IR Drop完整实操4.1 仿真前的layout准备PowerDC的IR Drop仿真看起来只是设个电压、加个电流、跑一下但前处理做得好不好直接影响结果的准度。我一般按照下面几步做检查叠层和铜箔参数。导入版图后先核实各层铜厚、电导率、表面处理方式。哪怕只是镀金工艺不同IR Drop在高频DC下差异不大但大电流路径上还是有可感知的影响。温度也要设对我一般按常温25℃跑一版再按产品工作温度比如85℃跑一版铜电阻率会随温度升高而增加85℃下电阻率比25℃高大约20%。锁定关注的电源域。每块板子可能有很多电源一次仿真全部网络会让网格量爆炸也没必要。我习惯一次仿真一个域比如先跑DDR的VDDQ再跑FPGA核电压。检查layout断孔和孤岛铜皮。PowerDC对零厚度铜箔的处理很敏感如果有孤岛铜皮或者断头via会导致结果出现奇怪的高压降点。这种问题先回Allegro修掉再仿不要硬跑。给VRM和负载摆放探针。方便后面直接看电压波形。4.2 运行分析与判读结果设置完成后运行PowerDC分析会得到电压云图Voltage Contour和电流密度图Current Density。看电压云图时我一般关注三个点VRM输出引脚处电压。正常情况下应该非常接近设定值。芯片最远端供电引脚电压。这个电压减去VRM侧电压就是整个网络的直流压降。电压明显突变的位置。云图上颜色会突然变化那一圈周围的铜皮或者过孔大概率就是瓶颈。电流密度图主要看局部过流。电流密度过高的位置意味着发热也会集中不只是压降问题。铜箔上的电流密度超过一定阈值经验上30A/mm²以上就要警惕说明这块铜皮过窄或者过孔数量不足。高热量的局部温升可能引发可靠性问题所以IR Drop不合格时不只是电压太低同时也意味着某段路径太弱。关于怎么判断满不满足要求我习惯拿芯片规格书给的最小工作电压和静态压降容限做对比。比如1.0V核电压、规格书允许芯片端最低0.965V那么整个网络静态压降最多35mV。如果仿真显示VRM端1.0V、芯片端0.950V那结果就是FAIL必须改善。4.3 IR Drop优化手段与取舍仿真显示压降超标时很多人第一反应是加宽铜皮但不一定真的有效。我按我自己实际过程中的优先级排列几个手段过孔优化。IR Drop超标最常见的原因是大电流路径上过孔太少或者孔径太小。一个0.3mm孔径的过孔直流电阻大约是0.5mΩ看起来很不起眼但如果电流路径上有几十个这样的孔串联压降就上来了。这种情况砸掉一部分过孔重新布局都未必能解决因为瓶颈可能在某个特定方向的连接。仿真里可以后处理选中过孔组的电阻值直接看哪些孔贡献最大。铜皮平面完整性。如果电源平面被信号线掏空成一大片网格电流只能绕行等效电阻会大幅增加。这种情况把平面层掏空区域尽量限制在小范围或者增加相邻层的借用铜皮。VRM摆放位置。如果VRM离负载太远大电流长距离传输必然带来压降。在布局阶段就把VRM放在靠近负载的位置比事后加宽铜皮有效得多。增加并联电源层。多层板上多个电源平面并联可以显著降低直流电阻但会导致平面电容增大、可能影响电源完整性其他方面需要权衡。5. AC阻抗仿真与反谐振处理5.1 PowerSI中搭建Z(f)扫描DC IR Drop合格后下一步是AC阻抗扫描。PowerSI是Sigrity的电磁场仿真工具可以从版图提取S参数也可以直接看Z(f)阻抗曲线。我自己在PowerSI里搭AC阻抗仿真的步骤大致是这些导入layout和PowerDC一样先把关注的电源域和对应的地网络定义清楚。在芯片引脚或BGA焊盘处设置端口Port。这就是往电源网络里看的探针位置。端口位置不同Z(f)结果差异很大。我喜欢把端口放在芯片核心供电引脚正下方这样看到的是芯片实际感受到的阻抗。把VRM输出端口也设上或者把VRM模型用等效RLC电路接进去。PowerSI里可以直接连一个理想的VRM模型但我们前面说了低频段一定要考虑VRM自身输出阻抗否则低频Z(f)会异常偏低。对所有去耦电容附加模型。有S参数就挂S参数没有就用RLC集总模型替代。设置频段。我一般从10kHz或者100kHz扫到100MHz甚至更高。高频到多少取决于关注点比如DDR的开关噪声通常是几百MHz那就需要扫到1GHz以上普通电源完整性要求扫到100MHz基本够用。运行仿真提取Z(f)曲线。这里有个小技巧PowerSI仿真前可以单独关闭不在网络内的无源器件避免无关的S参数提取拖慢速度。另外如果只是看Z(f)而不是全波EMC可以用频域分析方法而不是全波方法速度快很多。5.2 反谐振峰是怎么产生的Z(f)曲线不会是一条平直的线它由很多个LC谐振点叠加而成。低频段受VRM影响中频段受体电容影响高频段受陶瓷电容和平面寄生影响。当这些谐振点靠得很近但又没有有效阻尼时就会出现反谐振峰Anti-Resonance。反谐振的本质是LC并联谐振。举个例子低频体电容的ESL较高在大约几十kHz处开始呈现感性同时旁边的高频陶瓷电容又有自己的自谐振频率二者在某一个频点处电感互相抵消阻抗急剧升高。这个尖峰如果超过Ztarget就意味着芯片在这个频段的噪声会直接变成电源电压波动。我在实际项目中遇到最多的是10MHz附近的反谐振峰。原因往往是100nF和1uF电容的自谐振频率相近它们的反谐振点恰好在DDR或SerDes工作频率附近。这种情况下单纯增加电容数量用处不大反而加剧反谐振——因为增加的电容会改变谐振点位置可能把峰推向更糟糕的频段。5.3 根据Z(f)曲线调整去耦方案看到Z(f)曲线之后怎么决定加什么电容、加在哪里这个步骤有固定套路谐振峰出现在某频点。先看这个频点附近被哪些电容主导。如果峰出现在几百kHz到几MHz多半是体电容和陶瓷电容交接的地方。试着在附近插入一个容值介于两者之间、且ESR略大的桥接电容。比如你已经有100uF聚合物电容和100nF陶瓷电容反谐振在3MHz可以加一批1uF或4.7uF的陶瓷电容来平滑过渡。高频段Z(f)整体偏高。这种问题说明从电容到芯片引脚之间的回路电感太大。重点不是堆电容数量而是把电容放进离芯片更近的位置减小过孔数量和回路面积。仿真里你可以做一组电容位置敏感性测试跑一版现有布局再跑一版把所有电容贴到芯片正下方看Z(f)能改善多少。如果改善巨大说明布局问题比容值问题更严重。低频段Z(f)偏高。基本是VRM输出电容不足或者ESR太高去动去耦电容效果有限得回到VRM侧的体电容设计。调整完去耦后重新跑仿真对比Z(f)曲线。一次不达标不要盲目加电容加太多反而会把反谐振峰推向未覆盖的频段。我的经验是每次调整一类电容值观察Z(f)曲线变化趋势找到规律后再继续改。通常三轮之内能把主要的尖峰压下去。6. 瞬态仿真与结果判读6.1 VRM瞬态模型与负载阶跃设置DC和AC都过了不代表动态就没事。负载瞬态Load Transient引起的电压跌落是电源设计里最容易被忽略的一环我建议有条件的情况下务必补一次瞬态仿真。瞬态仿真在PowerDC里可以直接做核心工作是把负载改成随时间变化的电流波形。常见的方式是给一个阶跃电流比如电流从0.5A在几微秒内跳到8A保持一段时间再跳回来。这个阶跃的上升斜率slew rate很关键它决定电压跌落的严重程度。太陡的上升沿会考验VRM环路带宽和去耦电容的瞬态响应能力太缓又看不出问题。实际设置时我会先按最恶劣工况来比如一次阶跃电流变化量为最大负载的70%~80%上升时间取处理器load step规格书里最严苛的值。如果没有规格书可以先用1A/us~10A/us这个区间做敏感度分析看看不同斜率下电压跌落差异有多大。斜率越陡跌落越深这是预期内的。瞬态模型如果用厂商VRM模型最准如果没有就用前面的行为模型但要意识到行为模型可能在环路延迟上偏理想结果会略好于实际。为了保险可以在仿真结果上留出10%~15%的电压余量。6.2 解读电压跌落波形瞬态仿真结果会输出芯片引脚电压随时间变化的波形。我判读时主要看几个指标电压跌落深度Undershoot从标称电压到最低电压的差值这是最核心的指标。芯片规格书会规定动态容限比如1.0V允许最低0.950V那跌落不能超过50mV。恢复时间从电压跌到最低点到恢复到容限范围内所花的时间。太长的恢复时间说明VRM环路响应慢或者是去耦电容储能不足。过冲Overshoot负载从满载跳回轻载时电压会有一个向上尖峰。过冲太高同样可能损坏芯片或引发保护。如果是跌落深度超标通常有两个方向一是增加高频去耦电容缓解跌落瞬间的能量供给二是提高VRM环路带宽让VRM更快补偿能量。前者的作用范围是纳秒到微秒级后者的作用是微秒级以上。如果你的跌落波形显示电压是在几百纳秒内猛跌优先加高频电容如果跌落后迟迟恢复不过来那就是环路响应的问题回到VRM模型参数去调。波形的时间尺度非常重要。很多人拿到瞬态波形后盯着每个细节实际上芯片关注的核心就是最恶劣那个极值是否越限次要才是恢复时间。先看门槛再去分析波形形状才有意义。7. 常见问题与排查技巧7.1 VRM模型相关的坑我在项目里反复踩过几个VRM相关的坑列出来给大家当参照现象可能原因排查思路DC IR Drop仿真的芯片端电压远低于实测VRM开了远程感测但实际板子没有关掉模型里的Remote Sense选项重新设置VRM输出电压AC Z(f)曲线低频异常偏低把负载端所有去耦电容都算进了VRM输出电容只保留靠近VRM输出的体电容作为Cout其余交给网络其他部分建模瞬态跌落后电压恢复过慢VRM环路带宽设置成默认值不符合实际控制器按控制器规格书填写环路带宽或使用厂商模型IR Drop结果比实测乐观很多负载电流分配过粗全部集中在引脚根部按功耗分布将电流分摊到多个引脚7.2 结果不合理时先查这些地方仿真结果出现异常时不用急着重跑几百次。我通常按下面的顺序快速定位网络定义对不对。检查要分析的电源网是否被意外合并、或漏掉了某些平面层。模型有没有挂全。电源网络里有没有器件属性为空、电容值缺失、VRM没连到输出网络。网格收敛性。PowerDC报不收敛就检查网格设置和模型平滑度Z(f)曲线出现锯齿状跳变多半是端口设置不合适或者电源平面有未衔接的碎片。和实测对比校准。如果板上已经做了样品用VRM输出端到芯片端的开尔文测试点量一下静态压降和仿真结果差在20%以内说明流程基本可信差很多就需要回头查材料参数和感测设置。另外我特别建议在做完AC仿真后抽一两个关键频点去和网络分析仪的实测值做定标。仿真工具再准也很难100%还原PCB制造公差和器件批次差异。把仿真当成趋势判断和方案比选工具而不是绝对真理这样项目推进反而更顺畅。7.3 一点个人体会最后分享一点我做PI仿真多年的体会。电源仿真和信号完整性最大的不同在于它涉及的是一个覆盖很广频率范围的网络任何单一环节的建模误差都可能淹没整体结论。所以我从来不会只看某一次仿真的绝对值而是习惯用几板仿真做对比改电容前和改电容后、加过孔前和加过孔后、开负载线和关负载线的差别。趋势对了设计方向就对了具体的元件值留到实测阶段微调是完全够用的。希望这篇从VRM设置到结果解读的完整流程能帮你在下一块板子上少走几步弯路。