一、布局规划概述:芯片布局规划的目标与意义

各位同学好,我是老李。做芯片后端设计十几年了,今天咱们聊聊布局规划。

布局规划,英文叫 Floorplan。说白了,就是给芯片里的各个模块找个合适的位置。你想想看,一个芯片上几百个模块,谁放左边、谁放右边、谁挨着谁,这可不是随便摆的。

我刚开始做这行的时候,带我的师傅跟我说过一句话,我一直记到现在:「Floorplan 做得好,后面省心一大半;Floorplan 做不好,后面天天加班到天亮。」 这话一点不夸张。

1.1 芯片布局规划的目标与意义

布局规划到底要解决什么问题?我总结了三件事:

  • 面积要够用 —— 每个模块都得有地方放,不能挤在一起
  • 连线要顺畅 —— 模块之间的连线不能绕太远,否则时序跑不过
  • 散热要均匀 —— 高功耗模块不能扎堆,否则芯片会烧

嗯,这里要注意,布局规划不是一次就能搞定的。我见过很多新手,上来就想一步到位,结果后面发现走不通,又得重来。其实这很正常,布局规划本身就是一个迭代的过程。

核心目标:在满足面积、时序、功耗、信号完整性等约束的前提下,为后续的物理实现(时钟树综合、布线等)创造最优条件。

我个人习惯把布局规划比作「盖房子打地基」。地基没打好,后面装修得再好也没用。芯片设计也是一样,Floorplan 没做好,后面 CTS、Route 做得再漂亮,最后流片回来可能还是废片。

1.2 布局规划在物理设计流程中的位置

咱们来看看整个物理设计流程:

步骤 名称 说明
1 数据准备 导入网表、库文件、约束等
2 布局规划 确定芯片尺寸、IO位置、模块摆放、电源网络
3 标准单元布局 将标准单元放置到行上
4 时钟树综合 构建时钟网络
5 布线 完成信号连接
6 物理验证 DRC、LVS 检查

看到了吧?布局规划排在第 2 步。但你别小看这一步,它直接影响后面所有步骤的成败。

我记得有一次做项目,一个同事急着赶进度,Floorplan 随便摆了一下就往下跑了。结果呢?标准单元布局的时候发现面积不够,硬塞进去之后,CTS 阶段发现时钟偏差太大,最后布线阶段根本走不通。前前后后折腾了三个星期,最后还是回到 Floorplan 重新来过。

所以我的建议是:在 Floorplan 阶段多花点时间,后面反而能省更多时间。

1.3 布局规划的核心挑战

做布局规划,说白了就是在各种矛盾中找平衡。我给大家列几个最常见的挑战:

  • 面积 vs 性能 —— 芯片面积越小越好,但面积小了,模块挤在一起,连线变长,时序就差了
  • 功耗 vs 散热 —— 高功耗模块需要分散放置,但分散了又会导致连线变长
  • 信号完整性 vs 布线资源 —— 关键信号需要屏蔽保护,但屏蔽会占用布线通道
  • 宏单元摆放 vs 标准单元区域 —— 宏单元(SRAM、PLL 等)放哪里,直接影响周围标准单元的密度

避坑指南:我曾经犯过一个错误,把两个大功耗的模块放在了一起,结果局部温度过高,导致时序漂移。后来我学乖了,做 Floorplan 之前一定会先看功耗分布图,把高功耗模块尽量分散开。

为什么会这样?其实道理很简单。芯片内部的温度分布是不均匀的,高功耗模块周围温度会明显升高。温度一高,晶体管的阈值电压就会变化,延迟就会增加。你想想看,本来时序刚好能跑过的路径,温度一上来就崩了。

还有一个挑战是 IO 规划。IO 的位置不是随便定的,要考虑 PCB 板的布局。我见过一个项目,芯片内部 Floorplan 做得很好,结果 IO 位置跟 PCB 板对不上,最后只能重新做封装设计,白白浪费了一个月。

注意事项:在做 IO 规划之前,一定要跟封装团队和 PCB 设计团队充分沟通。别自己闷头做,否则后面吃亏的是你自己。

嗯,说到这儿,我想起一个经验。做布局规划的时候,我习惯先画一个「草图」,就是用纸笔把各个模块的大致位置画出来。别笑,这个方法虽然土,但真的管用。画完之后,你脑子里就有了一个整体的概念,再用工具去实现就顺手多了。

最后总结一下:布局规划不是一蹴而就的事,它需要你不断地权衡、迭代、优化。 刚开始做的时候可能会觉得无从下手,但多做几个项目,慢慢就有感觉了。

下一章咱们聊聊 IO 规划的具体方法,包括 IO 类型、IO 摆放原则、以及 IO 与核心区域的交互。到时候我会拿一个实际项目案例来讲解,保证干货满满。


公众号:蓝海资料掘金营,微信deep3321