
做电源完整性仿真的工程师第一次用Cadence Sigrity Power SI做AC阻抗仿真时通常会有两个极端感受要么觉得太简单把版图导入、选个网络、放两个探针点一下Run就出曲线了要么觉得太复杂频率范围怎么设、VRM模型怎么建、结果到底合不合格完全是一头雾水。这篇博文我想把Power SI里的AC阻抗仿真从头到尾讲透包括仿真之前需要想清楚的原理、工具里每一个关键设置背后的原因、以及结果超标时怎么一步步去优化。内容偏工程实践适合刚接手电源完整性仿真、或者已经在跑仿真但总觉得结果心里没底的朋友。1. 在做AC阻抗仿真之前先把电源完整性这事捋清楚1.1 明明板子能点亮为什么还要做电源完整性仿真先说一个我经常被问的问题板子都能正常开机、跑系统了为什么还要做电源完整性仿真这个问题要从芯片工作时的真实需求说起。芯片内部成千上万个晶体管在同一个时钟沿翻转瞬间需要一个很大的电流。这些电流不是从远处的电源模块直接拉过来的而是由芯片周围的去耦电容、PCB平面、以及电源模块共同构成的供电网络来供给。这个供电网络在业界叫PDN也就是电源分配网络。它从VRM开始经过Bulk电容、PCB走线、电源平面、过孔、表贴去耦电容一直到芯片的电源引脚甚至还要算上封装基板和裸片内部的电路。PDN最核心的指标之一就是阻抗。当芯片有一个瞬态电流变化ΔI流过PDN时根据欧姆定律电源引脚处的电压波动就是ΔV ΔI × Z。Z越大电压波动越大轻则电源纹波超标重则触发芯片掉电复位、逻辑误翻、高速接口误码。这些故障往往是间歇性的示波器去抓又很难复现排查起来非常头疼。做AC阻抗仿真的目的就是在设计阶段把这个“Z”算清楚看它在芯片可能需要的整个频段内有没有超过一个允许的阈值。只要阻抗被压在阈值以下瞬态电压波动就大概率在可控范围内。这就是为什么板子能点亮依然要做电源完整性仿真的根本原因。1.2 目标阻抗AC阻抗仿真的一把尺子有了阻抗曲线还得有一把尺子去衡量它这把尺子就是目标阻抗。目标阻抗的计算公式不复杂Z_target (VDD × 允许纹波比例) / ΔI其中VDD是电源电压允许纹波比例一般取3%到5%ΔI是芯片可能出现的最大瞬态电流变化量。举个例子一颗0.9V的内核电源允许3%的纹波瞬态电流变化10A那么目标阻抗就是Z_target (0.9 × 0.03) / 10 0.027Ω 27mΩ注意这个27mΩ是整个频段内的一个天花板。也就是说从几Hz到几百MHz从芯片电源引脚看进去的输入阻抗理论上都要低于27mΩ才算安全。这里多说一句实际项目中很多人会把目标阻抗当成一个固定的全局指标严格来讲它和负载的瞬态电流频谱有关是一个频变的量。但工程上为了简单普遍用这个公式算出一个恒定值然后要求全频段阻抗低于它这个做法在大部分场景下是够用的。理解了目标阻抗AC阻抗仿真的意义就落到了实处不是看曲线好不好看而是看曲线有没有穿破那条目标阻抗线穿破了就说明这个频段的PDN阻抗偏大需要补电容、改布局、或者优化电源模块设计。2. Sigrity Power SI AC阻抗仿真到底在研究什么2.1 从S参数到Z参数AC阻抗仿真的数学底色很多人第一次接触AC阻抗仿真会以为它就是拿欧姆表去测量实际上Power SI内部处理的是完整的频域电磁场问题。在GHz频段以下PCB上的电源平面、过孔、走线早就不是简单的理想导线了它们有寄生电感、寄生电容还有电阻损耗。要精确得到从某个端口看进去的阻抗需要用场求解器算出整个网络的端口特性。Power SI这里处理的实际上是Z参数。你可以把芯片电源引脚看成一个端口仿真器在这个端口注入一个已知的交流电流然后计算端口电压两者的比值就是输入阻抗。在高频段PCB上的平面和过孔之间存在复杂的耦合单纯靠RLC集总模型已经算不准必须用全波求解器或者经过验证的2.5D求解器来做。Power SI的优势在于它能在不太牺牲速度的情况下把平面、过孔、走线、电容模型统一放到一个电磁场环境里求解。这里我想强调一个概念就是仿真的频率范围。很多人在建AC阻抗仿真时习惯拍脑袋填1MHz到1GHz这其实是错的。电源网络的谐振行为从几kHz就开始了尤其是大容量的Bulk电容和VRM输出电感构成的谐振峰往往在几十kHz。如果你从1MHz开始扫低频段的峰值完全看不到等于白做。一般建议从100Hz甚至10Hz开始上限到芯片封装和裸片能影响的频率通常在1GHz到10GHz之间根据实际需要设定。2.2 影响阻抗曲线的三个频段和“老熟人”们一条完整的AC阻抗曲线从低频到高频会呈现多个峰谷看着很复杂其实背后的物理规律非常清晰。不同频段起主导作用的元件完全不同你只需要分频段去看。低频段一般是10kHz以下主导的是VRM的环路响应和Bulk电容。VRM不是理想电压源它内部有误差放大器、功率管、输出电感这些决定了它从直流到几十kHz的输出阻抗。这个频段的阻抗曲线通常会先随频率上升然后下降形成一个由VRM输出电感和输出电容谐振产生的峰。中频段大约10kHz到几MHz主导的是板级去耦电容包括容值较大的Bulk电容和容值稍小的陶瓷电容。每个电容都有一个自谐振频率这个频率由电容本身容值和寄生电感决定。多个电容并联会在各自的自谐振频率附近呈现低阻抗但在容值差异较大的电容之间会产生反谐振峰。反谐振峰是电源完整性设计中最大的敌人它出现在不同谐振频率的电容交替切换的频带上如果芯片瞬态电流的频率分量恰好落在反谐振峰附近电压波动会被明显放大。高频段几MHz到GHz起主导作用的是PCB电源平面本身的特性、过孔的电感、以及芯片封装和裸片内的寄生。这个频段想靠电容去压低阻抗已经很吃力了更多依赖平面耦合、过孔质量、以及芯片封装本身的去耦能力。想清楚这三个频段的物理图像你就知道看仿真结果时应该把注意力放在哪里。看到一个峰先判断它落在哪个频段再去找对应频段的电源网络元件优化方向马上就清晰了。2.3 反谐振是怎么来的为什么电容越多越容易出现尖峰反谐振这个问题值得单独拿出来讲因为它太容易把新手绕晕。我给一个生活中比较容易理解的类比并联电容就像一组不同大小的蓄水池每个水池通过一根管道接到用水点。管道本身有电感水池越大、管道越长等效电感越难降低。在某一频率下容值大的电容已经接近甚至进入感性区而容值小的电容还处在容性区。感性区意味着阻抗随频率上升容性区意味着阻抗随频率下降。两者并联后如果相位正好相反总阻抗会在这两个电容的谐振频率之间出现一个峰值这个峰值往往远高于单个电容的阻抗这就是反谐振。反谐振的本质是电容并联系统中不可避免的一个现象无法完全消灭只能控制它的幅度。控制方法通常是让不同容值的电容交叉排列让容值比不要太大比如10nF和22nF交替而不是100nF和1nF两种极端容值。容值平缓过渡反谐振峰就会明显缓和。这一点在做AC阻抗仿真结果分析时非常有用因为你在曲线上看到的那些“尖刺”很多都是反谐振造成的不是仿真算错了。3. Power SI里AC阻抗仿真的完整流程3.1 从版图到仿真模型准备工作不能省先说版图导入。Power SI通常有独立界面也可以在Sigrity Suite Manager中启动Power SI。新建工程后导入格式选择对应的PCB工具输出格式主流流程是Cadence Allegro输出.brd文件然后直接选择。其他EDA的版图需要转换或导出中性格式比如ODB这一步务必确认转换后的叠层、网络、器件信息没有丢失。导入之后第一步不是急着设仿真而是检查叠层和材料参数。叠层里的介质材料、介电常数Dk、损耗因子Df、铜箔电导率和粗糙度都会影响高频段的阻抗结果。很多公司有标准的叠层模板直接套用就行如果没有模板要去跟PCB Layout确认实际叠层厚度和材料别用软件默认值。默认Dk和Df与实际板材差太远的时候仿真出来的谐振频率会整体偏移高频段尤其明显。接下来是网络识别。你要在版图中指定哪些是电源网络、哪些是地网络。Power SI通常会自动识别铜皮和网络但有些孤岛、没有连接的铜皮不会自动归属到任何网络仿真时会表现为悬空。悬空的电源平面会在局部形成意外的谐振甚至导致曲线出现莫名其妙的尖峰。我习惯在仿真前用软件的网络检查功能把所有网络过一遍确认每个电源网络都有完整的回流路径也就是有对应的地平面与之耦合。设置完叠层和网络还要对所有器件做模型分配。这一步是很多新手最容易卡住的地方。软件的器件库会自动匹配一部分电阻电容模型但库里没有的器件会变成“未定义”状态。未定义的电容在AC阻抗仿真里等于不存在会导致结果整体偏大。我建议养成一个习惯进入仿真前检查BOM里每个电容是否都有对应的等效模型至少要有ESR和ESL理想的纯电容模型在中高频段误差会非常大。3.2 新建AC阻抗仿真一个可以照抄的流程模型准备妥当后就可以正式建仿真了。我按照自己的习惯把整个流程拆成下面几步照着做基本不会漏第一步在Power SI菜单里新建一个AC Impedance仿真选择导入的版图文件和叠层模板。第二步在仿真配置界面里添加要分析的电源网络。通常一个工程会有多个电源域比如0.9V内核、1.8V IO、3.3V模拟电源等如果你一次导入的版图包含多个电源网络建议分开做或者一次选多个网络但分别查看结果避免曲线互相混淆。第三步设置仿真频率范围。前面说过低频要足够低我一般取10Hz或100Hz起上限到1GHz到3GHz。如果芯片封装和裸片是重点研究对象或者你是做先进封装设计上限可以推到10GHz以上。扫描点数设成对数分布比如每十倍频程100个点既保证频段覆盖完整又不至于让中低频段太稀。第四步在芯片电源引脚位置放置一个AC电流激励源或者更准确地说放置一个阻抗探针。这个位置极其关键它决定了你算出来的是“从芯片看进去”的阻抗还是从其他位置看到的阻抗。为了完整评估我通常会同时在电源入口VRM输出端、芯片电源引脚、以及板端主要去耦电容布局密集区各放一个探针这样能同时看到不同位置的阻抗差异。第五步运行仿真。Power SI会先做一次模型提取然后进行频域求解。提取时间取决于板子的复杂度和频率点数简单板子几十秒复杂服务器主板可能要好几个小时。求解完成后界面上会直接画出各端口的阻抗曲线。这个流程看起来简单但我在实际工作中还是见过很多人把探针放错位置导致结果和真实情况完全对不上。一个实用的检查方法是在低频段从芯片电源引脚看进去的阻抗应该趋近于VRM输出端阻抗和所有电容的低频串联阻抗之和你可以手工估算一个量级再和仿真结果对比差太远说明探针位置或者模型设置有问题。3.3 关键参数设置背后的“为什么”整个流程里最容易被忽略的是参数设置的理由我挑几个经常出问题的点详细解释一下。先说频率范围和扫描点数。电源完整性的核心矛盾在于低频段VRM和Bulk电容行为显著中频段陶瓷电容主导高频段平面和过孔主导。如果在低频段只用很少的点VRM的谐振峰很容易被漏掉。对数分布的点保证了低频段和高频段都能有足够的解析度。另外如果你发现某个频率点附近曲线特别陡可以单独从1kHz扫到1MHz、加密点数再和全频段曲线拼起来这是一种很实用的局部放大手段。再说VRM模型。很多工程人员图省事把VRM设成理想电压源这样低频段阻抗会趋近于0看起来特别漂亮但这是假象。实际VRM有环路响应和输出电感从仿真角度至少要在VRM输出端串联一个与真实电源模块输出电感量级的电感比如100nH到2uH具体值参考电源芯片数据手册。不这么做低频段的阻抗曲线会严重偏低你误以为很安全实际产品在低频瞬态响应时就会掉电。最后说一说探针和激励源的关系。AC阻抗仿真本质上是在端口注入电流源然后测量端口电压算V/I得到阻抗。你可以在多个位置放多个探针每个探针都会给出一条独立的阻抗曲线。不同探针之间的结果差异其实也很有价值比如你在电源入口和芯片端各放一个探针两条曲线之间的差异可以帮你判断板级去耦在哪个频段起作用哪个频段完全是靠VRM或平面在硬扛。3.4 提高仿真效率与精度的技巧Power SI的AC阻抗仿真和DC IR drop仿真不太一样它要求在很宽的频段内做电磁场求解板子一复杂计算量就上来了。这里分享几个我常用的提速和精度平衡技巧。首先是网络分割。如果你的板子有多个完全独立的电源域可以只选择目标网络参与求解。Power SI允许你在分析中包含或者排除特定网络把无关网络去掉速度能提升不少。不过要注意一点芯片和地平面通常是要保留的因为回流路径依赖地网络去掉地会导致高频阻抗明显偏大。其次是模型精度分级。对于去耦电容这类规模大、数量多的元件用Spice模型精度最高但仿真速度最慢。纯RLC模型精度稍低但速度能快很多。我的做法是第一次快速扫描时全部用RLC模型先把整体曲线轮廓跑出来确认谐振点分布合理如果个别频段细节需要看得很准再针对那些频段的电容用Spice模型重新跑。这样既保证效率又能验证结果。最后是利用合理的网格剖分选项。Power SI的平面求解器会自动做网格剖分网格越细精度越高但速度越慢。新版软件的自适应网格已经做得相当聪明我通常用默认设置只有在平面边缘、过孔密集区域结果出现异常时才手动加密局部网格。4. 仿真结果怎么看、怎么修4.1 解剖一条阻抗曲线从低频到高频一步步读仿真跑完之后界面上会弹出一堆曲线很多人盯着看了一阵子还是不知道到底算不算合格。我一般按下面顺序读曲线。第一步看低频平台。从最低频开始阻抗应该先是一个很小的值然后随着频率上升出现一个峰这个峰就是VRM和Bulk电容的谐振峰。如果这个峰超过了目标阻抗说明VRM的输出电感太大或者Bulk电容容量不足、距离VRM太远导致电感偏大。第二步看中频段走势。从几十kHz到几MHz你会看到几个明显的谷和尖峰。谷对应的是某组电容的自谐振频率尖峰就是不同电容之间的反谐振。我首先关注的不是那些已经很低的谷而是尖峰的峰值有没有超过目标阻抗。反谐振峰是压指标的难点因为它往往不是单纯加电容就能解决的。第三步看高频段。过了几MHz以后曲线通常迅速上升最后几乎是一条单调上升的直线。这段主要由过孔和平面电感和封装的寄生决定。高频段超过目标阻抗很常见但未必都是问题关键在于芯片的实际瞬态电流在高频区有多大的能量。除非是做高速接口、大电流功率芯片一般高频段的超标可以适度放宽。顺着这个思路你就能把一条复杂的曲线拆成三个独立的子问题来分别检查而不是整条曲线拿去看那样往往会被低频或中频的峰干扰判断。4.2 阻抗超标怎么办对症下药的PDN优化方法曲线超了先别慌超标不可怕可怕的是不知道怎么修。我把不同频段超标时的对策整理成一份笔记低频段超标核心是VRM环路和Bulk电容。对策包括换用输出电感更小的VRM模块或者调整电源模块的环路补偿让它的环路带宽变高增加Bulk电容总容量选择低ESR的大容量钽电容或者电解电容把Bulk电容尽量靠近电源模块输出端放置。中频段超标核心是去耦电容的选型和布局。对策包括在目标频段附近增加自谐振频率合适的陶瓷电容比如1MHz到10MHz区域多用1uF到10uF的X5R/X7R把容值从小到大均匀混合避免出现容值差距过大的并联组合增加去耦电容与芯片电源引脚之间的过孔数量减小连接电感。高频段超标核心是平面和过孔。对策包括电源平面和地平面尽量靠近缩小介质厚度增加平面电容在芯片正下方和电源引脚旁边密集布置小容值电容比如100nF、10nF的0201封装优化过孔排布每组电源/地过孔尽量靠近形成低电感回路。这些都是工程上被反复验证有效的手段具体怎么组合还是要回到AC阻抗曲线上去验证。每做一次改动就重新仿真看曲线的变化是否符合预期不要一次改太多变量否则很难判断到底是哪个改动起了作用。4.3 一个0.9V内核电源阻抗全频段压到10mΩ以下的案例说一个我经手过的真实场景。某FPGA内核电源0.9V目标阻抗计算出来大约10mΩ。第一次仿真结果非常难看低频50kHz附近有个大峰峰值到了80mΩ5MHz附近还有一个反谐振到了25mΩ而目标只有10mΩ。低频这个大峰经过分析原因是VRM输出电感太大加上Bulk电容数量明显不足。优化动作很直接把电源模块输出电感规格从680nH降到330nH同时在VRM输出端附近增加了6颗470uF的聚合物钽电容。仿真验证后50kHz的峰从80mΩ降到了12mΩ附近基本贴近目标线。中频反谐振的问题就复杂了。查看原始设计发现板上27uF和1uF电容各占了一大半中间容值几乎没有所以27uF朝1uF的过渡区出现了一个很陡的反谐振。我们的做法是拿一部分1uF替换成4.7uF和2.2uF让容值按27uF、10uF、4.7uF、2.2uF、1uF的顺序平滑过渡同时保证总容量不变。结果5MHz附近的反谐振峰从25mΩ降到了9mΩ曲线整体压到了目标线下。这个案例想说明的其实是迭代方法的重要性。先低频后高频先大器件后小器件一次只动一类参数每次仿真后记录曲线变化这是PDN优化最笨但最可靠的做法。5. 常见问题与排查技巧实录5.1 仿真跑不通模型未定义、网络悬空、曲线异常用Power SI的过程中几乎每个人都会遇到一些让人抓狂的报错我把高频问题排除一下。最常见的报错是仿真器件未定义。这种问题通常出现在工程导入以后软件找不到部分器件的仿真模型。解决办法是回到模型库为每个未定义器件分配一个可用的模型没有库的话可以手工创建一个RLC串联模型参数从器件数据手册里查。不要跳过未定义器件它们会直接干扰仿真结果。还有一种情况是曲线在某个频率点突然出现一个孤立的非常深的尖刺这种情况八成是某些区域产生了虚拟谐振尤其容易发生在悬空铜皮上。检查一下有没有孤岛网络把它们接地或者删除尖刺一般就会消失。网络热词里还经常有人搜“cadence瞬态仿真不收敛”这在Sigrity工具里也时有发生。AC阻抗仿真不收敛通常和高频点数太多、网格剖分过细有关可以试试降低最高频率、放宽收敛判据或者把求解器换成更稳定的选项。另外如果你在某个节点手动加了一个无源器件但极性接反了也会导致不收敛检查器件方向也是一个常见排查手段。5.2 仿真与实测对不上最容易被忽略的几个原因仿真结果和实测差距大几乎是所有电源完整性工程师的共同痛点。我踩过几次坑之后总结了三个最典型的原因。第一个原因是VRM模型太理想。很多人在仿真里把VRM当理想源低频阻抗被算得很低实际产品用专业阻抗分析仪去测低频阻抗普遍比仿真高不少。解决办法是给VRM模型加上输出电感和ESR至少要和数据手册给出的等效参数一致。第二个原因是电容模型不够准。我们经常只知道一颗电容的容值和封装尺寸但ESL和ESR往往被忽略。ESL在自谐振频率以上的频段是主角ESR直接决定谐振谷的最低阻抗。用理想的LCR模型和用厂商提供的精确频变模型在中高频段的结果差异非常显著。第三个原因是探针位置与实测位置不一致。仿真里你放在芯片电源引脚实测时探针却放在电容附近两者之间隔了一段电源平面高频段的阻抗自然对不上。实测之前先想清楚你要验证的是哪个端口的阻抗并尽量在仿真里和实测时选择一致的位置。我把这些典型问题整理成了速查表方便排查时直接对照症状可能原因排查路径低频阻抗异常偏低VRM模型设置成理想源给VRM加输出电感和ESR后重跑中频出现异常尖峰电容模型ESL过大或容值过渡剧烈核对电容模型参数调整容值排布曲线高频整体偏高地网络未包含在仿真中检查分析网络设置确认地网络参与尖刺出现在孤立频率点悬空铜皮或孤岛平面删除或接地悬空铜皮后重跑仿真与实测差异大探针位置不一致统一仿真与实测的测量位置报错器件未定义器件没有分配模型全量分配RLC/Spice模型后再跑5.3 关于AC阻抗仿真和TDR仿真的一个提醒顺便提一句很多人搜索“sigrity怎么仿真tdr”是把它和AC阻抗仿真混在了一起。TDR是时域反射计仿真主要用来观察传输线的特征阻抗变化定位阻抗不连续点比如走线换层、过孔残桩、连接器焊盘等它和电源完整性的AC阻抗仿真用途完全不同。但在电源完整性领域TDR仿真也有它的用处比如你怀疑某个过孔或者某段平面拼接存在明显的阻抗不连续可以用TDR仿真的波形去定位具体位置。Signal Integrity和Power Integrity虽然在工具里是不同模块实际分析思路是相通的。我的建议是AC阻抗仿真解决“够不够低”的问题TDR仿真解决“在哪里断了”的问题两者可以互补使用。6. 最后再分享一个实战里的小习惯做了几年电源完整性仿真我自己最大的体会是不要一上来就跑全板仿真先花几分钟手工估算一下低频段的等效阻抗再用仿真去验证。比如粗略算一下VRM输出电感和Bulk电容的谐振频率预测一下曲线在哪个频点出现峰然后再去看仿真结果。这个预判的过程能让你非常快地发现仿真设置里的错误也能让你对曲线异常更敏感。AC阻抗仿真只是电源完整性设计中的一个环节后续还可以继续做DC IR Drop分析、时域瞬态仿真、去耦电容优化甚至和信号完整性联合分析。每一步之间都是互相印证的跑熟了AC阻抗这条链路后面这些东西上手会快很多。先把这一条曲线看明白电源完整性设计你就已经入了正门。