ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Cadence Sigrity实战:从PowerDC到Broadband SPICE的电源仿真全流程

Cadence Sigrity实战:从PowerDC到Broadband SPICE的电源仿真全流程 做PCB仿真的朋友应该都听过Cadence Sigrity这组工具。我最近正好完成了一块板子从PowerDC电源完整性分析到Broadband SPICE模型抽取的完整流程踩了不少坑也攒了不少能直接用的经验。这篇文章不打算做功能罗列而是把我实际跑通“PowerDC → PowerSI → Broadband SPICE”这条链路的过程拆开讲每一步解决什么问题、参数怎么设置、结果怎么看、翻车怎么救全部按实战场景来写。适合刚接触Sigrity的新手也适合被收敛问题、模型映射、叠层数据这些细节卡住的朋友。1. Sigrity全流程整体设计四个工具到底在分工做什么1.1 为什么仿真链路要从PowerDC开始很多人拿到Sigrity先迷茫因为打开界面能看到PowerDC、PowerSI、OptimizePI、SystemSI、Clarity一堆入口到底该点哪个其实你只要想清楚一个前提PCB上的电源问题分两种一种是直流下电压够不够稳一种是交流下阻抗够不够低。前者是个静态问题后者是个频率相关的问题。不能上来就做频域也不能只做直流两者要按顺序来。我从电源域角度解释一下为什么顺序很重要。一块板子如果直流回路上有瓶颈比如平面被分割、铜皮太薄、过孔数量不够那么即使去耦电容堆得再多BGA焊盘位置的电压已经跌到逻辑电平阈值附近了后面的交流分析做得再漂亮也没有意义。所以正确顺序是先做PowerDC把“供电能不能送到位”这个问题确认掉再做PowerSI去处理“高频下噪声能不能被泄放”的问题。我在这次实操中用的是标准的“直流优先”流程。先搭好完整电源树给每个负载分配电流跑IR Drop拿到直流压降云图然后进入PowerSI做频域阻抗分析通过Z参数定位谐振点和目标阻抗超标频段最后把关键网络通过Broadband SPICE生成宽带SPICE模型给系统级时域仿真用。整个过程看起来工具很多但核心逻辑就一条从低频到高频从直流到交流每一级都在给下一级铺路。1.2 PowerDC与PowerSI的分工边界我经常用一句话给团队新人解释这两个工具的关系PowerDC解决“电压够不够”的问题PowerSI解决“噪声泄放顺不顺”的问题。PowerDC跑的是一个准静态直流求解它关注路径上的金属电阻、过孔电阻、电迁移风险最终输出某个网络在某个负载电流下的电压分布和电流密度。PowerSI则是一个频域电磁场求解器它提取网络的S参数和Z参数用来评估电源分配网络PDN在目标阻抗线上的表现。它们的分工也决定了使用时机。比如你改了一版叠层把第二层到第三层的距离拉近了对直流影响不大但会显著影响高频下电源平面的阻抗这种情况下你要用PowerSI来验证。反过来你把某段主电源从4oz加粗到6oz铜直流压降变小了但高频特性不一定变好甚至因为平面结构变化可能谐振点移动这时候要回到频域去看。所以实际设计迭代过程中PowerDC和PowerSI经常是来回切换的不是跑一次就完事。这类分工可以整理成一张表方便对照工具分析类型核心关注点主要产出PowerDC直流IR Drop/电迁移压降、电流密度、过孔瓶颈电压云图、电流密度报告PowerSI频域AC分析/EMIZ参数、S参数、谐振峰阻抗曲线、谐振云图Broadband SPICE模型抽取把S参数转成SPICE电路可仿真的宽带等效电路OptimizePI自动优化自动搜索去耦电容组合优化后的电容方案1.3 流程中容易被忽略的“软衔接”全流程跑下来我发现真正的难点其实不在单个工具而在工具之间的数据衔接。Sigrity虽然和Allegro是一家人但导入PCB数据时仍然要仔细处理三件事叠层数据是否完整、铜皮网络是否闭合、器件模型是否都映射上了。这三件事忽视任何一件后面都会以“仿真结果看起来怪怪的”这种形式找上门。我在这块板上第一次导入时叠层里的阻焊层和丝印层没有正确带过来当时觉得影响不大结果PowerSI频域结果在谐振点附近出现异常偏低的阻抗排查了很久才发现是介质厚度设置不对。后来养成习惯每次导入PCB后先花十分钟把Stackup Editor里的层厚度、介电常数、铜箔粗糙度全部核对一遍再开始建仿真工程。这个习惯帮我省掉了后面大量的返工时间。2. 仿真前置准备叠层、铜皮优先级与器件模型2.1 叠层设置介电常数和铜厚不是“随便填一下”Sigrity仿真精度很大程度上取决于叠层参数是否真实。PCB实际生产时的层压结构和设计文件里的理想结构经常有差别尤其是半固化片的介电常数在不同频率和温度下会漂移铜箔的粗糙度也会影响高频损耗。如果只图省事全部用默认4.4的介电常数低频仿真还没有太大问题到了PowerSI扫频到GHz段谐振点位置就会明显偏移。我这次的做法是直接跟板厂要叠层确认书把每一层的介质类型、厚度、Dk/Df、铜厚、表面处理全部录入Stackup Editor。Dk值常用范围在3.4到4.5之间高速材料如M6甚至会到3.3左右不要想当然。另外表层铜厚和生产后的实际铜厚也有差别线路蚀刻后顶层铜会比原厚薄一点如果做电源仿真要求电流密度特别精确可以考虑选上“Surface Roughness”模型让铜箔粗糙度参与损耗计算。有一个操作小细节PowerDC属于低频直流分析对铜箔粗糙度不敏感但PowerSI在G频段就明显受粗糙度影响。所以叠层设置时可以一套参数通用于多个流程但最终出高频结论前要确认自己用的Dk/Df对应的是哪个频点的数据材科厂给的参数表通常有1GHz、5GHz、10GHz多组值不要拿10GHz的Df拿去算1GHz以下的损耗否则会放大低频段的插入损耗。2.2 Allegro铜皮优先级为什么好好的平面会被割裂“Cadence铜皮优先级”这个词一直在设计圈里热议因为它在版图阶段影响的可不只是视觉。Allegro里动态铜皮和静态铜皮有不同的优先级和合并规则当你用anti-etch分割平面时如果不同网络各自的动态铜皮没有正确设置优先级那么同一区域里可能被后一个网络“吃”掉一块形成一条细缝或者一个孤岛。我在这个项目里遇到过一次典型的“隐性割裂”某块PowerDC仿真中VDD网络在BGA下方出现了一条极窄的电流路径整条路径电阻比相邻区域高一个数量级电流密度云图发红。查回Allegro发现是两个网络都做了热焊盘避让但间距只有4mil优先级设置又导致负片层上被anti-etch切掉了一小段。这种问题在版图阶段肉眼经常看不见但IR Drop计算结果会非常诚实地暴露出来。处理办法是在Allegro里用“Shape Edit”检查分割边界确保每块动态铜皮都Assign到正确的网络用“Z-Copy”做禁布区时注意热焊盘开口不要太小最关键的是PowerDC导入前先运行设计诊断看有没有过孔网络吊空、有没有铜皮DanglingLine。这些检查听起来基础但在全流程仿真中属于决定成败的细节。2.3 器件模型映射比想象中更需要规范的库管理器件模型映射是“仿真器件未定义”这类报错的重灾区。很多时候你的电容、电感、芯片封装在PCB设计里都有参考编号但Sigrity从数据库里找不到对应的电气模型就会在仿真设置里报未定义。这不是软件卡了而是你的器件库带Spark或S参数模型信息的字段没更新。我这次的做法是在仿真前专门建了一份“器件模型映射清单”把每类电容、磁珠、LDO的型号、值、模型路径、模型类型全部列出来。对MLCC去耦电容如果没有原厂的S参数模型可以先用RLC等效模型代替但要注意等效串联电阻ESR和等效串联电感ESL必须按规格书填不能只写一个容值。对DDR等高速器件有条件就尽量找原厂或IBIS模型转过来的SPICE模型不要拿理想模型硬仿否则宽带结果只是自嗨。另外芯片电源引脚上的负载电流怎么分配对应到PowerDC里就是每个负载端口需要一个电流源。芯片内部不同电源域电流经常不同比如核心逻辑1.8V吃3AIO 3.3V吃0.8A。通常做法是找到对应电源网络的电流估算表按比例分配给各个引脚而不是把所有电流塞到一个引脚上。3. PowerDC实操半小时跑出IR Drop报告3.1 从PCB文件到PowerDC工程的完整步骤PowerDC的工程创建方式有好几种我常用的是直接在Allegro里启动Bridge模式把当前版图直接签出到Sigrity这样层叠和网络数据保持同步不用导出ODB再导一遍。如果你用的是独立Sigrity套件从File → Open → PCB Layout选择.brd文件也能导入但要确认弹窗里是否勾选了“Import Stackup and Via Data”。导入之后需要做以下几步设置检查电源树Power Tree确保VRM、电压域、负载网络都进入工程。为每个VRM设置输出电压值为每个电压域设置允许压降比例常用的是3%到5%具体看芯片手册。为每个负载设置电流值可以用“Total Power”估算也可以按引脚分别加电流源。选择VRM输入端口位置通常设置在电源插座或连接器的入口处。设置仿真类型为“DC Drop”勾选电迁移检查Electromigration和过孔电流密度检查。这些步骤做完运行仿真通常只要几分钟到十几分钟取决于版图的网格密度。第一次跑建议用“Medium”网格跑通后如果需要更精细的电流密度细节再调到“Fine”。3.2 报告怎么看压降云图、电流密度与百分比PowerDC出结果后界面会同时显示电压云图、电流密度云图和电流方向箭头。我习惯先看电压云图里最低电压出现在哪里。如果最低点完全不在负载引脚附近而是出现在某段细长铜皮上那大概率是回流路径有问题需要回版图修平面或加过孔。再打开报告看“Total Voltage Drop”和“Percentage Drop”。比如一个0.9V的核电压域目标压降是3%也就是27mV。假设VRM输出0.9V到BGA焊盘最低点测得0.865V说明压降35mV超了目标就要继续优化。优化常见的三板斧第一是加宽/加厚铜箔把电源层从2oz做到3oz甚至4oz第二是在瓶颈区域增加过孔阵列减小过孔等效电阻第三是调整VRM位置让电流路径更短。注意改版之后一定要重新导入不要在一个旧版图上反复调参数那样改了等于白改。3.3 直流不收敛的排查思路PowerDC也偶尔会碰到不收敛的报错新手看到Fail就慌。实际上大部分不收敛都源于模型或网格问题。我遇到的情况是某颗电源芯片的参考平面没有正确连接到地导致求解器找不到回流路径还有一种情况是某个网络浮空既没有VRM也没有负载PowerDC会尝试求一个没有约束的解自然算不出来。处理方法是先跑一下“Open/Short Check”把平面连接情况和过孔连通性过一遍再检查每个电源域是否有完整的电流源与边界条件。如果还是报错把网格切得稀疏一点或者把疑似问题网络的Shape合并简化多半能定位到具体网络。4. PowerSI频域分析用Z参数定位PDN谐振点4.1 为什么要做频域去耦电容不是拍脑袋放的跑完PowerDC只是第一步直流压降合格不代表高频下电源完整。举个例子芯片在0.9V供电域下瞬态电流变化只有几个纳秒如果PDN的高频阻抗过大电压跌落就会超过门限导致逻辑误翻转。而PDN阻抗表现本质上是一堆电容和平面寄生参数在频率上的互动结果必须用频域来看。去耦电容的配置方案我建议不要凭经验堆数量而是用PowerSI扫一遍Z参数后对照目标阻抗线逐频段补齐。目标阻抗的计算公式很直观Z_target (VDD × 允许纹波百分比) / 瞬态电流比如0.9V电源域允许3%纹波瞬态电流为2A目标阻抗就是0.9×0.03÷2 0.0135Ω也就是13.5mΩ。把这个值画在Z参数图上高于这条线的频段就是要补的地方。4.2 PowerSI仿真设置与端口创建技巧PowerSI中第一步是选择分析模式对PDN优化通常选“AC Analysis with Return Path”。端口创建时要放在芯片电源引脚焊盘和对应的地引脚之间或者放在VRM输出位置和GND之间。端口的极性一定要明确否则提取出来的Z参数没有意义。扫描频率范围我用的是10kHz到10GHz覆盖从开关电源低频纹波到高频谐振的典型范围。扫频点数不是越多越好对数扫频下每十倍频程放30到50个点精度已经足够再多只会增加求解时间。仿真结束后在“Z Parameter”图里添加Marker逐个看Z11曲线。Z11代表了端口的自阻抗也就是PDN从该端口看进去的等效阻抗。如果一个频段出现明显的尖峰就说明该频段存在谐振用对应容量去耦电容来压低这个峰。4.3 去耦电容优化看曲线变化而不是只看数量我去耦优化习惯采用“先加低频大容值再加高频小容值”的顺序。观察加入一颗10uF电容后中低频段阻抗整体下来了再加100nF把1MHz到10MHz之间的峰压了一下最后用1nF甚至560pF去处理100MHz以上的高频翘尾。每加一颗都回到Z参数图上对比看峰值有没有降到目标阻抗线以下。为了避免人为干扰我在每次迭代中只改一个变量并且把电容位置尽量贴近芯片引脚。位置的影响在PowerSI里体现得很明显同样的10uF电容放远10mm在几十MHz处消峰效果就大打折扣。这也是为什么仿真比经验更有说服力你一眼就能看出位置带来的差异。5. Broadband SPICE模型生成与系统级协同仿真5.1 什么是Broadband SPICE从S参数到SPICE等效电路Sigrity里生成模型这一步所谓Broadband SPICE就是把S参数/Z参数这种频域结果拟合成一个能在SPICE仿真器里收敛的等效电路模型。S参数本身在通用时域仿真器里直接使用容易遇到因果性、无源性问题而且时域扫描会非常慢Broadband SPICE通过优化算法把频域曲线拟合到一组RLC和受控源网络上使模型既能保留带宽特性又能在时域仿真中稳定收敛。“Broadband”这个词强调的就是它有很宽的频率适用范围不像早期一些等效模型只对窄带信号有效。在Sigrity中Broadband SPICE生成器会针对你选定的端口和多端口网络输出一个.lib或.sp文件你可以把它导入到Spectre、HSPICE、Pspice等仿真器里。5.2 抽取步骤、参数选择与拟合误差控制在Sigrity里先打开包含频域数据的工程选中需要抽取模型的那组网络或端口在菜单中找到“Broadband SPICE”模块。设置界面里通常需要指定起始/截止频率、拟合阶数、是否强制无源。我这次抽取DDR地址总线时频率范围设为100kHz到20GHz阶数选择中等生成了之后系统提示拟合误差小于0.5%。这里要提醒一下别一味追求高阶数阶数太高生成的SPICE网表会非常庞大时域仿真反而容易不收敛。误差控制在1%以内就够工程用了。生成模型后一定要做一次“Passivity Check”和“Causality Check”。S参数在无源网络里必须满足行列式模不大于1的条件如果轻微超标Broadband SPICE工具可以强制修正但修正后曲线要和原曲线对比避免出现非物理的尖刺。我就遇到过修正后模型在某个频点出现振铃回查发现是原S参数在那个位置本身有测量噪声把拟合阶数调低后反而更干净。5.3 Broadband SPICE在实际项目里的应用场景模型的价值在于可以“带走”。把PCB关键网络抽取成Broadband SPICE模型后你可以把它放进系统级仿真环境去验证DDR读写时序、SerDes通道的眼图、电源噪声对时钟抖动的影响而不用每次都调用三维电磁场求解器仿真速度快得多。在电源完整性上Broadband SPICE也很适合PDN仿真。把PCB上某段PDN网络抽取出来加上VRM模型的低频特性、负载芯片的瞬态电流模型一起做时域协同仿真就能看电源轨道在动态负载下的波动曲线。这种波形级的验证比单独看阻抗曲线更直观也是芯片与板级联合设计的重要衔接点。下一步如果你想做“芯片级板级封装级”协同这种模型抽取能力基本是必需品。6. 常见问题与排查技巧实录6.1 高频问题速查表把这次实操中遇到的问题整理成了一张速查表不一定覆盖所有情况但命中率应该很高现象可能原因排查与解法仿真器件未定义器件库映射失败打开库映射表核对参考编号与模型文件路径是否完整瞬态仿真不收敛模型阶数过高/无源修正异常降低Broadband SPICE拟合阶数检查PassivityPowerDC结果异常偏低铜皮被分割/网络吊空回到Allegro检查动态铜皮优先级与anti-etch边界频域结果谐振点偏移叠层Dk/Df用了默认值核对板厂叠层报告更新Dk/Df并重跑去耦电容加了没用电容位置离负载太远或ESL过大在PowerSI中对比不同位置靠近引脚放置模型拟合曲线出现尖刺原S参数存在测量噪声降低拟合阶数平滑原数据后再拟合6.2 避免返工的三个实操习惯第一个习惯是每次导入PCB数据后先做一次“叠层与网络完整性自检”。不用等仿真报错再回头看直接在Sigrity里打开网络表和Stackup面板快速核对关键电源网络、地网络确认都在预期分组里。这个动作花不了十分钟但能避免一个走样的叠层数据污染后面所有分析。第二个习惯是多跑局部再跑整板。全板仿真听起来严谨但耗时长、结果难以定位问题。我通常先选择问题较集中的电源域或者某一条高速链路跑通后再扩展到整板。局部仿真收敛了整板仿真基本也能过。第三个习惯是保存好每次仿真参数和版本信息。PowerDC和PowerSI的工程文件一定要带上日期和版本号。我这次做模型迭代时有几次改了叠层之后又跑回旧版本对比庆幸当时分开保存了工程否则对比曲线都找不到原始数据。6.3 关于收敛问题的更多经验仿真不收敛是高频词但大部分时候不是数学问题而是模型设置问题。常见的几个诱因包括电容模型是非物理的负值RLC、某个端口位置落在网格边界上、模型库里的S参数本身存在无源违规。排查的时候先打开仿真日志看求解器报的是哪个网络再把那个网络相关的模型逐个检查一遍。如果你做的是时域协同仿真还有一个技巧给模型设置初始条件避免上电瞬间出现突变。很多时域不收敛都是因为0时刻的巨大电压跳变导致的设置合理的初始电压和斜坡时间可以显著提高收敛率。我个人的习惯是保留一份“模型清单Excel”每次增删模型或更换模型文件后立即更新这样排查问题时可以快速确认当前用的是哪一版模型。听起来很基础但真的能救大命。做这条全流程走下来我最深的体会是Sigrity这套工具链的复杂点不在于单个功能难学而在于每一步的输入质量会直接影响下一步的结果。叠层对不对、模型全不全、铜皮边沿有没有破任何一点小瑕疵都会在下游被放大。所以如果你也想跑通从PowerDC到Broadband SPICE的完整链路我建议别急着追求复杂的仿真目标先把叠层、模型、电源树这三板斧磨利再往频率和时间域深入。后面你会慢慢发现真正有价值的仿真往往就是在这些基础工作扎实之后自然跑出来的。
返回列表