4、Floorplan规划基础:芯片面积估算,IO规划,Macro摆放原则,电源网络规划。
各位同学,咱们今天聊聊Floorplan。说白了,这就是给芯片“画地皮”。你想想看,一块芯片就那么点大,你要把几千万甚至上亿个晶体管塞进去,还得让它们跑得又快又省电。这第一步要是没走好,后面布线、时钟树、时序收敛,全得跟着遭殃。
我刚开始做后端那会儿,带我的师傅就跟我说:“Floorplan做得好,后端下班早。”当时我还不太信,觉得不就是摆几个大模块嘛。直到有一次,我因为Macro摆得太挤,导致电源网络过不去,最后整个芯片的IR Drop超标,不得不重来一遍。嗯,从那以后,我再也不敢小看Floorplan了。
4.1 芯片面积估算:别把房子盖小了
面积估算,是Floorplan的第一步。你总得知道你的芯片大概要占多大地方,才能去规划IO和Macro吧?
我个人习惯,先算一个“核心面积”的底数。公式很简单:
Core Area = (Total Gate Count × Gate Pitch) / Utilization
这里的Utilization(利用率)是关键。它不是你随便拍脑袋定的,得看你的设计里有多少“硬核”的东西。
| 设计类型 | 典型利用率范围 | 说明 |
|---|---|---|
| 纯标准单元(如逻辑控制) | 70% ~ 80% | 标准单元可以挤一挤,但别太狠 |
| 含少量Macro(如SRAM) | 60% ~ 70% | Macro周围要留通道,利用率得降 |
| 含大量Macro(如AI加速器) | 50% ~ 60% | Macro多,布线资源紧张,得留余量 |
我在项目中遇到过一种情况:客户给的面积预估太乐观,利用率定到了85%。结果Floorplan做到一半,发现标准单元根本塞不下,Macro之间的通道窄得连一根线都走不通。最后只能改封装、改尺寸,项目延期了一个月。所以,面积估算,宁可多留10%,也别少算5%。
4.2 IO规划:芯片的“嘴巴”和“耳朵”
IO Pad怎么摆,直接决定了你的芯片能不能跟外界“说话”。这里头有几个原则,是我这些年总结出来的:
- 信号分组:把同类型的信号放在一起。比如DDR接口、PCIe接口、GPIO,各占一个区域。别把高速信号和低速信号混在一起,不然串扰会让你头疼。
- 电源IO均匀分布:VDD和VSS Pad不能扎堆。你得让它们均匀地分布在芯片四周,这样才能保证核心区域的供电稳定。我见过一个设计,电源Pad全挤在左边,结果右边区域的IR Drop直接超标20%。
- 高速信号优先:时钟、高速数据线,尽量放在芯片边缘的中间位置,离核心逻辑近一些。这样能减少走线长度,降低延迟。
举个例子,一个典型的SoC芯片,IO规划大概长这样:
+--------------------------------------------------+
| VDD | DDR | DDR | DDR | VSS | PCIe |
+--------------------------------------------------+
| GPIO | | USB |
| | Core Area | |
| VSS | (Standard Cells + Macros) | VDD |
| | | |
| PLL | | ETH |
+--------------------------------------------------+
| VDD | MIPI | MIPI | VSS | I2C | SPI |
+--------------------------------------------------+
你看,电源IO(VDD/VSS)是分散的,高速接口(DDR、PCIe)放在边缘中间,低速接口(I2C、SPI)放在角落。这样既保证了供电,又减少了信号干扰。
4.3 Macro摆放原则:大块头要有大智慧
Macro(比如SRAM、ROM、PLL、ADC)是芯片里的“大块头”。它们体积大、功耗高、而且对周围环境敏感。摆不好,整个芯片的时序和功耗都会出问题。
我总结了三条Macro摆放的“黄金法则”:
- 靠边站:Macro尽量放在芯片边缘或角落。把中间的核心区域留给标准单元。这样能减少Macro对标准单元布线的干扰。
- 留通道:Macro之间、Macro与芯片边缘之间,要留出足够的“布线通道”。我一般至少留3~5倍标准单元高度的空间。不然你会发现,Macro周围的线根本走不通。
- 同类型扎堆:同一种类型的Macro(比如多个SRAM)尽量放在一起。这样电源网络可以共用,时钟树也能做得更对称。
我曾经犯过一个错:把一个PLL Macro放在了芯片正中央。结果呢?PLL的模拟电源跟数字电源混在一起,噪声大得离谱,时钟抖动直接超标。后来我花了整整两周,才把那个PLL挪到角落,重新做了电源隔离。所以,敏感Macro(PLL、ADC、DAC)一定要远离数字逻辑的“闹市区”。
4.4 电源网络规划:芯片的“血管”
电源网络,就是芯片的血管。它负责把电流从IO Pad送到每一个标准单元和Macro。如果血管堵了(IR Drop大),或者血管太细(电迁移问题),芯片就会“心肌梗塞”。
电源网络规划,通常分三步走:
- 顶层电源环(Power Ring):围绕芯片核心区域,用宽金属线(通常是顶层金属)围一圈。这相当于主动脉,负责从IO Pad接收电流。
- 电源条带(Power Stripe):在核心区域内,每隔一段距离(比如50~100μm)拉一条垂直或水平的宽金属线。这相当于动脉,把电流送到各个区域。
- 标准单元电源轨(Power Rail):在标准单元的行内,用最底层金属(M1)拉一条细线。这相当于毛细血管,直接给每个单元供电。
这三层结构,缺一不可。我见过一些新手,只做了顶层电源环,忽略了内部的电源条带。结果呢?芯片边缘的单元供电正常,但中心区域的单元电压直接掉到了0.9V(目标1.1V),整个芯片逻辑都乱了。
下面这张图,展示了电源网络的层级关系:
在实际项目中,电源网络的宽度和间距,需要通过IR Drop分析来迭代优化。我一般先按经验值(比如每50μm拉一条10μm宽的电源条带)搭一个初始网络,然后跑IR Drop仿真。如果发现某个区域电压偏低,就在那里加宽或加密电源条带。
4.5 本章小结
Floorplan规划,说白了就是四个字:全局把控。面积估算要留余量,IO规划要分组均匀,Macro摆放要隔离留通道,电源网络要分层设计。每一步都环环相扣,一步错,步步错。
我记得有一次,一个项目因为Floorplan没做好,导致后端迭代了整整8轮才收敛。而另一个项目,因为前期Floorplan考虑周全,后端只跑了3轮就顺利tapeout。差距在哪?就在这些细节里。