
拿到HI3516A这块板子我做的第一件事不是急着开软件而是把电源树先捋了一遍。Cadence Sigrity Power DC这个工具说白了就是专门干直流电源压降和电流密度分析的它能把PCB上从电源芯片输出到负载芯片引脚之间的每一段铜皮、每一颗过孔都算得明明白白。很多人一打开Power DC界面就发怵菜单多、术语杂真上手时折腾半天全卡在模型设置和报错循环里。这篇文章我打算按自己的实际使用经验从仿真思路、叠层模型准备、Power DC实操流程到高频报错排查完全按“保姆级”标准带大家走一遍。适合正在做硬件设计、PCB Layout或者刚接触电源完整性仿真想快速上手的同学直接对着步骤操作就行。1. 先想清楚HI3516A板卡电源压降仿真到底在仿什么1.1 什么是IR Drop为什么这块板子非仿不可电源压降在业内通常叫IR DropI是电流R是电阻。电流流过PCB上的走线、电源平面、过孔和芯片引脚时每一段都有寄生电阻于是从VRM电源模块输出端到芯片供电引脚之间电压会一路掉下来。芯片真正拿到的电压等于VRM设的输出电压减去整条通路上所有电阻带来的压降总和。HI3516A这类视频SoC核心供电电压往往只有0.9V左右但工作电流能到好几安培。电压本来就低电流又大压降问题就特别突出。举个例子DCDC输出调到0.95V如果通路上的压降有50mV芯片引脚处就只剩下0.90V叠加瞬态掉电和电源纹波之后很容易触碰到芯片规格书上的最低工作电压导致视频编码花屏、系统死机甚至复位。这类问题在低温、满负载条件下尤其明显所以做电源压降仿真不是走形式而是为了保证板子量产之后电源余量足够不想等实物回来了再在示波器上慢慢抓电压跌落最好在投板前就把问题算清楚。1.2 HI3516A板卡常见的电源网络有哪些HI3516A的电源系统很有代表性设计上通常不会只给一个电压而是按照核心、DDR、IO、PLL等用途分成多个电源域。我整理了一份常见的电源网络说明表大家可以对照自己的原理图看电源域典型电压主要作用负载电流量级经验值VCC_CORE0.9V ~ 1.1V芯片核心逻辑供电2A ~ 5A视编码负载而定VCC_DDR1.35V ~ 1.5VDDR3/DDR3L内存接口供电1A ~ 3AVCC_IO2.5V / 3.3VIO接口、外设电平转换0.2A ~ 0.8AVCC_PLL1.8VPLL模拟电路、参考电压几十毫安到一两百毫安注意上表的电流量级是我做过类似安防视频板卡的经验评估值真正仿真时必须按HI3516A数据手册的电流功耗参数来设置不同分辨率、不同编码路数下电流差异很大。仿真模型里的电流给得不准后面压降结果再好看也是白搭。1.3 为什么选Sigrity Power DC而不是其他工具做电源压降仿真市面上的工具不少比如Ansys SIwave、HyperLynx DC Drop等都有各自用户群。我选择Cadence Sigrity Power DC主要看中三点第一Power DC读取Allegro版图是无缝衔接的很多公司板子本身就是Cadence画的转ODB或者直接打开.brd都很顺畅。第二它针对DC压降和电流密度做了专门的求解器不需要像全波3D电磁场工具那样把阻抗矩阵全算一遍建模快、网格剖分策略对平面和过孔做了优化跑一轮仿真的时间可以接受。第三它的后处理非常直观直接看电压云图、电流密度云图配合Cutting Plane和Probe探针能很快定位瓶颈在哪一段。不过工具顺手不意味着可以不做准备。实际上在我遇到的所有“仿真结果不对”“一直报错”的案例里九成以上都不是软件本身的问题而是叠层参数没填对、VRM和Sink建得不合理、或者电源网络没有正确识别。所以下面先讲准备工作这部分真正决定了仿真靠不靠谱。2. 动手前的准备叠层、模型和网络命名一个都不能省2.1 叠层参数检查这一步错了后面全白干Power DC计算电源平面和走线电阻靠的是叠层里每一层的铜箔厚度和电导率。铜箔默认厚度一般按1oz算也就是35μm电导率一般是5.8×10^7 S/m。但实际板厂的叠层可能不是整齐的1oz有的电源层为了过更大电流会加厚到2oz也就是70μm有的高层HDI板内层用了0.5oz的铜箔。如果叠层参数和实际板厂不一致那么平面电阻算出来就差很多压降结果自然对不上。具体检查路径是导入版图后在Power DC里打开Stackup Editor逐个检查每个金属层的Thickness和Conductivity。遇到没填厚度或者厚度为0的层必须手动补上。还有一个容易忽略的点表面处理也会影响最终铜箔厚度比如沉金板子在铜箔表面会多出几微米的镍层。对于常规电源压降仿真只按基铜厚度算就够了但如果你做的板子要走非常大的电流建议和板厂确认最终的成品铜厚。关于介质层厚度DC压降仿真对介电常数不敏感但介质层的存在会影响软件识别平面和参考层的关系。所以叠层数据必须是完整的不能只填金属层把pp或core介质厚度空着。介质厚度为空时有些版本会直接报错或者给出异常结果。2.2 VRM模型和Sink模型电源从哪里来电流到哪里去仿真模型说白了就两类东西VRM是供电端点Sink是用电端点。VRM通常对应板子上的DCDC降压芯片或者LDO输出。建模步骤很清晰在设计里找到DCDC输出的位置添加一个VRM符号。设置VRM输出电压。比如VCC_CORE的VRM输出根据原理图填0.9V或你可接受的标称值。设置Source Impedance也就是电源的内阻。实际DCDC闭环反馈下低频内阻非常低在Power DC里可以填一个很小的值比如0.005Ω也可以按DCDC芯片的开环输出阻抗填。填理想值也不是不行但填了理想值VRM到第一个去耦电容那一段的压降会被忽略对于大电流回路来说会略微低估压降。Sink模型是把消耗电流的芯片引脚模拟成一个或者多个电流源。常规做法是给每个电源网络分配一个总电流Power DC会把电流均匀分布到该网络的所有电源引脚上。但这种均匀假设不够细更准确的做法是导入芯片厂商提供的Power Map/Current Map文件里面会给出不同引脚区域对应的电流权重。HI3516A这类大芯片BGA焊盘非常多如果均匀分配电流仿真出来的热点位置和实际会有偏差。有条件的最好从芯片资料包或FAE那里要到电源分布文件转换成CSV之后导入Sink模型。没有的话至少也要按照核心区域、DDR接口区域分别设置几个分区Sink把电流尽量分配到对应的BGA区域。2.3 电源网络命名与识别大部分报错的根源在这Power DC判断哪些铜皮属于电源网络依据就是网络名称。实际工程里一个电源网络在原理图、PCB和物料里可能叫法五花八门比如VCC_CORE、VCC_CORE_0V9、VCC_INT、CORE_PWR其实是同一个网络。仿真前一定要确认要分析的目标网络在版图里的准确名称可以在菜单的Net工具列表里搜索。另外注意网络名里不要有特殊字符不要有中文和多余空格这类字符很容易让Power DC在识别VRM或Sink时找不到对应网络。曾经遇到一个板子原理图网络名里带了“/”导到Power DC里直接识别不出网络搞了半天才发现是命名正则的问题。如果你的Power DC版本支持Power Tree Validation建议运行一下它会自动列出当前设计里所有电源网络、VRM和Sink的挂载关系。如果这里就不通过就不要强行往下跑了先把这个逐步排查清楚。3. 保姆级实操从导入文件到生成压降报告3.1 导入版图文件并建立工程我用得最多的是直接打开Allegro的.brd文件或者让Layout工程师导出ODB。具体操作是打开Power DC主界面选择“File → Open → Open Brd/ODB”。选择文件后软件会弹出导入选项一般保持默认直接导入。导入完成后界面会显示板卡的3D预览图左下角有层叠结构。此时先不要急着放VRM按上一节说的先检查Stackup把每一层铜厚、电导率、介质厚度确认一遍。建完叠层后建议立刻保存工程文件后缀是.spd。仿真过程中养成随手保存的习惯Power DC有些操作不具备撤销功能我吃过这个亏一个没小心把叠层数据覆盖了重新又改半天。3.2 设置分析范围和电源网络左侧项目管理器里找到“Power Tree”或“Net List”面板先创建要分析的网络。操作步骤是选中一个电源网络比如VCC_CORE右键“Assign as Power Net”。如果有多个网络可以一次选中全部。对每个电源网络指定其电压值。这里填的是目标电压用来作为压降计算的基准比如VCC_CORE填0.9VVCC_DDR填1.35V。同时指定电压容限。通常按3%到5%设置也可以按芯片手册里的绝对偏差填。比如VCC_CORE允许±30mV那你就在容限框里填0.03V后面出报告时软件能自动把超标的引脚标红。这一步很多人会直接跳过导致后面仿真结果显示的压降全部是绝对值没有百分比参考判断起来很不直观。设置好电压和容限云图的颜色标尺就是有意义的了一眼能看出哪些位置超限。3.3 放置VRM和Sink注意位置要贴在网络上放置VRM的操作在Power Tree面板中找到“VRM”分组右键“Add VRM”。然后点击版图上DCDC输出电感的焊盘位置或者直接输入坐标。在属性面板里填写VRM名称、输出电压、内阻。放置Sink的操作在“Sink”分组右键“Add Sink”。点击版图芯片上对应的BGA电源引脚区域Power DC会把Sink关联到这个网络的所有电源引脚。在属性面板填写总电流。比如实测或预估VCC_CORE总电流3.5A就填3.5A。这里有个细节Sink不要只放一个点最好在芯片BGA的不同电源引脚区域多放几个Sink把总电流拆开分配。比如从芯片顶部看左侧DDR接口多给点电流核心区域给最大电流这样仿真出来的电流密度分布才贴近真实。尤其是HI3516A这种封装尺寸大、电源引脚分散的多电源域芯片只放一个集中Sink会严重高估局部压降。还有VRM位置要在DCDC输出网络的铜皮上Sink要在芯片供电网络的铜皮上。如果选到的是地网络或者别的信号网络后面会报“Pin not on net”之类的错误。我习惯在放置前先打开网络着色把目标网络高亮出来避免点错。3.4 设置直流分析选项接下来是分析设置。在菜单中选择“Setup → Analysis Options”或直接在工具栏点“Analyze”。Power DC里的分析类型对普通压降仿真选择“DC Drop”或者“Power DC”分析。具体设置项包括迭代次数一般默认值10到20次就够如果电路收敛困难可以调到50次。收敛误差默认是1e-3或者类似值一般不用改。如果遇到不收敛可以放宽到1e-2但结果精度可能稍有下降。温度铜的电导率随温度变化常规设置25℃或50℃如果有明确的板级工作温度比如60℃就填60℃。温度升高时铜电阻变大压降也会变大所以算保守一点可以按照实际壳温设置。确认分析网络列表注意有些设计里地网络也被设成了分析对象。地回流路径的压降同样重要推荐把相关地网络也加进去比如VCC_CORE的回流地PGND仿真时能看到地平面上的电位差。很多新手只盯着电源层忽略了地平面的压降实际上电源和地是一样关键芯片感受到的工作电压差是两者相对值。3.5 运行仿真并读取结果点击“Run”开始求解。网络规模不是特别夸张的板子一般几分钟能跑完我碰过最久的一次是四层板大量细碎铜皮跑了将近20分钟。等待期间不要关闭软件也别切来切去个别版本在求解过程中切换窗口容易把进程弄崩。跑完之后默认显示的是电压分布云图。云图上标尺从蓝色到红色红色是电压高蓝色是电压低。看云图时直接找蓝色最深的区域那里压降最大。更精确的方式是使用Probe探针在工具栏选择“Probe”工具。点击VRM输出端读出电压比如0.895V。点击芯片BGA最角落的电源引脚读出电压比如0.866V。差值就是这一段路径的压降。同时看电流密度云图红色高亮区域说明电流拥挤往往对应走线瓶颈、过孔不足、平面缺口。如果某片区域电流密度达到或者超出铜箔允许值要考虑加宽铜皮、增加过孔或者改换更大铜厚。结合压降和电流密度一起看才能准确定位问题。3.6 导出报告汇报给团队Power DC可以生成仿真报告在Result工具栏找到“Report”功能勾选需要的内容包括电压分布图、电流密度图、各Sink电压表格等导出成HTML或者PDF。我习惯在报告里额外加一页表格列出每个电源网络的最小电压、最大压降、压降百分比、是否满足容限。这样给硬件团队、Layout团队看结论时不用大家自己在云图里找半天。具体格式网络目标电压VRM电压最小负载电压最大压降压降比例判定VCC_CORE0.9V0.895V0.862V33mV3.7%需要优化有了这个表每次改版前后对比就非常方便。4. 高频报错与排查实录照着对号入座4.1 “Power Net not found”或“No valid power area”网络识别失败这个报错我遇到得最多尤其是别人给的版图文件电源平面层被导成了多段碎片铜皮时更容易出现。排查思路检查网络名是否和面板里完全一致不能有多余空格。有朋友从Excel复制网络名带了个看不见的换行符找半天。检查铜皮属性。在Allegro原图里如果电源形状是动态铜皮导到Power DC后有的版本会要求先跑一遍“Shape Check”。确认对象是铜皮而不是走线。如果电源网络是用很细的走线连的没有完整平面Power DC可能认为这不是有效电源区域也会报这个错。此时需要回到PCB里保证BGA区域有完整的电源平面形状。4.2 求解不收敛迭代一直警告求解不收敛的表现是仿真中断日志里出现“Warning: iteration not converged”或者“Convergence failure”。常见原因和处理方法检查Sink电流是否过大曾经有人把0.35A填成了3.5A结果Sink处电压直接变成负数求解器都没法收敛。挨个核对每路Sink电流。检查VRM电压和Sink电流之间的合理性如果器件库里残存的模型和实际不符也会不收敛。调高迭代次数把Iterations从默认值调大到50甚至100。适当放宽网格约束。网格剖分太细时过孔附近会出现极端小单元导致矩阵条件数太差。试着把最小网格尺寸略微加大或者开启Automatic Mesh。还有一个土办法把温度单位从摄氏度随便切到开尔文再切回来刷新一下求解状态个别版本有状态错乱的问题但这个纯属玄学不保证万能。4.3 叠层厚度缺失导致结果异常如果仿真跑完发现压降非常小几乎为零第一反应不要高兴先查叠层。铜Thickness填0或者没填软件就把这层当成了零电阻的超导层当然压降小得离谱。另一种情况是压降大得离谱明明只有几厘米长的铜皮压降却几百毫伏。这时候查一下是不是电导率单位选错了默认是5.8e7 S/m如果你不小心填成5.8e5差了100倍压降自然大得没法看。我的习惯是每次导入新板子之后前5分钟什么都不做先把叠层克隆一份截图存下来再逐项对比板厂给的叠层表。这样就算后面改参数改乱了也能回到开始时正确的叠层版本。4.4 “Sink/VRM not on net”模型挂载不到网络上放置VRM或Sink时如果报“pin is not on selected net”通常是点到错误的网络上了。解决办法开启网络高亮把目标网络的铜皮着色后再放置模型。删除旧的VRM/Sink重新点击铜皮中心位置不要点在过孔和焊盘边缘。如果芯片BGA引脚众多可以在Sink设置里改用引脚列表方式手动筛选出目标网络的电源引脚Power DC还支持从文件导入引脚列表。4.5 仿真结果里出现负电压或电压超过VRM设定值看到负电压别慌先把模型逻辑理一遍。最常见的原因是同一网络里放了两个VRM一个大电压输出一个小电压输出中间又没有有效隔离软件按两个源同时供电求解结果就会出现某个区域电压高于设定的情况。DCDC分裂供电或ORing电路会这样。处理方法确认该电源网络是否只有一个源在工作或者把非工作状态的VRM从分析中排除。如果板子上同一个VCC_CORE有两个DCDC并联供电需要确认两个VRM的输出电压一致内阻设置合理否则软件算出来的均流会失衡。4.6 常见报错速查表整理成表格方便大家平时排查报错或异常现象常见原因解决思路Power Net not found网络名不一致或铜皮非有效区域核对网络名、处理动态铜皮Convergence failureSink电流异常、网格过细、迭代不足核对电流、调低网格精度、调高迭代次数压降基本为零叠层铜厚为0或电导率未填补全叠层参数压降非常巨大电导率单位或数值填错改为5.8e7 S/m25℃Sink/VRM not on net放置点选到了错误网络开启网络高亮重新放置负电压或电压超过源值多个VRM冲突或模型错误检查VRM数量和输出电压4.7 一个容易忽视的“版本兼容性”报错最后提一个比较隐蔽的问题用了较新版本Power DC打开旧版工程或者反过来用旧版打开新版工程经常出现组件丢失、VRM位置漂移、叠层数据错乱等情况。软件自己会弹提示但很多人不停地点“Continue”。我的经验是跨版本打开的工程不要直接拿来出报告。先做一次“Cleanup”或者干脆在新版本里重新导入原始版图再重新放置VRM和Sink。虽然多花十几分钟但比带着旧版的脏数据调到怀疑人生划算得多。我团队里现在统一固定了一个常用版本来做仿真项目间共享工程模板版本问题基本不再出现。5. 最后的几句实战体会跑过几个项目之后我对Power DC这类工具的心情是别把它当玄学也别把它当自动出结果的傻瓜软件。它的核心价值不是告诉你“哪里红了哪里蓝了”而是逼着你在仿真前把电源网络、负载电流、叠层参数彻底梳理一遍。这个过程本身就能暴露很多设计问题比如某个电源域原来漏了去耦电容比如某层电源平面被分割得太碎这些在原理图评审时不一定能发现但仿真模型一建问题藏不住。另外仿真结果和实测之间有差距这是正常的。DC压降仿真理想化了一些条件比如所有过孔都按标称参数建模、铜温恒定、电流按设置的权重分配。实测结果一般会比仿真结果略好一点因为实际负载不会一直满功耗跑。做判定时我习惯留出20%以上的压降余量。比如芯片规格说核心电压最低0.87V我仿真时要求所有引脚不低于0.89V宁可在设计阶段多花一点面积也不等板子回来了再找补。再分享一个小技巧Power DC的仿真工程文件沉淀下来之后可以整理成公司内部模板库。新项目来了直接复制一个最接近的工程替换叠层和网络十几分钟就能完成第一轮快速评估效率提升非常明显。这个办法我们团队用了很久新同事上手也能少走很多弯路。电源压降仿真这件事说复杂确实复杂但把流程固定下来把报错处理经验沉淀成表格它就能成为项目开发中一个非常可靠的常规操作。