
一块六层板叠层打样回来上电后在稳定录像状态下测内核电压示波器读数比标称值低了一百多毫伏刚开始以为是电源芯片反馈电阻焊错查了一圈发现是PCB上那段从DCDC输出到SoC核心供电管脚的通路压降太大。这其实不是个例海思HI3516A这类多路视频编码SoC供电轨又多又密内核、DDR、各类IO、模拟域各走各的整棵电源树如果只靠人工核对原理图很难发现平面上那些“隐形的坑”。这篇就以我的实际板卡为例聊一下怎么用Cadence Sigrity把HI3516A的PCB电源树PowerTree自动提取出来并且在此基础上做压降和去耦优化。适合正在做视频板卡、嵌入式硬件、或者刚接触电源完整性仿真的工程师尤其是手里有Allegro和Sigrity工具但一直没系统跑通整个流程的人。1. 整体设计思路为什么非要把PowerTree单独拎出来做仿真1.1 HI3516A这类SoC电源树到底长什么样HI3516A的供电系统不是“一个5V进来三个稳压器输出”这么简单。实际板卡上通常有一颗主电源芯片作为核心DC-DC旁边还有几路低压差线性稳压器、负载开关、磁珠、0欧电阻用于分轨和滤波再往下才是芯片上不同功能的电源管脚组。每一路都对应不同的电压、电流和纹波要求。拿我当时板卡上的分配举例核心供电区域例如VCC_CORE按设计手册要求工作在1.1V左右瞬态电流经过评估接近1.8ADDR部分单独一路电压更低但电流不小还要考虑和主控的时序配合IO、MIPI、HDMI、模拟参考电压等又各自分出支路。把这些电源网络从输入接口一直追到芯片引脚就是一棵典型的电源树。问题在于PCB上每一条电源通路都会因为铜箔厚度、走线宽度、过孔数量、平面切割缝隙产生电阻。平时的原理图设计只关心“电压对不对、电流够不够”很少有人逐段核算过从DCDC输出到负载引脚之间到底损失了多少毫伏。仿真工具的价值就是把这件事量化而自动提取PowerTree是第一步也是最重要的一步。1.2 自动提取比“照着原理图手动画”强在哪Sigrity的PowerTree自动提取核心逻辑是根据版的网络连接关系、器件模型和电源器件类型自动识别出哪些是源、哪些是负载、哪些是去耦电容再把它们之间的拓扑关系画成树状结构。这个能力最直接的价值是省时间。一套六层板动辄几千个网络电源相关的网络也有几十个靠人工在原理图上一路一路找再去PCB Layout里手动建拓扑既痛苦又容易漏。尤其那种多路磁珠和0欧电阻分割的网络原理图上看着是一路实际上PCB板子上被平面切割分成好几个孤岛人工核对很容易忽略。自动提取还有一个容易被低估的好处可重复性。比如调整了Layout电源平面加宽了或者换了一个DCDC芯片只要重新跑一遍提取拓扑图就会自动更新。版本迭代过程中这种“一键刷新”的能力能让电源完整性检查跟着Layout走而不是等板子打样回来才发现问题。1.3 我这次项目里的整体流程一览完整流程大致分四步从Allegro PCB设计环境中把板卡数据送入Sigrity PowerDC或者通过ODB、IPC2581等格式导入在PowerDC里设置电源器件、负载器件和关键网络运行自动PowerTree提取对提取出的电源树做直流IR Drop仿真查看每条支路的压降分布、电流密度和热点根据仿真结果做优化调整铺铜宽度、过孔数量、去耦电容容值和位置、平面切割方式然后回归验证。整个过程并不需要把原理图和PCB搬到别的平台Allegro和Sigrity本身就是同一生态流程衔接很顺。后面我会把每一步的操作细节和容易踩的坑展开讲。2. PowerTree提取前的准备原理、参数和模型2.1 理解电源树模型里的三类节点PowerTree看似复杂拆开看其实就三类节点源、通路、负载。源是供电的起点通常是DC-DC转换器的输出、LDO的输出、电源输入端口的连接器焊盘。通路是源与负载之间的所有导电连接包括走线、铜皮、过孔、磁珠、0欧电阻。负载是真正消耗电流的地方在电源完整性仿真里负载的模型决定了抽取电流的分布方式和瞬态响应特征。HI3516A这类芯片内部有多个电源域在仿真模型里通常会被拆成多个负载节点。这时不能只看芯片整体的“总电流”还要按手册上各电源域的最大电流去设置。我见过有人图省事直接给整个网络设一个2A电流源挂在芯片中心结果仿真出来的压降云图完全失真因为实际电流是从几十个管脚流进芯片内部的管脚的位置和数量直接影响平面上的电流路径。2.2 提取前的三个基础输入网表、叠层和器件模型网表决定了网络连接关系叠层决定了铜厚和介质参数器件模型决定了源和负载的行为。三者缺一个自动提取结果都会有偏差。叠层参数最容易忽略。很多板厂给出的叠层表里铜箔厚度默认是1oz35微米或0.5oz但内层经过电镀补偿后实际厚度可能略有差异。做IR Drop仿真时铜厚直接决定方块电阻差20%就足以让压降仿真结果偏离真实值。我每次新建仿真工程的第一件事就是把PCB叠层参数从板厂确认回来再填进PowerDC的叠层设置里。器件模型方面Sigrity对VRM模型和负载模型都有专门的定义方式。VRM模型如果缺失工具会默认把它当成理想电压源这会在一定程度上低估源端电压跌落。负载模型如果缺失工具会按纯电阻或者恒定电流处理静态IR Drop还能看个大概动态仿真就没有意义了。所以模型路径要提前设好别等提取完了才发现芯片模型全是默认值。2.3 目标阻抗怎么算以内核1.1V供电为例优化电源树不能只看“压降低不低”还要看电源阻抗是否满足动态需求。目标阻抗是一个绕不开的指标。目标阻抗的计算公式不复杂Ztarget ΔV允许值 / ΔI瞬态变化量。ΔV允许值通常取电源纹波规范的一半ΔI瞬态变化量取负载电流阶跃的一部分具体数值要看真实工作状态。我当时用的HI3516A内核供电是1.1V按设计规范允许2.5%的纹波也就是27.5mV。假设瞬态切换时电流变化量折合下来大约是0.9A这是一个示意值实际项目里要以芯片手册和实测波形为准那么目标阻抗就是Ztarget 27.5mV / 0.9A ≈ 30.6毫欧这个数字意味着在感兴趣的频段内从电源模块输出端到芯片核心管脚整个电源分配网络等效阻抗至少要压到30毫欧以下。IR Drop优化只解决直流部分的30毫欧预算动态部分还要靠去耦电容把高频阻抗压下来。2.4 去耦电容的频段分工一个大水桶和一堆小水杯去耦电容为什么不能只靠一个大电容应付原因在于电容本身有等效串联电感和等效串联电阻。一个100uF的大容量电解电容虽然“蓄水”能力强但ESL往往有几十纳亨高频下阻抗反而升高。小容值的MLCC比如0.1uF容量不大但封装小、ESL低在高频段更有效。打个比方大容量电容像厂里的蓄水池解决的是长时间、大范围的供水波动小容值MLCC像每个工位身边的水杯解决的是瞬间渴了但水龙头还没送到水的那几毫秒。PCB电源完整性设计必须把两者配合使用。从频段上讲1MHz以下主要靠大容量的体电容和电源模块本身控制1MHz到十几MHz靠4.7uF、1uF这类MLCC十几MHz以上的高频分量则由0.1uF、0.01uF小电容以及电源平面的分布电容来吸收。这也是为什么目标阻抗曲线会在不同频段出现不同的“台阶”每个台阶对应一层去耦方案。3. 实操记录从Allegro到PowerDC的完整实现3.1 工程数据整理和导入的细节开始之前先确认Allegro的数据库完整。电源地网络必须正确赋予电源属性也就是在设计规则管理器里把VCC、VDD这类网络设为电源网络把GND设为地网络。这一步如果不做PowerDC自动识别时会把普通信号线也拿来当作电源通路提取出来的PowerTree会非常混乱。导入方式我常用两种一种是在Allegro PCB Editor里直接选择PowerDC菜单软件会自动把当前板卡数据同步过去是最顺的方式。另一种是导出ODB格式再导入Sigrity适合跨团队协作或者需要脱机处理的场景。注意导出时一定要把层叠信息和钻孔数据一起带上否则后面仿真时过孔参数会缺。导入之后第一个动作是检查叠层设置。我习惯把板厂给的叠层表截图放在旁边逐层核对介质厚度、铜厚、正负片属性。正负片属性特别关键负片层在仿真里如果设置不对平面完整性分析结果会差很多。3.2 PowerTree自动提取的具体步骤在PowerDC里做自动提取登台操作大概是打开PowerDC加载板卡数据在“Power Integrity”相关设置里把DCDC输出网络、LDO输出网络标记为电源源把HI3516A芯片以及DDR、EMMC等耗电器件标记为负载设置陶瓷电容和极性电容的模型库路径确保去耦电容被正确识别运行PowerTree提取生成整个电源树拓扑。生成之后重点关注树的主干和关键支路是否和原理图一致。比如DCDC_U1的输出0.9V网络从芯片输出脚出来之后经过一个0欧电阻分成两路一路进主控一路给DDR端接电源。自动提取通常会把0欧电阻识别成连接元件在树上显示成一个节点。如果这里没显示出来说明0欧电阻的类型定义有问题需要去元件模型里改成“resistor”或者“zero ohm link”。3.3 IR Drop仿真从全局到局部定位压降瓶颈PowerTree验证没问题之后我习惯先跑一版全板直流IR Drop。这个是快速摸底。仿真的基本设置是每个源按数据手册给出的典型输出电压设置每个负载按设想的典型工作电流设置器件的管脚寄生参数先用默认值。跑完之后第一眼看的是各电源网络的压降云图。重点关注DCDC输出端到SoC管脚之间的电压差如果某个网络的颜色从源端的深色到负载端出现明显梯度说明这条支路的电阻偏大。实际项目里我当时遇到的问题是HI3516A核心电源网络有一处窄铜皮。从DCDC输出到芯片核心供电管脚平面上有一个地方要穿过密集的BGA区域铜皮被严重“挤压”从2mm宽变成了0.5mm这段铜皮的电阻占了整条通路电阻的三分之一。云图上还能看到过孔周围有明显的电压阶梯说明过孔数量也不够。确定瓶颈之后做优化就有依据了。把那段窄铜皮改成完整平面同时在瓶颈处多打两排过孔重新跑一遍仿真压降立刻由原先的160mV降到70mV左右。后来又调整了去耦电容的摆放位置把大容量MLCC往负载端靠动态阻抗曲线也明显改善。3.4 基于仿真结果的去耦和平面优化策略优化并没有固定套路但有三个方向值得优先考虑第一是平面完整性和电流通道。如果仿真显示某段铜皮电流密度超标优先加宽铜皮或增加铺铜层数不要一上来就加电容。电容解决不了直流电阻问题IR Drop是“道路太窄”的问题得先修路。第二是过孔阵列。过孔是电流从表层到内层之间的“立交桥”单个过孔电阻很小但并联数量不够时桥就变成了卡口。一般我会在电源入口、去耦电容地脚、负载热区附近预留成对的电源过孔和地过孔。仿真云图上如果出现过孔位置的压降突变就说明这里的过孔数量或排列方式需要调整。第三是去耦电容的容值和放置。电容离负载引脚越近回路上寄生电感越小效果越好。当时我把0.1uF电容从芯片外围挪到BGA引脚背面目标阻抗的最高峰就下降了约12%。这个幅度听起来不大但对动态电流大的内核供电来说可能就是稳定性和偶发花屏之间的区别。优化完不能只看单点数据必须做回归仿真。回归的意义是确认改动没有引入新问题比如把某个网络的铜皮加宽后旁边的地平面被切得更碎导致另一个网络的回流路径变差。这种“按下葫芦浮起瓢”的情况在多层板优化里太常见了。4. 常见问题与排查技巧实录4.1 PowerTree提取出来是“乱树”或“断链”怎么办提取结果最常见的问题是树断了某个负载找不到自己的源或者两个电源网络被错误识别成短路。这个问题的根源通常是网络属性设置。排查优先级建议从高到低一是检查漏标了电源网络信号网络属性没改成电源工具不认为它是供电通路二是检查0欧电阻和磁珠是否被识别成“连接件”如果被当成普通电阻IR Drop会错误地在这一段产生巨大压降三是检查原理图中用网络标签连接、但实际PCB上没有铜连接的电源工具不会帮你补上不存在的物理连接。“断链”还有一种隐蔽情况电源平面在BGA区域被大量散热焊盘或隔离孔切开物理上已经成了孤岛但网络名没变原理图看不出来。这种问题恰好是自动提取和IR Drop仿真的强项仿真结果里那个孤岛上的负载电压会明显偏低一眼就能圈出来。4.2 器件模型缺失时的降级方案模型缺失是家常便饭尤其芯片模型不是每个项目都能从原厂拿到。拿不到HI3516A的IBIS或专用电源完整性模型时退而求其次的办法是把芯片按“恒定电流源”处理电流值取自手册上的典型功耗除以电压。这个降级方案做静态IR Drop偏保守结果偏离程度通常在可接受范围内但动态分析就别指望了。另一个办法是参考同系列芯片的模型迁移过来比如用其他海思芯片的电源模型改管脚名和功耗值至少能把去耦电容的谐振特性模拟个大概。迁移模型有个前提管脚封装寄生参数要重新核对不能直接沿用原芯片的全部寄生参数。4.3 仿真不收敛或者结果明显偏离实测不收敛的常见原因有三类叠层设置里正负片属性错误、电压源设置了反向极性、网格划分在关键区域过疏。前两个查起来相对容易第三个需要经验。网格和结果精度是个矛盾。整板全用极限细网格仿真时间会爆炸但关键区域网格太粗电流密度就会平均化看不出局部热点。我的做法是先用默认网格跑一遍锁定热点区域后再对热点区域做局部细网格加密这样既快又不影响精度。结果明显偏离实测排除网格原因后十有八九是源端模型或者负载电流值给得不对。尤其是DCDC的输出电压模型里默认值经常是理想值没有算上反馈点采样位置的影响。反馈采样线如果接在负载端那板上的直流压降会被电源自身补偿掉一部分仿真结果要比实际更差才对得上。遇到这类问题先回头核对源的模型定义和负载的电流分布。4.4 常见问题速查表问题现象可能原因处理建议PowerTree出现一堆孤立节点电源网络未正确标记在规则管理器中将电源/地网络属性改为电源网络0欧电阻或磁珠在树上变成“大电阻”元件类型被识别为普通电阻在器件模型中指定为连接件/零欧链接某负载区域压降低于周边平面被BGA/过孔切割成孤岛优化平面的连续性和过孔布置仿真不收敛正负片属性设错或网格过疏核对叠层正负片局部加密网格直流压降仿真合格但板上实测偏低反馈采样点位置影响电源补偿确认VRM反馈网络位置调整仿真源设置高频纹波超标去耦电容数量不足或放置过远增加小容值MLCC尽量靠近负载管脚4.5 一个容易被忽略的坑回流路径电源树仿真做到后面很容易只盯着电源平面看把地平面忽略了。实际上电源网络的IR Drop和地网络的IR Drop是一对孪生兄弟。负载实际承受的电压是电源网络压降与地网络压降之差地平面太碎电源做得再好也没用。所以优化完电源网络务必把地网络也拉出来看一眼。我当时板卡上有一个地平面被螺丝孔和隔离带切得比较碎仿真显示地网络在芯片附近有约40mV的压降直接把本来合格的电源裕量吃掉了。后来在芯片周围补了更多接地过孔又优化了螺丝孔附近的禁止布线区域地压降才降下来。5. 最后一点个人体会把整个项目跑下来我的一个强烈感受是Sigrity的PowerTree自动提取只是开始真正的价值在于它把“供电关系”从抽象的电路图变成了可以量化的物理模型。以前评审PCB大家凭经验互相“感觉哪里会有问题”现在可以直接指着云图说这里铜皮窄了那里缺过孔。另一个心得是自动提取不等于完全不用管。工具给出的拓扑还是要花十分钟人工核对一遍尤其是芯片的多组电源域原理图上分了VCC_CORE、VCC_DDR、VCC_IO工具能不能准确对应到负载模型直接决定后面仿真的可信度。还是那句话电源完整性仿真是用来缩小风险范围的不是用来替代实测的。仿真通过之后板子回来该测的还是要测但至少带着问题去测总比板子回来一脸懵地拿热风枪拆了装、装了拆要靠谱得多。