资讯动态

多核SoC电源完整性PI设计:从谐振机理到去耦网络落地

发布时间:2026/10/25 1:06:07 来源:尧图企业网站定制
前阵子我们一款多核SoC回片测试CPU单跑一切正常可一旦NPU和GPU挂上联合负载DDR接口就开始零星报错。示波器怼到核心电源域上看毛刺直逼几百毫伏频率恰好落在封装寄生电感跟片内去耦电容谐振出来的那个峰上。这种问题在流片前如果能靠PIPower Integrity电源完整性设计提前压住根本不用等芯片回来再熬夜查。我入行这几年接过不少芯片项目的后端和封装协同设计说句实在话多核、多电源域的谐振电源噪声已经成了先进工艺下回片后最头疼的几大问题之一。它的难处不在原理多深而在于噪声源多、频段宽、耦合路径杂传统单电源域那套堆电容的思路根本应付不过来。这篇东西就把我实际做过的PI设计方法拆开讲包括谐振怎么算、去耦网络怎么铺、仿真怎么建模、工程里哪些坑最好提前避开。适合正在做芯片后端、封装设计或者信号电源完整性仿真的同行参考也适合刚接触PI想建立整体认知的初学者。1. 先讲清楚谐振噪声是什么封装里那根隐形的“LC回路”1.1 一次回片实测引爆的问题前面提到的那个项目具体现象是这样的芯片核心电压0.8V规格书上允许的纹波是±3%。实测时核心域的瞬态电压跌落到了0.72V左右换算成跌落幅度就是10%显然超标。等我把示波器FFT打开发现噪声能量主要集中在30MHz到40MHz这一段再对比封装寄生参数答案就浮出来了——封装走线电感加片内去耦电容正好构成一个自谐振频率在35MHz附近的LC回路。这个现象在芯片行业有个日常叫法谐振电源噪声。简单理解就是电源分配网络PDNPower Delivery Network里既有电容又有电感任何一个RLC电路都有自己的谐振频率。当芯片内部电路瞬态抽流的频率分量刚好落在谐振点附近时阻抗会被放大一点点电流波动就能转换成很大的电压噪声。这跟我们推秋千一样推的频率对了幅度就越荡越大。1.2 PDN的寄生电感才是噪声放大器很多人第一次接触PI会觉得奇怪电源网络明明铺了一大片铜为什么还会产生噪声答案是寄生电感。芯片要工作电流必须从PCB上的电源模块出发穿过过孔、板级走线、封装基板走线、凸点bump或键合线最终进到硅片内部。这些路径上的每一段金属都有电感频率越高感抗越大。按公式算感抗是 Z_L 2πfL。假设封装回路电感L为500pH在35MHz下感抗不过0.11Ω看着不大可问题是同一回路里还并着一堆片内去耦电容两者一谐振阻抗峰值可以比单看电感或单看电容高出十倍不止。这个峰值一旦对准芯片实际工作时的抽流频段就会表现为明显的电源纹波甚至时序违规。更加隐蔽的是谐振分很多阶。片内电容跟封装电感谐振是一阶封装外接的几组不同容值MLCC之间还会产生反谐振稍后细说。所以PDN的频域阻抗曲线从来不是平直的而是高低起伏的一组峰和谷。PI设计的目标说穿了就是把这条曲线压到目标阻抗门限以下别让峰冒头。1.3 为什么多核一跑谐振峰就被“撞”上了单核芯片时代内核开关频率固定负载电流变化相对单一只要避开了谐振点问题不大。多核就完全不同了CPU、GPU、NPU、DSP、DDR控制器各跑各的时钟频率不同任务负载不同瞬态电流的频谱变得非常宽。你在某一次测试里避开了35MHz换个负载组合噪声能量跑到60MHz去了那边可能正好蹲着另一个谐振峰。我自己遇到过最典型的场景CPU变频瞬间的大电流抽走会在低频段砸出一个很大的电压跌落GPU高负载运行时周期性的电流纹波会激励起中频段的封装谐振而NPU和DDR接口并发的随机翻转又会把高频毛刺引到敏感模拟域。噪声源头不再是一个主要开关电流而是一堆时间上重叠、频段上分散的电流脉冲。这种情况下如果PDN阻抗曲线到处是峰总有一个会被撞上。这就是为什么标题把多核多电源域单独拎出来——它不是把单核的问题重复几遍而是产生了一种全新的、必须从系统层面重新设计PDN的挑战。2. 多电源域的耦合路径噪声不会老老实实待在自己的地盘2.1 三条耦合路径公共阻抗、衬底、相邻走线多电源域的第一层麻烦是域与域之间的噪声串扰。很多人以为电压域分开了就干净实际上噪声照样能从三条路跑过去。第一条是公共阻抗耦合。多个电源域共用同一个封装基板层、同一组电源/地平面、同一排供电凸点哪怕它们在硅片上分得清清楚楚到了封装和板级回流电流还是会在地平面上汇合。某域的地电流波动会在公共地阻抗上产生压降直接变成另一个域看到的地弹。第二条是硅衬底耦合。同一颗芯片里内核域和模拟域做在同一块衬底上衬底不是绝缘体高频电流可以通过衬底电阻窜到模拟电路的地参考上。对PLL、ADC这类对噪声极敏感的模块这往往是致命的。第三条是相邻走线耦合。封装基板和PCB上不同电源域的走线之间、电源线与高速信号线之间都存在寄生电容和互感高频信号一跑能量就串过去了。2.2 分割平面与缝合电容切断回流不代表切断耦合为了抑制域间干扰最常见的做法是分割电源平面——一个域一块铜皮中间留隔离带。这个方法对直流和低频段有效但到了高频段分割槽本身会切断回流路径让电流绕远路反而增加了回路电感把谐振峰往低频方向推。所以现代设计里平面分割之后必须在分割线附近跨接缝合电容stitching capacitor。它的作用是在高频段给回流电流提供一个低阻抗的跨越通道否则回流电流只能绕着边界走绕出来的那圈大电感会变成新的噪声源。缝合电容的容值和数量不是随便定的一般取0.1µF到1µF的0603或0402沿着分割缝每隔一段距离放一颗具体密度取决于你允许的最大回流路径绕行电感。另外在硅片层面深N阱隔离和Guard Ring保护环也是常用的衬底噪声隔离手段。模拟域周围打一圈接地的保护环加宽隔离阱深度能把衬底耦合压低不少。代价是面积和设计复杂度所以通常只对PLL、SerDes这类高敏感模块使用。2.3 DVFS让谐振点“漂移”的麻烦多核芯片标配动态电压频率调节DVFS。电压和频率切换时负载电流的幅值和变化速率都在变激励频谱跟着变。今天跑低频省电模式电流变化慢低频段能量高明天跑高频性能模式dI/dt变大高频段能量显著增强。这就带来一个很要命的工程问题你谐振点没动但撞上它的激励变了。有些芯片在不同性能模式下噪声表现完全两样并不是设计有什么错纯粹是工作点不同导致的频谱重心移动。所以做PI验证时至少要在最高频、最低频和典型频率三个工作点上分别跑一次瞬态仿真只看一个工况就下结论回片后大概率会翻车。3. 目标阻抗与去耦网络PI设计的定量起点3.1 目标阻抗公式怎么用才不踩坑PI设计所有工作围绕一个核心数字展开目标阻抗Ztarget。在频域里它表示PDN在任意频率下允许呈现的最大阻抗。超过这个阻抗同样的瞬态电流就会产生超过允许范围的电压纹波。目标阻抗的经典粗算是Z_target (VDD × 允许纹波百分比) / I_transient举个例子VDD0.8V允许纹波3%即24mV瞬态电流变化量按60A算那Z_target 0.024 / 60 0.0004Ω也就是0.4mΩ。这个数字从DC一直到芯片需要关心的最高频率都必须守住。实际用的时候有三个坑。第一I_transient不是稳态电流而是最大瞬态变化量用平均值算出来会偏乐观。第二目标阻抗不是一条水平线低频段由电源模块的输出阻抗和Bulk电容决定高频段则由片内、封装去耦决定每一段的限值可以不同。第三现代芯片还要考虑多个端口同时抽流的情况单一端口的Ztarget算出来不够需要看阻抗矩阵。我通常的做法是先用粗算公式定一个全频段底限再根据功耗仿真给出的实际电流频谱在能量弱的频段适当放宽省下不必要的去耦成本。这个看谱放宽要靠经验也是PI设计和纯教科书计算拉开差距的地方。3.2 多级去耦的分频段策略PDN从片内到板级隔着好几层物理结构每一层都有自己擅长覆盖的频段。去耦设计的基本逻辑就是让每一层各管一段把整条阻抗曲线压到Ztarget以下。划分大致是这样的频段主要去耦手段典型容值对应物理位置DC-1MHz板级Bulk电容、电源模块输出电容几十µF到几千µF主板1MHz-10MHzMLCC陶瓷电容1µF-100µFPCB近封装区10MHz-100MHz小封装MLCC、封装基板埋容0.01µF-1µF封装基板、BGA附近100MHz片内去耦电容、硅电容、深沟槽电容几nF到几百nF芯片内部这个频段分配不是拍脑袋。低频段电流变化慢电容主要用来存电荷容值越大越好高频段电流变化极快电容要能在纳秒级时间内把电荷送到开关电路门口这时候决定响应速度的不是容值而是电容自身的串联电感和回路电感。一颗100µF的大电容因为封装太大、引脚太长自谐振频率可能只有几MHz到了100MHz它反而像个电感不但帮不上忙还添乱。所以高频段宁可要一堆100nF的小封装电容也不要几颗大电容。这就是为什么芯片周围会密密麻麻摆一圈0402甚至0201封装的MLCC每颗容值看着不起眼但自谐振频率高、回路电感小配合片内去耦才能压住上百MHz的谐振峰。3.3 反谐振峰多电容网络之间的“看不见的敌人”去耦电容数量堆够了阻抗曲线却可能冒出新的峰这就是反谐振。每颗电容都带寄生电感可以看成LC串联谐振器。两档电容的谐振频率不同比如说片内网络谐振在60MHz封装外接MLCC网络谐振在3MHz那么在这两个频率之间前一个电容已经变成感性后一个还没完全变成容性的频段两个网络的并联阻抗反而会冲出一个峰。反谐振峰的危害在于它常常不出现在你认真盯着的那几个频点而出现在两个去耦档位覆盖范围的交界处。很多仿真曲线乍看低频、高频都达标了仔细一扒中间某段悄悄顶超高正是反谐振在作怪。抑制手段有几个一是拉开相邻档位的谐振频率间隔每十倍频程一档互相重叠二是在峰点附近加装合适容值的吸收电容三是引入串联阻尼电阻牺牲一点点低频阻抗把峰的尖锐度磨平。第三种在做敏感模拟域时很常见因为阻尼电阻能把Q值打下来峰就不那么吓人了。3.4 一个双核SoC去耦预算的完整演算拿我之前经手的一个模拟项目举例某双核SoC核心域VDD 0.8V瞬态电流从20A跳到60A、变化时间2ns允许纹波24mV。先粗算目标阻抗0.4mΩ。再算需要多少片内去耦电容撑住2ns内的高速抽流C_die I × Δt / ΔV 60 × 2ns / 24mV 5µF5µF放在片内按逻辑工艺的MOS电容密度估算大概要占掉不小的有效面积而且栅氧电容漏电可观。实际我们只放了1.5µF片内decap剩下靠封装级和板级分摊。理由很简单片内decap覆盖的是百兆赫兹以上的极高频段2ns这个时间尺度其实已经落到封装/板级的中频段了。把过多面积砸在片内性价比很低。封装级我们放了两档电容一档是12颗100nF、0201封装靠近核心域对应的BGA区域另一档是4颗1µF、0402封装放在封装基板边缘。板级再放8颗22µF的大容量MLCC和2颗470µF的Bulk电容。仿真拉平之后10MHz以下的阻抗由板级压住10-100MHz由MLCC和封装电容压住100MHz以上交给片内decap和封装寄生电容整条曲线基本能贴着Ztarget走。这个分配的比例不是固定的。某个项目的功耗越集中、dI/dt越大片内占比就要往上提封装基板层数多、走线短外去耦的压力就小。每次都要拿实际功耗波形重新过一遍仿真别直接抄别家的配置。4. 芯片-封装-板级协同仿真从模型到曲线的完整链路4.1 三个层级的模型精度怎么取舍PI仿真要出靠谱结果建模必须覆盖芯片、封装、板级三层每一层的模型精度直接决定仿真可信度。芯片层通常用晶体管级或门级的去耦模型——片上所有的扩散电容、栅电容、金属寄生电容汇总成一个随频率变化的网络。这个模型不需要每个晶体管都建出来但decap的容值和等效串联电阻要准确否则谐振点算偏了后面全白做。封装层推荐直接用三维电磁场求解器提取S参数把凸点、走线、过孔、平面、焊接球的寄生都包括进来。板级则是电源模块输出阻抗模型加PCB走线和BGA封装区域的RL提取。这里有个人经验封装层的提取最花时间但最不能省。很多项目为了赶进度拿手算的RLC集总模型代替三维提取结果谐振峰位置偏出去二三十兆赫兹后面的时域仿真全部作废。我宁可多花两天把封装模型提细也不愿意回片后用两星期去查为什么实测跟仿真对不上。4.2 频域阻抗曲线怎么读看着Z(f)找问题频域仿真的输出是一条Z(f)曲线横轴频率、纵轴阻抗再画上Ztarget的门限线。合格的曲线整段埋在门限以下不合格的曲线会有若干个峰冒出来。拿到曲线先别急着调电容按顺序做三件事第一找第一个冒头的峰在哪个频段。低频峰多半是电源模块环路带宽不够或者Bulk电容ESR偏高中频峰大概率是板级MLCC与封装电感谐振高频峰基本是封装寄生与片内decap在打架。第二看峰的Q值。Q值高峰又尖又高说明回路损耗小可以考虑串阻尼电阻Q值低峰宽而矮说明损耗本身够缺的是容值或电感控制。第三对照芯片的实际电流频谱。峰落在有能量的频段必须处理峰虽然超标但对应频段完全没有电流激励可以留一点裕量后放过不过要有仿真数据支撑不能凭感觉放。4.3 时域瞬态仿真激励波形比求解器更重要频域曲线达标是必要条件但最终拍板还得靠时域瞬态仿真——直接把芯片各电源域的电流波形加载到PDN模型上算出真实的电压波动波形。经验告诉我这块最大的误差来源不是求解器而是激励。电流波形要从功耗仿真里拿常见来源是RTL级的功耗估计工具或者门级仿真里的翻转率toggle rate统计。最怕的就是拿一个平均电流当瞬态波形用那样算出来的电压跌落会严重偏小。真实电流波形要能体现负载跳变的瞬间变化率、时钟同步翻转产生的周期性电流峰、不同电源域之间的相位关系。我这边的标准做法是至少取三组波形一组最高负载跳变、一组最大dI/dt、一组不同域错相最严重。每组波形分别用于时域仿真看最坏情况下的电压包络有没有超过规格。三组都过才敢签PI设计完成。5. 工程落地中的权衡与避坑实录5.1 片内去耦电容面积、漏电与噪声的三角账片内去耦电容是最贵的去耦手段因为它直接消耗硅片面积。而且逻辑工艺里常见的MOS电容有栅极漏电静态功耗嗖嗖往上飙这对低功耗产品是硬伤。我见过一个项目为了压某高频谐振把片内decap翻了一倍结果漏电功耗多了三百毫瓦直接被产品经理打回来重做。更实际的做法是分类对待对漏电不敏感的标准单元区域多用普通MOS电容对低功耗待机域换用漏电极低的高密度电容或者深沟槽电容。另外片内decap位置也很有讲究贴着瞬态电流最大的宏单元摆比均匀撒在全芯片效果好得多因为电源网络在高频下的IR压降和回路电感是局部的。5.2 封装凸点与回流路径最短原则背后的物理封装设计里电源凸点的数量和位置直接决定PDN的回路电感。电流从板级进封装再到硅片走一个回路环路的面积越小电感就越低。把电源凸点和地凸点交错紧挨着放能让回流电流贴着供电电流走环路面积急剧缩小高频阻抗显著下降。这跟高频PCB设计里信号紧挨回流地是同一个道理。实操中要注意球珊阵列BGA的电源球位置和封装基板电源平面的开槽。有些封装为了布线方便把某几个电源域的地平面局部掏空结果那块区域的回路电感比别人高一倍谐振峰直接砸到敏感频段。这种问题仿真能查出来但要在封装设计早期就定好规则不然后面改版成本很高。5.3 板级电容的摆放与ESL陷阱板级电容有个经典误区只看容值不看封装带来的等效串联电感ESL。同一颗1µF电容0603封装和0402封装的自谐振频率能差出一倍多。高频去耦不要贪大容值要贪小封装、低ESL。摆放位置同样关键。电容离芯片电源引脚越远中间那段走线的寄生电感就越大高频去耦效果断崖式下跌。最理想的是电容放在芯片正面的BGA投影区内、尽量靠近电源过孔次之放在芯片四周最近的一圈最怕的是为了布线方便把去耦电容统一堆到PCB背面很远的地方。没有走线电感的小封装电容可能还不如一颗放得近的大电容。还有过孔的学问。电容两端的过孔要是共用一个回流过孔电感会叠加用双过孔甚至四过孔并联电感能降下来不少。这个细节在频域仿真里看得很清楚两条曲线一对比谐振峰高度差一截。5.4 一条可复用的PI自查清单做了几个项目之后我整理了一份PI设计自查清单每次都按它过踩雷概率低了很多每个电源域的目标阻抗线画出来了吗全频段都低于Ztarget吗有没有对拍反谐振峰相邻两档电容的谐振频率间隔是否合理片内decap的总量和漏电预算对齐了吗是否贴紧要害模块摆放封装凸点阵列里电源/地是否交错有没有地平面被开槽掏空板级去耦电容是靠近BGA还是堆在远处每颗电容的ESL考虑过吗DVFS的至少三组工作点都跑过瞬态仿真吗最坏电流波形是否覆盖多域之间的缝合电容数量、位置是否经过回流路径分析敏感性模块PLL、SerDes、ADC有没有做域间噪声耦合专项检查这八条看着朴素但每一条背后都有实际翻车案例。PI设计做到最后拼的不是会不会用软件而是有没有把物理规律吃透、在工程约束里做取舍。多核多电源域的谐振噪声问题本质上是对设计者系统观的一次考验——从硅片看到板级从频域看到时域从单一域看到跨域耦合每一步都扎实了回片后的惊喜就会少很多。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑