ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

SIWave电源完整性仿真实战:从直流压降到去耦电容优化

SIWave电源完整性仿真实战:从直流压降到去耦电容优化 板子贴片回来那天我用示波器去量DDR4的VDDQ纹波直接干到了100mV。按标称1.2V正负5%的规格上限是60mV这板子等于白打了。那一刻我意识到PDN设计不能等到板子回来再验证必须在Layout阶段就用SIWave把电源完整性仿真跑透。所以我今天想把这套东西完整写下来。这不是那种点几个按钮出张图的教程而是把我踩过的坑、填过的参数、反复试过的优化手法全部串起来从数据准备到直流压降、交流阻抗、去耦电容优化一直到常见的模型陷阱一条线走完。适合正在做PCB Layout、硬件调试或者刚接触电源完整性但不知道从哪下手的工程师参考。SIWave本质上不是一个仿真软件而是一个PDN体检中心。它把VRM、电源平面、去耦电容、过孔、芯片封装当成一套完整的供水系统来建模然后告诉你哪个楼层水压不够、哪根管道太细会发热、水箱放在哪里最合适。搞懂它的工作逻辑比学会按钮位置重要一万倍。1. 先弄清楚SIWave到底在仿什么——一次PDN设错的血泪教训1.1 PDN的本质一座城里的供水系统我习惯把PDNPower Distribution Network电源分配网络比作城市供水系统。VRM就是自来水厂电源平面和走线是市政管道去耦电容是每栋楼顶上的水箱芯片引脚就是每家每户的水龙头。问题是电流需求是瞬变的。CPU从空闲到满载电流可能在纳秒级内跳变几个安培。这时候你不能指望自来水厂VRM把压力隔空传过来——VRM的响应速度有物理极限环路电感和电容延迟决定了几十纳秒内它基本帮不上忙。真正扛住瞬态电流的是离芯片最近的那些去耦电容也就是楼顶水箱。SIWave干的事就是把这个系统完整建模水管粗细铜箔厚度和宽度、水箱数量和位置电容、水厂位置VRM、水龙头开多大芯片电流负载全部放进去然后仿真不同频率下的阻抗特性和直流压降分布。这一步如果不做等板子焊好再去量纹波发现问题只能加电容、飞线、甚至是重新改板成本直接翻好几倍。我之前接手过一个项目原设计者图省事把10uF电容全放在板边芯片引脚附近一个去耦没有。SIWave跑完交流阻抗目标频率3MHz处阻抗峰值飙到87mΩ目标阻抗是30mΩ超标接近3倍。实际测出来的纹波和仿真几乎吻合——78mV。这就是没做电源完整性仿真的代价一版板子的钱就这么烧掉了。1.2 SIWave能做什么不能做什么先说能力的边界。SIWave主要覆盖三种分析直流分析IR Drop看稳态压降分布、电流密度、热点位置评估铜箔和过孔是否够用。交流分析Impedance Profile S参数看PDN随频率变化的阻抗曲线找出超过目标阻抗的谐振峰评估去耦电容布局是否合理。也可以提取S参数给信号完整性仿真用。谐振模式分析Resonant Analysis找电源平面间因驻波效应产生的谐振频率点一般配合电容放置来抑制。它不擅长的是时域瞬态仿真例如完整系统级EMI辐射。时域纹波波形更适合用SPICE或CST等工具联合仿真。SIWave是频率域体检先把PDN的阻抗属性理清楚再去其他工具看瞬态响应这是我推荐的流程。另外要说清楚SIWave的仿真精度取决于你喂给它的模型。叠层参数不准、电容ESL模型拉胯、VRM用理想源代替出来的曲线就只能仅供参考。很多时候仿真和实测对不上不是SIWave不行是输入模型不行。2. 仿真前的数据准备叠层、VRM、电容和电流负载一个都不能少常用的电源完整性方程式有两个贯穿整个仿真过程目标阻抗公式Ztarget (V × Ripple%) / ΔI谐振公式f 1 / (2π√(LC))无论你是做直流压降还是交流阻抗本质上都是在围绕这两个公式转。但是公式好背数据难凑。数据是仿真里价值最高的部分我花在整理数据上的时间通常比仿真本身还多。2.1 必查的数据清单和来源动手之前我会把下面这张表填完整缺一项都可能让仿真失真数据项来源用途容易忽略的坑叠层文件板厂/EDA工程师铜厚、介质厚度、介电常数决定回路电感和平面电容介质厚度写的是压合后还是压合前差很多VRM输出模型电源模块厂商手册定义低频源阻抗和响应边界偷懒用理想电压源会低估低频峰电容BOM及模型物料库/厂商规格书容值、耐压、ESR、ESL中频段阻抗特性相同容值不同封装ESL差异能到5倍以上芯片电流需求芯片数据手册/Power Model直流压降和瞬态纹波目标用平均电流代替最大瞬态结果偏乐观电源网络映射原理图确定哪些网络是电源、哪些是地电源网络命名不一致SIWave导入后网络识别失败叠层这块我要多说一句。SIWave是从Gerber或ODB这些导入物理版图的之后叠层管理器里填的介质厚度、铜厚、介电常数直接决定RLGC参数的计算结果。低频时这影响不大但到了几十上百MHz平面间回路电感主要靠介质厚度决定填错了整条阻抗曲线都会偏移。2.2 目标阻抗是怎么算出来的目标阻抗不是拍脑袋定的常见做法是先看芯片手册对电源轨的要求。举个例子一颗FPGA内核电压0.9V额定电流6A最大瞬态变化ΔI3A允许纹波3%。代进公式Ztarget 0.9 × 3% / 3 0.9 × 0.03 / 3 9 mΩ这个9mΩ就是整条PDN从VRM到芯片引脚在目标带宽内的阻抗上限。如果布局合理、电容充足就能保证3A电流突变时压降不超过27mV。值得注意的细节是ΔI怎么取。不少工程师直接用最大电流减去最小电流算出来的结果偏保守要求更苛刻。如果你的系统有动态电源管理、负载切换场景我建议用最坏情况瞬态电流变化量也就是从低功耗跳到满载的差值。如果拿不准宁可取大一点目标阻抗算下来低一些后续设计余量也大一些。2.3 文件格式ANF还是ODBSIWave支持好几种导入格式我用得最多的两种ANFAnsoft Neutral File从HFSS、Designer或SIWave自身导出的中性格式包含完整的版图几何、网络、端口和叠层信息。第三方EDA工具也有插件可以导出。ODB / IPC-2581PCB行业标准格式比Gerber多保留了网络连接信息兼容性最好。如果只有Gerber我建议先找EDA工程师把ODB导出来或者至少把叠层文件整理齐。纯Gerber导入的话没有网络连接信息全得靠人工映射网络费时费神还容易出错。3. SIWave建项目与模型检查的完整流程3.1 从导入到网络检查一步步走先交代一下我的环境Ansys Electronics Desktop 2023 R2SIWave界面。国内不少公司还在用老版本EDB或者HFSS 18菜单位置会有点差别但逻辑基本一致。第一步启动Electronics Desktop新建项目后在Project菜单里选Insert PI或者直接点SIWave图标。第二步导入版图。在SIWave主界面选导入文件类型选ODB路径选择解压后的文件夹。单位统一用毫米导入时选。第三步设置叠层。导入完成后进入Layer Stack设置逐层核对铜厚1oz35um还是2oz70um、介质材料、介电常数FR4常规4.2~4.4、介质厚度。很多项目的数据手册不会直接给Dk值只有板材型号这里要用板厂压合叠层书的参数填别靠猜。第四步网络映射。这是最考验耐心的一步。把原理图里的电源地网络名和版图网络对起来。如果ODB里有完整网络信息这一步半自动完成如果是Gerber导入就得一个一个手动指定。我习惯把所有电源网络名列一个Excel表导入后逐项核对尤其是不同名字代表同一物理网络的情况比如VCC和3V3可能是同一根铜皮在不同层上的不同命名。3.2 模型完整性自查三分钟排除低级错误导入完成后千万别急着仿真。我吃过大亏模型里一条3cm的走线没保留铜仿真结果直接废掉。现在我会用三分钟做一次自查3D视图扫一遍切到3D战国视图看铜皮、过孔、焊盘是否都在。铜皮缺一块或者过孔乱飞视觉上很容易看出来。网络统计核对在模型管理里看网络数量和名称和原理图对一遍少一个就查。特别是GND网络经常被自动命名成GND1、GND2。叠层完整性确认所有信号层和电源层都有对应的介质和铜厚数据没用的层也不能空着会算成空气间隙影响回路电感。检查完保存项目路径不要有中文和特殊符号这能省掉一堆玄学问题。3.3 SIWave仿真的两类设置路径SIWave主界面经常有两个入口一个是DC IR Drop分析一个是AC Impedance。各自有独立的求解设置和后处理。这两个分析不能在一个求解中同时跑完建议分别保存项目版本或者用Project Variants来管理。顺便提一句如果你是想做电源/地平面谐振分析可以在Edit菜单下的Excitation里选Sources然后跑Resonant Analysis出来的结果会显示哪些频率在平面边缘电压最大。这个是进阶玩法本文先不展开先打好直流和交流两块基础。4. 直流压降仿真从设置到判定目标的实操4.1 设置VRM别把电源端口当摆设直流分析的第一步是给每个电源网络指定VRM。操作路径Assign Excitation - Voltage Regulator然后选择VRM的Source电源输出引脚对应的过孔或焊盘和Sink负载端需要供电的引脚。这里有一个最常见的坑Source和Sink不能只选一侧。SIWave需要知道电流从哪进、从哪出才能建立完整回路。Source指向VRM输出Sink指向芯片的电源引脚和地引脚对两边都选齐。在VRM设置面板里需要填写空载电压No Load Voltage和负载调节范围Load Regulation。比如一个标称0.9V、调节精度±1%的VRM空载电压写0.909V负载范围内压降约0.009V。如果你的VRM手册没给具体调节范围可以先按空载电压标称电压1%后续再修正。4.2 电流负载用数据手册的硬数据直流仿真需要知道每个电源引脚抽多少电流。操作路径Assign Excitation - Electronic Current Source然后逐个选择芯片的电源引脚输入对应电流值。这里交个底一颗BGA芯片几十上百个电源引脚一个个填会疯掉。实际做法是打开芯片厂商提供的Power Model通常是Excel或XML格式里面会给出每个电压域的总电流和引脚分布。如果只有功耗和电压那电流就是P/V。比如内核功耗4W、电压1.0V总电流就是4A。把这4A按引脚数量均匀分配下去先跑一版后面再按热分布细化。4.3 求解和后处理压降、电流密度、热点一网打尽设置完成后选择DC IR Drop分析频率设为0Hz纯直流运行求解。求解完成后进入后处理界面SIWave会默认显示电压分布图。此时我会做三件事看压降量级用Report里的Set Plot Range把色标上下限锁在目标范围。比如0.9V电源想看谁低于0.873V0.9-3%就把色标下限锁在0.873V低于这个值的地方会变成警示色。如果不锁量程SIWave会自动拉伸色标0.89V和0.899V可能显示成同一个颜色视觉上没有压降。看电流密度切换显示电流密度J重点关注从VRM电源平面进入芯片区域的路径。红色高亮区域意味着铜箔电流密度超标典型阈值可以参考外层铜箔一般不超过30A/mm²内层减半。超过就要加宽铜皮、增加过孔数量或者换2oz铜。看热点温度如果做了电热耦合还可以看温升图。这个需要额外材料属性和边界条件前期不需要开。判定标准不是最差电压接近目标就完事我一般要求最差压降位置预留20%以上的余量。举个例子芯片最低工作电压0.873V仿真出来最差节点0.880V只余下7mV这并不安全。因为温度变化、批量生产、老化等因素都会让实际压降更差留20%余量是标准做法。4.4 直流仿真的一个真实判定案例之前做一款网关设备DDR4 VDDQ 1.2V芯片允许纹波5%也就是60mV目标最低电压1.14V。仿真跑完最差压降出现在内存颗粒远端角落1.158V余量18mV。看着是过了但电流密度图显示从VRM到内存颗粒的一段1.5mm宽走线电流密度高达22A/mm²我要求的是15A/mm²以下。后来在下一版Layout里把这段走线拓宽到2.5mm增加一排0.5mm过孔换层再仿真压降直接降到1.172V电流密度降到12A/mm²。这个改动放在第一版能省掉一版工程费。这就是直流仿真的价值不是算一个过或不过而是找出所有可能成为瓶颈的部位在物理上把钱花在正确的地方。5. 交流阻抗仿真找准目标阻抗的四个步骤5.1 为什么要看Z(f)而不是只看纹波直流压降看的是稳态但电源完整性真正让人头疼的是瞬态。芯片电流突变的时候PDN的寄生电感会产生电压降这个降落的幅度取决于PDN阻抗ΔV ΔI × Z。但是PDN阻抗不是常数它是频率的函数。电容在低频时阻抗很高高频时走线电感阻抗上升中间某个频段可能出现谐振尖峰。交流仿真的目标就一句话在目标频段范围内保证PDN阻抗处处不超过目标阻抗Ztarget。所以第一步还是算Ztarget。用DDR4的1.2V、5%纹波、ΔI2A来算Ztarget 1.2 × 0.05 / 2 30mΩ。有了这条线下面的仿真和优化就有了锚点。5.2 设置VRM交流模型和电流源和直流不同交流分析里VRM的模型很关键。不能只给一个理想电压源那样求解出的低频阻抗会是个多余的0完全失真。我在交流仿真里给VRM的设置是电压源1V理想源串联电阻1mΩ串联电感0.5nH~1nH这个串联阻抗用来模拟VRM的输出阻抗和反馈环路响应带宽。实际VRM的闭环输出阻抗在几千赫兹以下是毫欧级别到几十千赫兹以后开始上升模型里的一小段电感就能很好体现这个趋势。电流负载的设置和直流类似但激励类型要选AC幅值随便给1A就行。因为Z(f)本身就是阻抗跟电流源幅值无关给1A只是为了归一化计算。5.3 频率扫描范围和求解器选择频率范围怎么划我习惯从10kHz扫到100MHz。低频到10kHz以下主要由VRM决定通常不会出问题100MHz以上主要由封装和模具决定SIWave的平面建模精度也会下降。如果有特殊情况比如时钟在200MHz附近的电源抖动问题可以适当延展到500MHz但要注意封装模型精度。每个decade的采样点数设40到60个点太疏会把谐振峰漏掉太密求解时间不成比例地增加。求解器选Impedance ProfileSIWave默认使用频域直接求解它会把所有电源网络都跑一遍输出每条电源网络的Zcurve。5.4 如何看懂Z(f)曲线跑完之后后处理里会看到多个曲线每个电源网络一条横轴是频率纵轴是阻抗还有一条目标阻抗水平线Ztarget。我们来拆解一条典型的阻抗曲线低频段10kHz以下曲线平稳且很低这是VRM的功劳。如果此段就高于目标线说明VRM模型或远端电容不足。中频段10kHz~几MHz曲线先上升后出现尖峰这些尖峰就是谐振峰包括体电容的ESL谐振、电容和平面电容的反谐振等。峰值超过目标线就说明该频段去耦不足。高频段几十MHz以上曲线主要由回路电感和芯片封装决定通常单调上升。如果这里超标加电容已经不太管用得优化电源/地平面间距或过孔布局。判断标准很简单曲线任何一处超过Ztarget线就需要优化。我之前做过一块FPGA板5V电源在2MHz出有一个45mΩ的峰目标线30mΩ。实际测试时这个电源轨在FPGA动态配置时纹波到达74mV远超5%规格。后来加了两颗330uF的聚合物钽电容在负载附近2MHz峰降到22mΩ纹波回到36mV。整个过程仿真和实测的吻合度在15%以内这是交流仿真最让人放心的时刻。6. 去耦电容优化让阻抗峰降下来的真正做法6.1 从仿真反推电容数量和位置阻抗峰超标之后不是随便加电容就行。我会按照一个固定的流程来做去耦电容优化先确定缺口频段在Z(f)曲线上看哪个频段超过Ztarget比如10MHz处的峰。算单个电容的谐振频率选择一个小容值、低ESL的电容它的自谐振频率SRF1/(2π√(LC))。比如100nF电容ESL约0.4nHSRF约25MHz。如果目标频段是10MHz选100nF就太偏了更适合选1uFSRF约8MHz。估算所需数量和布局在缺口频段目标是让该频段的总阻抗降到Ztarget的一半以下留出裕量。单个电容在该频段的阻抗值Zc需要的并联数量就是Zc/Ztarget再乘2。仿真迭代加完电容后重新跑Z(f)看峰是降了还是只是平移。峰值降低后再盯着有没有新产生的反谐振峰。SIWave里加电容有两种方式一种是在Layout文件里直接放置电容器件在版图模式下手动放封装、赋容值一种是在Designer里通过Netlist文件虚拟添加。我建议前期用虚拟添加先算清楚容值和数量最后再回头在Layout里落地。6.2 布局位置的优先级排序电容放在哪比放多少个更重要因为过孔电感和走线电感决定了高频段的实际去耦效果。我执行的位置优先级是这样的芯片电源引脚的正下方距离小于30mil过孔直接连到电容焊盘。这部分电容负责最高频段的去耦。芯片封装边缘向外0.5cm范围第二圈负责中高频段。电源平面边缘或分割区域边缘用于平面谐振抑制位置需要结合谐振模式仿真。板边或负载远端体电容负责低频段距离要求不高。优先级1和2做好高频段阻抗基本就稳了。优先级4做得再好也不可能弥补高频段的缺口。6.3 反谐振峰的识别和处理多级电容并联时有个典型的反谐振现象大电容和小电容并联各自有谐振频率两个谐振峰之间的交叉点会因为并联LC谐振出现一个阻抗尖峰——反谐振峰。处理思路很简单不让两个电容的谐振频率太接近用不同数量级的容值拉开距离。比如10uFSRF约1MHz和100nFSRF约25MHz之间中间加一颗1uFSRF约8MHz做过渡反谐振峰高度能压下去不少。SIWave的阻抗曲线上反谐振峰会很明显地突出在目标线之上比如之前做过的2.2mΩ目标线电源加了10uF和100nF各若干后1MHz处出现9mΩ的尖峰。后来在中间补了5颗1uF尖峰降到4mΩ再用0.1uF的小电容在高频段压了一道全频段才稳定低于目标。这段过程听起来简单实际迭代了七八轮每一轮都要重新跑一遍Impedance Profile。这就是为什么我强烈建议先虚拟加电容做参数扫描而不是每次都在Layout里实际摆放——省下的时间不是一点半点。7. 我也曾踩过的坑文件格式、模型精度和迭代效率7.1 叠层单位错误导致的假超标有次仿真结果疯狂超标低频段阻抗直接高出两个数量级。查了一圈最后发现叠层介质厚度填的是mil但实际上叠层书给的是um一英寸25.4倍的偏差直接把平面间电容算小了一大截。从那以后我导入叠层后干的第一件事就是抽查一层拿已知的板厚数据反算一遍。比如整板1.6mm、8层板介质厚度叠加总和约等于1.6mm减去铜厚总和差太多就说明哪里填错了。这个检查花不了1分钟但能避免后面的所有分析全部白做。7.2 电容模型用厂商模型不要自己造很多工程师喜欢用理想电容模型纯容值去做仿真出来的曲线和实测差得离谱。真实电容在高频下受ESR、ESL主导尤其是0402以下的小封装ESL量级直接决定SRF位置。现在主流的电容厂商比如Murata和TDK都提供准确的SPICE/IBIS模型里面包含完整的寄生参数。SIWave也内置了Ansys元件库可以直接搜料号拉取模型精度比手动填ESR/ESL好得多。如果手头没有厂商模型我会按经验值设定0402的ESL约0.4nH0603约0.6nH0805约1nH。ESR看规格书给的DCR和谐振阻抗没有就按1mΩ先填后续用实测校准。7.3 迭代速度把参数扫描玩明白去耦电容优化本质上是参数扫描。SIWave支持的参数化方式是在电容对象上把容值、ESL、ESR设成变量然后设置扫描范围一次性跑完所有组合提取目标频段的阻抗峰值。举个例子我把10uF电容的ESL设成变量从0.5nH扫到1.5nH5个变量值每个全仿真跑一遍最后对比不同ESL下1MHz阻抗峰值。找到最优区间再反过来指导选型。这种思路比加几颗再看一眼曲线效率高一个量级。另外做优化前用简化模型先跑通流程再替换成全精度模型。SIWave提供模型简化选项可以先忽略部分高频效应跑一个大致的趋势确认方案可行后再开完整仿真。时间紧张的时候这个习惯能救急。7.4 实测结果对不上仿真时的排查顺序仿真和实测总会有差距但如果差距明显超过15%我按下面的顺序排查实测点位置是否对应仿真端口示波器探头夹在芯片引脚上还是夹在去耦电容上结果显著不同。要在仿真里找到对应的参考点。电容是否全部贴装检查BOM里有没有省料尤其是0402小电容贴片时容易漏贴或者贴错位置。VRM实际输出阻抗拿频谱分析仪测一下实际VRM环路阻抗和模型里的1mΩ0.5nH对比。很多反馈环路设计不好的VRM低频阻抗能高出好几倍。过孔背钻/残桩高速场景下过孔残桩会对高频段阻抗造成明显影响。按这个顺序排查绝大多数对不上的情况都能定位到模型边界条件或者测试方法本身的问题。8. 结语仿真不是终点而是设计决策的起点最后说一点个人体会。SIWave的仿真结果再漂亮也不能替代示波器上的最终验证。它真正厉害的地方是让你在画板子的阶段就知道该把电容放在哪里、铜皮加多宽、过孔打多少而不是等板子回来才在实验室里手忙脚乱。我现在做项目的习惯是布局定稿前必跑一轮IR Drop找瓶颈电容方案定了必跑一轮Impedance Profile看余量改版时只看仿真对比报告快速定位变化是否引入新的电源隐患。如果让我只留一个建议给你那就是第一次用SIWave跑项目时别求全把一路电源轨的直流和交流跑通、把结果和实测对一遍建立你自己的仿真口径和安全裕量经验值。这比你套用任何教程里的参数都更有价值。后面你每做一个新产品这套经验会变成你最可靠的底牌。
返回列表