4、Floorplan规划艺术:芯片布局规划,决定芯片面积和性能的第一步
大家好,我是你们的数字后端工程师朋友。今天咱们聊聊Floorplan,也就是芯片布局规划。
很多人觉得Floorplan就是随便摆摆模块,其实不然。我个人的经验是,这一步做得好,后面省心一半;做得不好,后面天天加班改时序。说白了,Floorplan就是给芯片“画格子、定位置”,它直接决定了芯片的面积和性能。
4.1 什么是Floorplan?
Floorplan,中文叫“布局规划”。你可以把它想象成装修房子时的户型设计。你得先确定客厅、卧室、厨房的位置,然后才能开始布线、放家具。
在芯片里,Floorplan要干三件事:
- 确定芯片的尺寸——芯片要做多大?
- 摆放宏单元——比如SRAM、PLL、ADC这些大块头放哪里?
- 规划电源网络——电怎么送进去?
嗯,这里要注意:Floorplan不是一次搞定的。我习惯先粗后细,先定大框架,再慢慢调细节。
4.2 芯片面积怎么算?
芯片面积 = 核心面积 + IO环面积 + 预留空间。
核心面积是逻辑电路占的地方。IO环是芯片四周的接口。预留空间是给后期优化留的“余量”。
我遇到过最头疼的事,就是前期面积估得太紧,结果后面加功能没地方放。所以我的建议是:预留10%-15%的空白区域,别把芯片塞得太满。
核心公式:
芯片面积 ≈ (标准单元总面积 + 宏单元总面积) / 利用率
利用率一般取0.6~0.8,别超过0.85,否则布线会很难受。
4.3 宏单元摆放的讲究
宏单元是芯片里的“大胖子”,比如SRAM、ROM、DSP模块。它们不能随便放,得考虑:
- 数据流方向——数据从哪进,从哪出?宏单元要顺着数据流摆。
- 电源需求——大模块耗电多,得靠近电源焊盘。
- 时钟分布——时钟信号要均匀,宏单元别挡着时钟树。
举个例子,我之前做过一个AI加速芯片。SRAM模块特别多,我一开始把它们全堆在芯片中间,结果时钟走线绕了一大圈,时序直接崩了。后来我把SRAM分散到芯片四周,数据流顺了,时序也过了。
小技巧:
摆宏单元时,先画一个“数据流图”。把数据从输入到输出的路径画出来,然后沿着路径摆模块。这样能减少绕线,降低延迟。
4.4 电源网络规划
电源网络,说白了就是给芯片“供电的血管”。没有它,芯片就是一堆死电路。
电源规划要关注:
- 电源环——芯片四周的电源环,宽度要够,否则电流不够用。
- 电源条带——横竖交叉的电源线,像网格一样覆盖芯片。
- 去耦电容——在电源和地之间加电容,滤掉噪声。
我记得有一次,芯片功耗估算低了,电源环做得太细。结果流片回来,芯片一跑高频就掉电。从那以后,我每次做电源规划都留30%的余量。
避坑指南:
我曾经因为电源条带间距太大,导致芯片中心区域电压降严重。后来我规定:电源条带间距不超过100微米。这个经验值一直用到现在。
4.5 IO环与Pad规划
IO环是芯片和外界通信的“口岸”。Pad就是焊盘,用来打线或者焊球。
规划IO环时要注意:
- 信号分组——高速信号、低速信号、电源信号要分开。
- ESD保护——每个IO Pad都要有静电保护电路。
- Pad间距——太密了打线容易短路,太疏了浪费面积。
我一般先确定芯片的封装形式。如果是BGA封装,Pad可以密一点;如果是QFP封装,Pad就得稀一些。
4.6 一个简单的Floorplan示例
下面是一个简单的Floorplan脚本示例(用Tcl语言写的):
# 设置芯片尺寸
set die_width 2000
set die_height 2000
# 创建芯片边界
create_floorplan -core_margins {50 50 50 50} \
-die_size {0 0 $die_width $die_height}
# 摆放宏单元
place_macro -name SRAM0 -location {100 100}
place_macro -name SRAM1 -location {100 500}
place_macro -name PLL -location {1800 100}
# 创建电源环
create_ring -layer M1 -width 10 -spacing 5 \
-around core
# 创建电源条带
create_strap -layer M2 -width 5 -spacing 50 \
-direction vertical -start 100 -end 1900
这个脚本只是示意。实际项目中,Floorplan脚本可能有几百行。但核心逻辑不变:先定尺寸,再摆模块,最后布电源。
4.7 面积与性能的权衡
做Floorplan时,你经常会面临一个选择:要面积小,还是要性能好?
举个例子:
| 方案 | 面积 | 性能 | 适用场景 |
|---|---|---|---|
| 紧凑布局 | 小 | 一般 | 成本敏感型芯片 |
| 宽松布局 | 大 | 好 | 高性能芯片 |
| 混合布局 | 中等 | 较好 | 大多数芯片 |
我个人习惯用混合布局。关键路径上的模块放宽松点,非关键路径上的模块挤一挤。这样既能保证性能,又不会太浪费面积。
4.8 总结
Floorplan是芯片设计的“地基”。地基没打好,后面盖再高的楼也白搭。
最后送大家一句话:Floorplan不是一次完成的,而是反复迭代优化的过程。别怕改,改得越多,芯片越稳。
下一章,咱们聊聊Placement——怎么把标准单元塞进Floorplan里。到时候见!