4、电源网络设计流程:从floorplan到signoff的电源网络设计步骤

电源网络设计,说白了就是给芯片里的每个晶体管「喂电」。你想想看,几亿甚至几十亿个管子挤在一块硅片上,要是供电不均匀,有的地方电压高、有的地方电压低,那芯片根本没法正常工作。

我刚开始做后端那会儿,总觉得电源网络不就是铺几层金属嘛,有啥难的?直到有一次项目,芯片在低频测试时一切正常,一跑高频就随机出错。查了整整两周,最后发现是IR drop在某个角落超标了。嗯,从那以后,我再也不敢小看电源网络设计了。

今天我就把从floorplan到signoff的完整电源网络设计流程,掰开揉碎了讲给你听。

4.1 电源网络设计的总览

整个流程可以分成五个关键阶段:

  1. 规划阶段 — 在floorplan中确定电源架构
  2. 实现阶段 — 物理生成电源网络(PG mesh)
  3. 分析阶段 — 检查IR drop和EM
  4. 优化阶段 — 针对问题做局部修补
  5. 签核阶段 — 最终验证并输出

每个阶段都有坑,我一个个说。

4.2 第一步:Floorplan中的电源规划

这一步通常在芯片面积规划的同时进行。我个人习惯是先看两个东西:

  • 芯片的总功耗 — 决定了你需要多粗的电源线
  • 电压域分布 — 不同电压的区域要物理隔离

举个例子,一个典型的SoC可能有1.8V的IO域、0.9V的内核域、还有0.6V的SRAM域。这些域之间必须用电源环(power ring)隔开。

关键动作:

  • 在芯片四周放置PAD或 bump,确定供电入口
  • 规划电源环(VDD/VSS ring)的宽度和层数
  • 确定每个电压域的电源条带(power stripe)间距

我曾经在一个项目中,因为急着赶进度,把电源环宽度估小了20%。结果后面IR drop分析时发现边缘区域电压掉了15%,不得不重新改floorplan。那叫一个惨。

4.3 第二步:电源网络实现(PG Mesh)

这一步就是实际「画」电源线了。工具会用你给的约束,自动生成电源网络。

核心参数有三个:

参数 说明 我的经验值
线宽 电源线的物理宽度 一般取最小宽度的5-10倍
间距 相邻电源线的中心距 50-100μm(看工艺)
层数 使用哪些金属层 顶层金属为主,底层为辅

这里有个技巧:顶层金属走宽线,底层金属走密线。为什么?顶层电阻小,适合长距离传输;底层电阻大,但可以密集分布,给标准单元就近取电。

// 一个典型的电源网络脚本片段(Innovus)
create_power_stripe -direction vertical \
    -layer M6 -width 2.0 -spacing 50.0 \
    -nets {VDD VSS} -start_x 10.0 -stop_x 1000.0

create_power_stripe -direction horizontal \
    -layer M5 -width 1.0 -spacing 30.0 \
    -nets {VDD VSS} -start_y 10.0 -stop_y 800.0

嗯,这里要注意:VDD和VSS的线要尽量对称。不对称会导致电流回路不平衡,产生额外的电感效应。

4.4 第三步:IR Drop分析

电源网络画完了,不代表就完事了。你得验证它到底能不能用。

IR drop分析,说白了就是算一下从供电入口到每个晶体管的电压损失。我一般分两步走:

  • 静态IR drop — 用平均电流算,速度快,适合早期评估
  • 动态IR drop — 考虑开关活动,更准确,但慢

我的习惯:先跑静态IR drop,如果最大压降超过3%,再跑动态分析。别一上来就跑动态,那会等死你。

分析结果通常用热力图展示。红色区域就是电压偏低的地方。我见过最夸张的一次,某个模块的VDD从1.0V掉到了0.82V,整整18%的压降。那片子后来果然挂了。

4.5 第四步:电迁移(EM)检查

IR drop看的是电压,EM看的是电流密度。电流太大了,金属线会慢慢「迁移」断掉。

EM检查通常关注:

  1. 电源线的平均电流密度 — 不能超过工艺厂给的限值
  2. 过孔(via)的电流密度 — 过孔往往是瓶颈
  3. 峰值电流 — 瞬间大电流也可能造成损伤

我记得有个项目,IR drop完全没问题,但EM检查发现某条M2电源线的电流密度超标了2倍。原因是那个区域的标准单元太密集,所有电流都挤在一条窄线上。解决办法很简单:在旁边加一条平行的电源线,分流就好了。

警告:EM问题不能只看平均值。有些工艺对峰值电流也有要求。我曾经吃过这个亏,平均电流没问题,但峰值电流把过孔烧了。从那以后,我每次都会检查峰值EM。

4.6 第五步:电源网络优化

分析发现问题了,就得改。常见的优化手段有:

  • 加宽电源线 — 最直接,但占面积
  • 增加电源条带 — 减小间距,提高供电密度
  • 加strap — 在局部区域加额外的电源环
  • 调整标准单元摆放 — 把高功耗单元分散开

我个人最喜欢的是「局部加strap」。为什么?因为全局改线宽会影响所有地方,而局部加strap只改有问题的那一小块,对面积影响最小。

举个例子,如果某个模块的IR drop超标,我会在它周围加一圈VDD/VSS strap,像给这个模块单独拉了一根「专线」供电。效果立竿见影。

4.7 第六步:Signoff验证

这是最后一步,也是最严格的一步。Signoff阶段要做的事情:

  1. 全芯片IR drop分析 — 带上所有电压域,考虑最差工况
  2. 全芯片EM检查 — 所有金属层、所有过孔都要过
  3. 电源网络完整性检查 — 有没有浮空的线?有没有短路的?
  4. ESD检查 — 电源网络要能承受静电放电

这里有个坑:signoff分析用的工艺角要选对。一般来说,IR drop最差的情况是低温、高电压(因为电流大);EM最差的情况是高温(因为金属迁移加速)。

签核标准(参考值):

  • 静态IR drop:≤ 5% VDD
  • 动态IR drop:≤ 10% VDD
  • EM:满足工艺厂给的限值(通常有1.0-1.5倍安全裕度)

我一般会在signoff时留10%的裕度。比如工艺厂说最大电流密度是1mA/μm,我就按0.9mA/μm来设计。为什么?因为仿真模型和实际芯片总有偏差,留点余量心里踏实。

4.8 总结一下

电源网络设计,从floorplan到signoff,其实就是一个「规划→实现→验证→优化→再验证」的循环。你想想看,每一步都有坑,但每一步也都有对应的解法。

最后送大家一句话:电源网络是芯片的血管,血管堵了,再好的心脏也白搭。设计时多花点心思在电源网络上,后面流片回来的成功率会高很多。

下一章我会讲电源网络中的去耦电容设计,那是解决动态IR drop的利器,敬请期待。