
一块八层板核心电源布局看着挺规整VRM离FPGA也就两厘米结果板子贴回来一上电用万用表量远端BGA引脚上的电压1.0V的设计值只剩0.94V差出去60mV。你查原理图、查布线宽度、查过孔数量怎么看都觉得不该掉这么多可它就是掉了。这种问题光靠“感觉”和“经验估算”根本算不明白唯一靠谱的办法就是在投板之前把直流压降跑一遍仿真——也就是IR Drop仿真。如果你也遇到过类似的困惑这篇笔记就是写给你的。这是PDN仿真笔记的第9篇今天专门聊Sigrity PowerDC做IR Drop仿真的完整方法。PowerDC是Cadence Sigrity套件里做直流电源完整性分析的利器核心用途就是计算从VRM输出到芯片电源引脚之间整条电源传输路径上因为电阻产生的直流压降以及铜皮、过孔里的电流密度是否超标。适合硬件工程师、PCB设计工程师、以及刚开始接触电源完整性仿真的人参考。我用的是Sigrity 2018版本操作界面和最新版会有一点点差别但核心逻辑完全一致照着做基本都能跑通。1. 弄清三个底层概念再打开PowerDC也不迟很多新手拿到PowerDC就急着导入板卡、点Run结果跑出来一个花花绿绿的图也不知道对不对、该怎么判断。我建议先花十分钟把三个最基本的概念捋清楚否则后面全是在瞎调参数。1.1 PDN和IR Drop到底在仿什么PDN全称Power Delivery Network就是电源分配网络指的是从电源模块输出端一直到芯片内部晶体管供电端之间所有承担电能传输的路径总和。这里面包含PCB上的电源平面、走线、过孔、焊盘、封装基板等等。IR Drop里的“IR”就是欧姆定律VI×R意思是电流流过这些物理结构时因为自身存在电阻必然会产生电压降。电流越大、路径电阻越大掉压就越严重。这里有个特别容易踩的认知误区很多人觉得原理图上电源网络的阻抗算过了走线宽度也按电流要求加了就没问题。但原理图和2D版图层面对“电源网络阻抗”的计算通常只考虑了理想化的直线路径和标称铜厚实际PCB上电流从VRM出去后会在整个平面上向四面八方扩散哪里铜皮窄、哪里过孔少、哪里被禁布区切了一刀电流就会在那里“挤”过去局部电阻急剧升高。这些问题在平面图上肉眼很难看出来但仿真能直接算出来。PowerDC做的IR Drop仿真属于直流稳态分析它的求解思路和AC仿真完全不同。AC仿真关心的是频域阻抗、谐振点需要S参数模型和去耦电容的寄生参数而DC分析只关心导通路径上的电阻网络。PowerDC通过有限体积法或者边界元法求解电流连续性方程和电场分布把整块铜皮离散成大量网格在每个网格上求解电流密度和电位分布最后得到整个电源网络上的电压分布图。1.2 PowerDC凭什么能干这个活市面上能做IR Drop仿真的工具不止一个像Ansys SIwave、HyperLynx PI、Altair PollEx也都有类似功能。但PowerDC在工程界用得非常广尤其是和Cadence自家的Allegro生态配合得特别好读板卡数据基本无缝衔接不需要额外做太多格式转换。我个人的体感是PowerDC在铜皮电流密度计算和结果可视化方面做得非常直观能直接看2D压降云图、3D分布图还能用探针拉出任意两点间的压降曲线。更关键的是PowerDC不只是单纯算电学它的电热协同仿真能力很强。铜的电阻率会随温度升高而变大芯片正常工作后PCB局部温度可能到70、80摄氏度这时候铜的电阻率比室温下能高百分之二三十。如果你只做纯电气仿真不考虑温度算出来的IR Drop会偏乐观。PowerDC的Electro-Thermal模式能把热场和电场耦合在一起迭代求解算出来的结果更接近真实工况。这一点后面我会专门展开讲。另外PowerDC的网格剖分是自适应的它在电流密度变化剧烈的地方会自动加密网格比如过孔附近、BGA引脚密集区、平面边缘拐角处而在电流分布均匀的大平面上用得比较粗。这样既保证了计算精度又不至于让网格数量大到电脑跑不动。1.3 一个可量化的目标远端Pin电压容差做IR Drop仿真之前心里一定要有一个“合格线”。这个线不是自己拍脑袋定的而是来自芯片的电源规格要求。比如一颗FPGA的内核电压是1.0V数据手册里写的容差范围通常是±3%也就是说从封装引脚处看进去电压必须落在0.97V到1.03V之间。而你量到的0.94V已经跌破下限芯片工作不稳定几乎是必然的。这里要特别注意一个概念芯片本身要求的电源容差是包含VRM输出电压纹波、瞬态跌落和直流IR Drop三部分的总预算。比如说总共允许30mV的浮动VRM本身直流精度误差算掉5mV负载瞬态响应再吃掉10mV那留给直流IR Drop的预算可能只有15mV甚至更少。这个预算分解非常重要因为IR Drop只是整个电源质量链条中的一环你得知道分给自己这一环的指标是多少。通常业界会有一个粗略的参考从VRM输出端到芯片远端引脚直流IR Drop建议控制在电源电压的3%以内核心电压越低的平台要求越严。例如0.8V的核心电压3%就是24mV这已经是一个相当紧张的数字了铜皮稍微窄一点、过孔少几个都不够分。2. 仿真前准备数据、叠层和器件功耗一个都不能少仿真最花时间的往往不是仿真本身而是前期数据准备。PowerDC跑一个中小规模板卡求解时间可能就几分钟但如果你叠层填错了、网络映射没做对跑出来的结果再快也是废的。这一节把准备工作列清楚。2.1 从Allegro到PowerDC的模型导入路径第一步当然是拿到PCB的版图数据。如果你用的是Allegro最顺的方式是直接在Sigrity Suite Manager里启动PowerDC然后通过File菜单下的Import导入.brd文件。但不同版本处理方式不太一样。我用的Sigrity 2018版本它会更习惯先把Allegro的.brd通过DataFlow工具转成.spd格式再在PowerDC里打开新一点的版本对.brd的直接支持已经比较好了菜单路径会略有差异。这里有个容易卡住新手的点导入模型时通常会有个选项问你“是导入全板子还是只导入某个区域”如果只是做某一路电源的IR Drop分析没必要把整块板子的所有层、所有网络全导进来文件大、网格多、仿真慢而且无关网络的铜皮还会干扰判断。我一般习惯先做一次完整导入再用PowerDC里的区域裁剪功能把关注区域切出来或者直接在Allegro里把其他电源网络禁用掉再导出。导入完成后第一件事不是急着设VRM和Sink而是去检查导入进来的数据完整性。重点看三点层数对不对、各层分组对不对、通孔和盲埋孔是否被正确识别。板厂给你的叠层文件里写了12层PowerDC里只显示了10层那后面算出来的电阻值肯定不准必须先解决数据导入的问题。2.2 叠层参数核对铜厚、电导率与温升叠层是整个IR Drop仿真里最容易出错、也最影响结果准确性的部分。PowerDC导入叠层后每一层的介质厚度、铜箔厚度、材料属性都应真实反映板厂的加工参数。我之前犯过一个经典错误把内层电源平面的铜厚填成了1oz实际板厂加工出来是0.5oz结果仿出来的压降比实测偏小了差不多四成整条链路从源头就是错的。为什么铜厚影响这么大因为铜皮电阻和厚度成反比1oz铜厚约35微米0.5oz只有17.5微米同样的平面图形电阻差了一倍。再加上电源平面通常面积很大整个平面上的电阻加起来这个差异会被放大得非常明显。所以拿到叠层后一定要对照板厂提供的叠层确认单把每一层铜厚、介质厚度都核对一遍不要直接用软件默认值。还有个参数是铜的电导率。纯铜在20摄氏度下的电导率约5.8×10^7 S/m但PCB内层铜经过压合、电镀等工艺后电导率会比理论值略低有些资料建议按5.0×10^7甚至4.5×10^7来填。更严谨的做法是直接开启PowerDC的温度设置把环境温度设成板卡实际工作时的温度或者用Electro-Thermal模式让仿真自己算温度分布。铜的电阻率温度系数大约是0.0039/℃从25℃升到75℃电阻率增加约20%这个量级在IR Drop预算里绝对不能忽略。2.3 功耗统计与Sink电流折算IR Drop仿真里负载端的电流是怎么来的来自芯片的功耗。PowerDC里把消耗电流的负载叫做Sink设置Sink电流需要知道芯片在某个工作状态下的电流需求。这个数据一般可以从芯片数据手册里的功耗表格查到有些大厂还会提供功耗评估工具。举个例子一颗DDR4颗粒VDDQ是1.2V数据手册上写典型工作功耗约0.6W那它的电流就是0.6除以1.2等于0.5A。如果板子上有8颗DDR4颗粒都挂在同一路VDDQ电源上那这路电源的总Sink电流就是4A。但要注意这4A不是均匀分配在8颗颗粒上的有的颗粒靠近控制器、有的在远端需要根据实际PCB布局在每颗颗粒对应的电源引脚附近分别设置Sink电流。千万不要图省事直接把4A全设在电源平面的某一个角落。因为IR Drop的本质是看电流从哪里流、路径上掉多少压如果你把电流全集中在一个点电流路径就不对了算出来的压降分布和实际情况完全不是一回事。我见过有人把DDR电源的所有电流设在靠近VRM的一颗颗粒上结果最远端那颗颗粒的仿真压降比实际偏小了至少一倍。3. PowerDC里一步步设置VRM、Sink与电源网络映射数据准备干净了接下来就是PowerDC里的核心操作环节。这一节按实际操作的顺序来讲照着做就行。3.1 配置VRM电压源还是电阻模型VRM就是电源模块也就是给PDN供电的源头。在PowerDC里找到VRM元件后右键打开属性设置通常有两种模型可以选理想电压源和带输出阻抗的电压源。理想电压源很简单只设置输出电压值比如1.0V模型里认为它内阻为0。这种设置简单直观适合快速看压降分布趋势但它忽略了一个重要事实真实的DC-DC转换器有一个电压反馈回路它会从远端的某个采样点通常是负载端附近的Kelvin采样线反馈电压来调整输出。如果忽略这个反馈仿真得到的远端电压会比实际情况偏低因为真实的VRM会自动补偿一部分线损。带输出阻抗的电压源则更接近真实需要设置输出电压和输出阻抗值还可以指定反馈采样点。做高精度仿真时我建议用这种方式尤其是当VRM和负载之间有较长距离、线阻可能超过几十毫欧的情况下。设置完成后PowerDC会在VRM的位置生成一个电压源符号注意检查极性是否正确。除了VRM本身还要给电流一个明确的“来源路径”。PowerDC支持给VRM指定输入来源比如从一个外部电源网络引入。对于板级仿真如果只是算板内这一级电源的IR Drop直接把VRM当成理想源接在输入端就够了不需要把前级电路都包进来。3.2 设置Sink电流怎么给才符合真实负载设置Sink的核心是定位准确。我一般的做法是先在PowerDC里用查找功能找到芯片对应的封装引脚组然后在芯片附近画一个Sink区域把电流加在这个区域上。更精细的做法是直接选中某个BGA电源引脚给这个引脚单独设置电流值这样仿真器会把这个电流从引脚位置抽走路径计算最精确。Sink电流的方向问题值得单独说一下。PowerDC里的电流约定是电流从VRM正极流出经过平面和过孔最终流入Sink回到地。所以在Sink属性里填的是“负载消耗的电流”正值表示从网络抽取电流。如果你看到电流箭头方向反了先检查是不是Sink和VRM的位置搞反了或者把网络正负接错了。仿真里经常会有同一路电源下面挂多个不同功耗的负载比如核心电源同时给ASIC和FPGA供电这时要在两个芯片附近各建一个Sink分别填上各自的电流。PowerDC允许给同一网络设置多个Sink仿真器会自行分配电流路径算出来的结果就是多负载场景下的真实压降分布。3.3 电源网络映射与铜皮识别检查在做完VRM和Sink的设置后还有一个关键步骤确认PowerDC识别的“电源网络”是正确的。在导入复杂板卡时经常出现电源网络没有被正确赋予电源属性仿真器把它当成普通信号网络处理导致电流无法正常流过平面层结果完全错误。在PowerDC里有一个Net Manager或者Network列表里面列出了所有网络。你要做的是把自己关心的电源网络比如VCC_CORE、VDDQ_1V2右键设置为Power Net同时把对应电源网络归入同一个Net Group。Net Group的作用是把多个物理网络组成一个逻辑上的完整PDN比如某些电源经过磁珠或者0欧电阻分成两个网络但实际上是一个电源域只有把它们归成一个组PowerDC才能算出连续性正确的电流路径。设置完之后建议用软件的3D视图或者平面显示功能把每一层电源平面的铜皮形状调出来看一眼。重点看平面有没有被走线、隔离带、螺孔禁布区切断有没有特别窄的颈部。2030年代之前的很多板卡设计电源平面被高速差分线的禁布区切得像迷宫一样这种形状对DC压降的影响非常大PowerDC能帮你直观看到问题区域。4. 求解与收敛不是点一下“Run”就万事大吉前面全部设置完就可以点击仿真按钮了。但一个精准的IR Drop仿真不是上来就用默认参数硬跑。求解器的设置和结果判读才是体现功力的地方。4.1 求解器参数怎么调PowerDC的仿真设置里有几个关键参数要理解。第一个是求解模式通常有IR Drop纯电气和Electro-Thermal电热协同两种。纯电气模式速度快适合做快速预评估电热耦合模式慢不少但是更准。我的建议是第一次仿真先用纯电气模式跑通流程确认结果合理后再开电热模式做最终确认。第二个关键是网格控制。PowerDC虽然是自适应网格但你可以通过设置最大网格尺寸和最小网格尺寸来影响计算密度。最大网格尺寸决定了平面区域的基础网格粗细一般设成200~500mil就够用最小网格尺寸决定了过孔、引脚附近能加密到什么程度通常会设到1mil以下。网格越细越准但计算时间成倍增长做工程要在精度和效率之间找平衡。我习惯在VRM附近、BGA密集区和疑似瓶颈区域手动添加局部细化Mesh Seed逼迫求解器在这些地方加密网格其他地方保持粗网格这样精度损失很小但速度能快不少。第三个是收敛容差。求解器是迭代计算收敛的残差降到一定程度就认为到达稳定解。默认值通常够用但如果遇到不收敛或者结果振荡可以试着适当放宽残差标准或者增加最大迭代次数。还有一点如果模型里有大量理想电压源初始解可能跳动很大可以先跑纯DC、不加负载看看基础电位分布是否合理再加Sink电流。4.2 结果怎么看2D图、探针与路径压降求解完成后PowerDC会生成多个结果视图。最常用的是压降分布图用颜色表示电压高低红色通常是电压最高的VRM输出端附近蓝色是电压最低的远处负载端。这张图能很快帮你定位“哪里压降最大”。但光看颜色还不够要落实到具体数值必须用探针在图上取点。PowerDC的Probe工具可以放在版图上任意位置直接读出该点电压。我喜欢在VRM输出引脚、电源平面的几个关键节点、芯片最远端引脚、BGA阵列角落这几个位置各放一个探针这样能快速得到关键路径上的压降数值。还有一个特别好用的功能是沿路径压降曲线选择VRM输出端作为起点再点选某个远端引脚作为终点软件会沿着实际的平面电流路径或者你指定的路径画出一条电压跌落曲线你能直观看到电压是在哪一段掉的——是过孔区掉的还是平面颈部掉的一目了然。电流密度云图同样重要。PowerDC会算每个网格上的电流密度如果某块区域颜色接近甚至超过限值就说明铜皮载流能力吃紧。电流密度的判断标准一般跟板厂的制程能力有关常规工艺下1oz铜皮的持续载流能力大约是1A/mm²左右超过这个值温升就会明显变大这也是电热耦合仿真里要重点盯的输出项。4.3 判断裕量IR Drop在多少范围内算合格拿到结果后怎么判定合不合格标准就一句话看芯片最远端引脚的电压不低过芯片要求的容差下限。但前面说过总容差里还要留出VRM本身误差和瞬态响应的余量所以更稳妥的判断是把PowerDC仿真出来的直流压降控制在芯片总容差预算的50%以内。举个例子0.9V核心电源总容差±3%也就是±27mV。VRM直流精度假设±5mV负载瞬态跌落占10mV留给直流IR Drop的全部预算就是12mV。你在PowerDC里测到从VRM输出到最远端引脚的直流压降如果是15mV那就超标了3mV需要改进设计。这里要多说一句仿真的绝对电压值取决于你设的VRM输出电压但IR Drop真正关心的是“相对压降”也就是VRM输出点与目标点之间的电压差。所以哪怕你把VRM电压设成1.0V而实际芯片要0.9V压降数值一样有参考意义只要你是用“输入端电压减去远端电压”来看结果的。5. 实操中踩过的坑与排查方法写了这么久笔记踩过的坑比跑通的仿真还多。这一节把最常见的几个问题整理成速查表每个都是真实案例。现象可能原因排查与解决办法仿真死活不收敛网格过多、初始迭代跳动过大先增大最大网格尺寸关闭电热耦合跑纯电学适当放宽残差标准压降结果明显偏大比如几百毫伏叠层铜厚填错或电导率设置过低逐层核对叠层参数把铜厚从0.5oz改成1oz试试压降结果明显偏小几乎为零电源网络被识别成普通网络检查Net Group设置确保电源网络已赋Power属性同一网络Sink电流方向混乱极性设置错误检查Sink和VRM位置确认电流箭头指向Sink探针读数与色块图对不上显示精度设置太低调低色标最大值让色块和数值匹配电热仿真结果比纯电气仿真高一截温升导致铜电阻率增加这是正常现象高温下压降确实更大5.1 仿真不收敛先别怪电脑PowerDC不收敛是比较常见的初学问题但原因往往不是电脑性能不够而是模型设置的问题。我在仿真一颗大尺寸GPU核心电源时遇到过电源平面很大、过孔上千个、网格非常密求解器跑着跑着残差就振荡起来。后来发现是因为面积极大的电源平面上初始网格太粗导致电流在某个狭长颈部区域的计算出现病态。解决办法很直接在那条窄铜皮的局部加细网格不收敛的问题就消失了。另一个常见原因是同时用了多个理想电压源和多个Sink初始条件下电流路径不确定求解迭代难以收敛。可以先只保留一个主VRM把其他电压源去掉跑通后再逐个加回来这样既能定位问题源又能加快排错速度。5.2 结果明显偏大偏小的几个原因如果仿真结果和你的手算估算差很多先别急着怀疑工具多半是输入参数的问题。压降偏大最常见的原因是叠层铜厚填错、电导率偏低、或者把温度设得太高。反过来压降偏小则多半是因为电源网络没正确映射到平面层仿真器误以为电流可以“免费”通过某个不存在的大铜皮。还有一个高发原因是过孔参数。PowerDC里过孔的电阻取决于过孔孔径、电镀铜厚度和过孔数量。如果软件里过孔的镀铜厚度默认值设得很厚比如25μm实际板厂只给你镀了18μm那么过孔区的仿真压降会比实测小很多。检查过孔电镀厚度这个参数很多人会漏掉。5.3 一个容易混淆的点去耦电容救不了DC压降经常有人问我在芯片旁边多放几颗100nF和10μF的电容IR Drop是不是就能改善了这个认识是错的。去耦电容在低频和高频下提供的阻抗都很低但那是在动态情况下的作用它们通过储存和释放电荷来应对瞬态电流的变化。对于纯直流的IR Drop电容相当于开路对电流的直流路径没有任何帮助。真正能降低直流压降的手段只有一个方向——减小电阻。具体来说就是加宽电源平面、加厚铜皮、增加过孔数量、缩短VRM到负载的距离。后面这一节就聊聊从IR Drop结果怎么反推设计改动。6. 从IR Drop结果反推PCB设计优化仿真本身不是目的仿真发现的压降超标问题最终要反馈到设计修改里。PowerDC的结果能告诉我们问题在哪但怎么改还得结合PCB设计经验。6.1 电流密度检查与铜皮加宽加厚打开电流密度云图后最先要看的是颜色最亮的区域。如果某个区域的电流密度已经接近或超过制程上限说明这里就是瓶颈。窄铜皮颈是最典型的问题点可能是一条电源走线从平面层出来转了一个小弯也可能是一段被高速信号禁布区挤得只剩几百mil宽的平面通道。解决办法很简单粗暴加宽。如果加宽的空间实在没有另一个思路是加厚铜皮。把整层铜从0.5oz换成1oz电阻直接降一半代价是板厂加工成本和层间阻抗变化但有时候这是唯一的选择。还有一种常见的做法是把电源平面拆分到相邻两个层通过大量过孔缝合起来等于用两层铜并联等效电阻也能降下来。6.2 过孔数量、局部禁布区与平面分割过孔是电源路径里最容易被忽略的瓶颈。一个直径0.2mm的过孔如果电镀铜厚18μm单个过孔的直流电阻大约在0.5~1mΩ量级看着不大但如果这路电源有20A电流只打了50个过孔单孔的电流就只有0.4A好像也没啥问题。问题出在电流密度20A全部从这50个孔里过孔壁铜箔的电流密度可能已经爆表局部温升会让电阻进一步恶化。所以过了仿真之后如果发现芯片焊盘正下方的过孔区颜色特别红就是过孔数量不够。适当增加过孔尤其是把过孔均匀铺开而不是挤成一堆能显著降低过孔区的电阻和电流密度。不过要提醒一句过孔不要打在BGA焊盘的正中心加工工艺要求过孔和焊盘之间得有间隙具体规则要问板厂。平面分割的问题在IR Drop里同样致命。很多板卡为了给高速差分线提供完整回流路径会在电源平面上挖掉很多禁布区结果电源平面被切得支离破碎。电流在这些缝隙之间绕来绕去路径变长等效电阻变大。PowerDC能把这些缝隙上的电压跌落清清楚楚地显示出来。如果遇到这种情况优化方向通常是调整走线规划尽量让高速线走在相邻层把电源平面完整保留下来或者给关键电源平面开辟出专用的“宽通道”。6.3 仿真与实测对标建一条自己的校准流程最后聊一个很容易被忽略但极其重要的环节仿真和实测的对标。仿真的意义不是只看一个绝对数值它的价值在于建立“设计—仿真—实测”的闭环。我现在的项目流程是每次板卡贴片回来都会挑几路关键电源做一次四线开尔文测量量VRM输出端和芯片远端引脚之间的直流压降然后跟PowerDC的仿真值对比。这一步能帮你校准仿真模型。如果每次实测都比仿真高15%那大概率是叠层铜厚或者过孔参数有系统偏差修正一次后后续所有项目的仿真置信度都上来了。如果某一次实测和仿真差特别多那就说明这次设计里有仿真没抓到的问题比如VRM反馈采样点接错位置、电源平面被意外挖断等等。这些在测试中很难定位的问题通过仿真和实测对照往往一下就暴露了。还有一个实用经验仿真建议在布局阶段就做第一版不要等布线全部完成再做。原因很简单布局阶段发现问题改起来成本极低布线完了再发现电源平面不够可能整板重画。我一般是在布局定型、叠层确定后立即跑一版快速IR Drop预评估用默认粗网格跑半个小时看看数量级是否合理等布线收尾后再跑一版精细的电热耦合仿真作为最终确认。最后再分享两个实战小技巧第一个是关于探针的另一个用法。除了在版图上放点探针PowerDC的Voltage Probe还可以沿着电源走线连续拖动实时看电压变化曲线。我习惯先用色块图锁定大致的“问题区域”再用这个功能精细定位压降具体发生在哪一段路径上比如是过孔区、平面颈部还是走线末端。这个操作比单纯看色块图直观太多。第二个是给新手的一个工作习惯建议每跑完一个仿真把关键设置截图保留下来。别小看这个动作因为下次重新打开项目时你很可能忘了上次用的是什么网格尺寸、关了还是开了热耦合。有记录的话前后版本的仿真结果才有可比性跟实测对不上的时候也能快速回溯是模型哪一环节出了问题。仿真这件事最怕的不是结果不对而是不知道结果为什么不对。