4. 电源网格建模与视图创建

在完成电源规划(Power Planning)之后,设计者面对的核心问题从“电源怎么走”转变为“如何把电源网络准确描述给分析工具”。Cadence Voltus 并不直接读取版图中的金属几何来做全部计算,而是依赖一套结构化的电源网格模型——Power Grid Library(PGL)。PGL 是 Voltus 进行静态与动态 IR 分析、EM 分析的基础数据源,它把版图中的电源/地网络抽象为可计算的电阻网络、电流源与焊盘/凸点连接关系。本节围绕 PGL 的建模方法、电源焊盘与凸点(Bump/Pad)定义、以及网格视图的生成与检查展开,目标是让读者能够独立完成一个可被 Voltus 正确读取的电源网格视图。

一、Power Grid Library 的建模对象与数据来源

PGL 本质上是一个描述电源分配网络(PDN)拓扑与电学参数的库。它包含三类核心信息:网格导体(Grid Conductors)、连接点(Connection Points)和激励与负载(Sources & Loads)。网格导体来自各金属层(如 M1~M9、RDL、AP)上的电源条带(Strap)与网格(Mesh),每条导体被抽象为具有电阻的线段;连接点包括过孔(Via)阵列、焊盘(Pad)和凸点(Bump);激励与负载则来自标准单元、宏单元(Macro)的电源引脚电流需求以及外部电源输入。

Voltus 支持多种 PGL 生成路径,常见的有:

  • 基于 DEF/LEF 的自动抽取:从 P&R 输出的 DEF 中读取 SPECIALNETS 与 PINS,结合 LEF 中的金属层电阻参数(RPERSQ)自动构建网格。
  • 基于 GDS/LEF 的几何抽取:当 DEF 中电源网络信息不完整时,从 GDS 中按层抽取电源金属图形,再映射为导体。
  • 基于 CPF/UPF 的电源意图导入:读取电源域、电源开关(Power Switch)与 Always-On 逻辑的定义,补充 PGL 中的电源状态信息。
  • 手工脚本建模:通过 Tcl 命令直接创建导体、焊盘与连接关系,适用于早期规划或特殊结构。

实际项目中,最常用的是第一种路径。Voltus 通过 read_def 与 read_lef 读入设计,再用 create_power_grid 或 build_pg_library 命令生成 PGL。生成过程中,工具会按金属层计算每条线段的方块数(Squares),再乘以该层的方块电阻得到线段电阻。例如某层 RPERSQ = 0.08 Ω/sq,一条宽 0.5 μm、长 100 μm 的电源条带,方块数为 100/0.5 = 200,电阻约为 16 Ω。这个数值会直接进入后续 IR 求解矩阵。

二、电源焊盘与凸点的定义

电源焊盘(Power Pad)与凸点(Bump)是 PDN 与外部电源之间的物理接口,也是 IR 分析的边界条件。在 PGL 中,它们被定义为外部电源连接点,需要明确三个属性:位置、所属电源网络、以及等效电阻/电感。

对于倒装芯片(Flip-Chip)设计,凸点通常分布在芯片表面,通过 RDL 或 AP 层与内部网格连接。Voltus 中可通过 create_bump 命令定义凸点,关键参数包括:

  • -name:凸点名称,如 VDD_BUMP_0;
  • -location:坐标 (x, y),单位与设计数据库一致;
  • -net:所属电源网络,如 VDD 或 VSS;
  • -resistance:凸点自身电阻,典型值 5~20 mΩ;
  • -inductance:封装引线电感,动态分析时使用,典型值 10~100 pH。

对于引线键合(Wire-Bond)设计,电源焊盘位于芯片边缘,通过 create_pad 定义,除位置与网络外,还需指定焊盘到内部网格的连接层与连接电阻。一个常见的教学示例是:某 10 mm × 10 mm 芯片,VDD 凸点 64 个,均匀分布在 8×8 阵列上,每个凸点电阻 10 mΩ,总等效外部电阻约 0.156 mΩ(并联)。这个值会显著影响芯片边缘与中心的 IR 分布。

凸点/焊盘定义必须与版图实际位置一致。若坐标偏移超过半个凸点间距,Voltus 会报连接错误或产生虚假的高阻节点,导致 IR 结果失真。

三、网格视图生成与检查

PGL 生成后,Voltus 会创建一个电源网格视图(Power Grid View),它是 PGL 在内存中的可视化与可查询表示。生成命令通常为 generate_pg_view,执行后可通过 report_pg_view 输出统计信息,或用图形界面查看网格拓扑。

检查网格视图时,应重点关注以下几类问题:

  • 孤立节点(Floating Node):某些导体未与任何电源或负载连接,会导致求解矩阵奇异。可用 check_pg_connectivity 报告。
  • 高阻连接(High-Resistance Connection):过孔数量不足或连接层选择错误,使局部电阻异常偏高。典型判据是某节点到最近凸点的等效电阻超过设计预算的 2 倍。
  • 网络短路(Short):VDD 与 VSS 网格在某一层意外重叠。Voltus 会通过几何布尔运算检测并报告坐标。
  • 缺失负载(Missing Load):宏单元或标准单元的电源引脚未映射到网格,导致局部电流为 0。可通过 report_power_switch 与实例电源引脚比对。

下面这张图展示了一个典型的 PGL 建模与视图生成流程,以及各阶段的关键检查点。图中左侧为数据输入,中部为 PGL 构建,右侧为视图生成与检查,底部标注了常见的异常类型与对应命令。

Power Grid Library 建模与视图生成流程 数据输入 DEF (SPECIALNETS/PINS) LEF (RPERSQ / 层定义) CPF/UPF (电源域) GDS (可选几何) PGL 构建 导体抽取 (Strap/Mesh) 过孔/Via 阵列映射 电阻计算 R = Nsq × RPERSQ 负载/激励关联 焊盘/凸点定义 create_bump / create_pad 位置 (x, y) + 网络 R_bump 5~20 mΩ L_bump 10~100 pH 视图 生成 generate _pg_view report 网格视图检查项与异常处理 孤立节点 Floating Node check_pg_connectivity 高阻连接 Via 不足 / 层错 R > 2× 预算 网络短路 VDD/VSS 重叠 几何布尔检测 缺失负载 引脚未映射 report_power_switch 检查通过 → 进入 IR 分析 检查失败 → 修正 PGL / 凸点定义后重新生成视图

四、实操要点与常见问题

在实际项目中,PGL 建模最容易出问题的环节是层映射与过孔阵列简化。Voltus 默认会将密集的过孔阵列合并为一个等效电阻,但如果合并阈值设置不当,可能把本应独立的两个网络合并,造成短路误报。建议在 set_pg_library_mode 中显式指定 -via_merge_distance,通常取过孔间距的 1/2 以下。

另一个常见问题是电源焊盘与内部网格的连接层选择。对于 Flip-Chip,凸点通常先连接到 RDL,再通过 AP 层进入内部网格。如果 create_bump 时未指定 -layer,Voltus 会按默认层序查找,可能连接到错误的金属层,导致等效电阻偏差数倍。建议在定义凸点时明确写出连接层,例如 -layer AP。

网格视图生成后,建议先用 report_pg_view -summary 查看导体总数、节点总数、凸点数量与总等效电阻,再与版图预期值比对。若总等效电阻与手算值偏差超过 20%,通常说明有导体未被正确抽取或过孔合并过度。此时可导出 SPICE 网表(write_pg_spice)进行小规模验证,确认关键路径的电阻值是否合理。

PGL 一旦生成,后续 IR 分析的所有结果都基于它。若 PGL 中遗漏了某层电源网格,IR 分析会显示该区域电压降异常小,造成“结果很好”的假象。因此,网格视图检查不是可选项,而是必须完成的步骤。

总结来说,Power Grid Library 建模的核心是把版图电源网络转化为可计算的电阻网络,电源焊盘与凸点定义决定了外部边界条件,而网格视图生成与检查则是保证分析可信度的最后一道关口。掌握这三步,才能让后续的静态 IR、动态 IR 与 EM 分析建立在可靠的数据基础之上。