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里。到时候见!