布局规划的艺术:芯片尺寸与IO规划、宏单元摆放策略、电压域与功耗域划分

各位好,欢迎来到布局规划这一讲。

说实话,布局规划是整个后端流程里最像「艺术」的环节。为什么这么说?因为同样的网表,给两个不同的工程师做,出来的芯片面积和性能可能差很多。我见过太多项目,前期floorplan没做好,后面跑时序跑到吐血,最后只能改版。

今天我们就来聊聊布局规划里的三个核心问题:芯片尺寸怎么定、IO怎么摆、宏单元怎么放,以及电压域怎么划分。

一、芯片尺寸与IO规划

芯片尺寸,说白了就是你的芯片要多大。这个尺寸不是随便定的,它直接决定了成本——面积越大,成本越高。

芯片尺寸的计算

我个人习惯先算一个理论最小值。公式很简单:

芯片面积 = (标准单元总面积 + 宏单元总面积) / 利用率

利用率一般取0.6到0.8之间。为什么不是100%?你想想看,布线需要空间,时钟树需要空间,还有各种绕线通道。我刚开始做的时候,利用率设到0.85,结果布线阶段发现根本走不通,最后硬生生把芯片拉大了10%。

IO规划的几个原则

  • IO类型分区:数字IO、模拟IO、电源IO要分开。混在一起的话,噪声耦合会让你头疼。
  • 信号流向:输入IO尽量靠近接收模块,输出IO靠近驱动模块。这个道理很简单,但我在项目中见过有人把高速输入IO放在芯片最远端,结果信号绕了大半个芯片才到核心逻辑。
  • 电源IO均匀分布:电源IO不能扎堆,否则IR drop会非常严重。我记得有个项目,电源IO只放在芯片两侧,结果中间区域的电压降了15%,直接导致功能失效。

经验之谈:IO pad的间距要留够。我曾经为了省面积,把IO pad间距压到最小,结果封装厂说bonding wire会短路,最后只能重新改版。这个教训让我记住了:IO间距至少要留出封装工艺要求的1.2倍。

二、宏单元摆放策略

宏单元(比如SRAM、PLL、ADC)是芯片里的「大块头」。它们怎么摆,直接决定了布线的难度和时序的好坏。

宏单元摆放的核心原则

  1. 靠近相关逻辑:SRAM要靠近使用它的逻辑模块。比如CPU的cache SRAM,一定要放在CPU附近。我见过有人把SRAM放在芯片角落,结果地址线和数据线绕了大半个芯片,延迟直接超标。
  2. 留出布线通道:宏单元之间要留出足够的空间给标准单元和布线。一般来说,宏单元之间至少留出2-3个track的宽度。
  3. 对齐电源网络:宏单元的电源引脚要和芯片的电源网络对齐。否则你需要在宏单元上方额外走电源线,浪费资源。

小技巧:摆放宏单元时,可以先做一个粗略的时序分析。把关键路径上的宏单元尽量靠近放,这样可以减少互连线延迟。我习惯在floorplan阶段就跑一遍快速时序,看看有没有明显的长路径。

宏单元摆放的避坑指南

我曾经犯过一个错误:把两个大SRAM并排放在一起,中间只留了一条窄通道。结果布线阶段发现,这条通道根本不够走线,所有信号都要绕到外面去,导致时序全面崩溃。后来我学乖了,宏单元之间至少留出3倍于标准单元高度的空间。

三、电压域与功耗域划分

现在的先进工艺,动不动就是多电压域设计。为什么要分电压域?说白了就是为了省电。核心逻辑跑0.8V,IO跑1.8V,有些模块甚至可以关掉电源。

电压域划分的原则

  • 相同电压的模块放一起:这样可以共用电源网络,减少电源域切换的开销。
  • 电压域之间要留隔离区:不同电压域之间需要level shifter和isolation cell。这些cell要放在边界上,而且要有足够的空间。
  • 考虑IR drop:电压域越小,IR drop越容易控制。我见过一个项目,把整个芯片分成6个电压域,每个域都单独供电,结果IR drop控制得很好,但电源网络复杂度也上去了。
电压域 典型电压 适用模块
核心域 0.7V - 0.9V CPU、GPU、DSP
IO域 1.8V - 3.3V GPIO、DDR接口
模拟域 1.2V - 1.8V PLL、ADC、DAC
待机域 0.6V - 0.8V 唤醒逻辑、RTC

功耗域划分的注意事项

功耗域和电压域不太一样。功耗域是可以独立开关的模块。比如手机的WiFi模块,不用的时候可以关掉电源。

划分功耗域时,要注意以下几点:

  • 每个功耗域要有独立的电源开关:这个开关一般用header cell或footer cell实现。
  • 功耗域之间要有隔离逻辑:当一个域断电时,它的输出不能影响到其他域。这个靠isolation cell实现。
  • 考虑唤醒时间:功耗域从断电到恢复供电需要时间。如果唤醒时间太长,会影响用户体验。

警告:功耗域划分不是越多越好。每个功耗域都需要额外的控制逻辑和电源网络。我见过一个项目,分了20多个功耗域,结果控制逻辑的面积占了芯片的15%,得不偿失。一般来说,5-8个功耗域是比较合理的范围。

总结

布局规划这件事,说白了就是平衡的艺术。你要在面积、性能、功耗之间找到最优解。我做了十几年后端,最大的体会是:不要追求完美,要追求可行。有时候一个「差不多」的floorplan,比一个「完美」但实现不了的floorplan要好得多。

嗯,今天就聊到这里。下一讲我们会深入讨论时钟树综合,那又是一个让人又爱又恨的话题。

课后思考:如果你有一个包含4个SRAM和2个PLL的芯片,你会怎么摆放它们?试着画一个floorplan草图,然后想想为什么这么摆。