3、电源网络层次结构:顶层电源分配、局部电源网络、标准单元电源轨
各位做后端的朋友,今天咱们聊聊电源网络的层次结构。说白了,就是搞清楚电是怎么从芯片的焊盘一路送到每个标准单元里的。
我刚开始接触这个的时候,觉得不就是拉几条金属线嘛,有什么难的?后来被现实狠狠教育了一回——有一次芯片跑起来,核心电压掉得厉害,直接导致时序崩溃。嗯,从那以后,我对电源网络的设计就再也不敢马虎了。
3.1 顶层电源分配:从焊盘到芯片的“主动脉”
顶层电源分配,我习惯叫它“全局电源网络”。它负责把芯片外部进来的电源,比如VDD和VSS,从焊盘(Pad)或者凸点(Bump)分配到芯片的各个区域。
你想想看,芯片那么大,电流从边上的焊盘进来,要送到最中心的位置,这中间得走多长的路?如果顶层金属线不够宽,电阻就会很大,电压降(IR Drop)就会很严重。
我个人习惯的做法是:
- 用顶层厚金属:比如M9、M10这些层,电阻小,能扛大电流。
- 做成网格状:横竖交叉,形成“电源环”和“电源条带”。这样电流可以从多个路径走,减少局部拥堵。
- 注意焊盘位置:如果焊盘都在芯片四周,那中心区域的供电就会比较吃力。我建议在芯片中间也加一些电源焊盘,或者用倒装焊(Flip-Chip)的凸点阵列。
关键指标:顶层电源网络的IR Drop目标,通常要控制在电源电压的3%~5%以内。比如1.0V的电压,压降不能超过50mV。
我在一个项目中遇到过,顶层电源网格的间距设计得太大了,结果芯片中心区域的电压直接掉了80mV。后来不得不加宽金属线,还多打了一堆过孔,才把压降降下来。那次之后,我设计顶层网格时都会留出20%的余量。
3.2 局部电源网络:连接顶层和标准单元的“毛细血管”
顶层电源把电送到了芯片的各个大区域,但还没到标准单元门口。这时候就需要局部电源网络了。
局部电源网络,说白了就是中间层的金属,比如M5到M8。它们把顶层网格的电源,进一步分配到更小的区域,比如一个功能模块或者一个时钟域。
这里有几个要点:
- 层次化设计:每个大模块内部,都要有自己的局部电源网格。我一般会在模块边界放一圈电源环(Power Ring),然后内部再用条带(Stripe)拉通。
- 过孔要够多:从顶层到局部层,电流要经过过孔(Via)。过孔电阻虽然小,但数量不够的话,电流密度会超标,甚至烧毁。我曾经因为过孔打少了,导致局部电源网络发热严重,差点流片失败。
- 注意EM(电迁移):局部金属层比顶层薄,电流密度上限更低。设计时一定要检查每条金属线的电流密度,别超了。
| 层次 | 典型金属层 | 主要作用 | 电流密度 |
|---|---|---|---|
| 顶层电源分配 | M9, M10 | 从焊盘到各区域 | 高 |
| 局部电源网络 | M5 ~ M8 | 模块内部分配 | 中 |
| 标准单元电源轨 | M1, M2 | 直接给单元供电 | 低 |
小技巧:局部电源网络的条带宽度,我一般取顶层条带宽度的1/3到1/2。太宽了浪费面积,太窄了压降大。
3.3 标准单元电源轨:送到每个晶体管的“最后一公里”
到了最底层,就是标准单元电源轨了。这部分用的是最底层的金属,通常是M1和M2。
标准单元库里的每个单元,比如反相器、与非门,它们的VDD和VSS引脚,就是通过M1的电源轨连起来的。你打开一个标准单元的版图,会看到上下两条长长的金属条,那就是电源轨。
这里有个常见的坑:
- 电源轨宽度固定:标准单元库的电源轨宽度是固定的,比如0.2μm。你不能随便改,否则单元放不进去。
- IR Drop最敏感:因为M1很薄,电阻大,所以这里的电压降最容易出问题。尤其是高密度使用的区域,比如CPU核心,M1电源轨上的压降可能占到总压降的一半以上。
- 注意单元高度:标准单元的高度决定了电源轨的间距。比如12轨单元和9轨单元,电源轨的间距不同,电流能力也不同。
我曾经调试过一个芯片,功能仿真全过,但实际测试时总有几个模块工作不正常。查了好久,最后发现是标准单元电源轨上的IR Drop太大了。因为那个模块的单元密度特别高,M1电源轨根本扛不住那么大的电流。后来我们不得不把那个模块的局部电源网格加密,多拉了几条M2的电源条带,才把问题解决。
避坑指南:我曾经在项目后期才发现标准单元电源轨的电流密度超标。那时候改版图代价巨大。所以我现在做设计,在布局阶段就会先跑一遍静态IR Drop分析,重点看M1电源轨的压降。如果某个区域压降超过10mV,我就会提前调整局部电源网络。
3.4 三个层次如何协同工作?
这三个层次不是孤立的,它们是一个整体。顶层网格负责“运输”,局部网络负责“分发”,标准单元轨负责“入户”。
我打个比方:顶层电源分配就像城市的主干道,车流大、速度快;局部电源网络就像小区里的支路,把车流分散到各个楼栋;标准单元电源轨就像每栋楼的入户电线,直接给每家每户供电。
设计时要注意的协同问题:
- 过孔密度要匹配:从顶层到局部层,再到M1,每一层之间的过孔数量要足够。否则就会“堵车”,电流过不去。
- 电压降要逐层分解:我一般会给每个层次分配一个IR Drop预算。比如顶层占2%,局部层占1.5%,标准单元轨占1.5%,加起来不超过5%。
- 动态响应要快:当标准单元瞬间需要大电流时(比如时钟翻转),电源网络要能快速响应。顶层和局部网络的寄生电感不能太大,否则电压会瞬间跌落。
嗯,说到这里,我想起一个教训。有次设计一个高性能芯片,顶层网格和局部网格都做得很好,但忽略了M1电源轨的寄生电阻。结果在动态仿真时,电压波动特别大,导致时序裕量不足。后来我们在M1上面加了一层M2的电源条带,相当于给“入户电线”加了一根辅助线,才把动态压降压下去。
所以,各位在设计电源网络时,一定要从顶层看到底层,三个层次都要照顾到。任何一个层次出问题,整个芯片的供电都会受影响。