4、布局规划基础:芯片面积估算、IO规划、宏单元(Macro)摆放原则

布局规划,说白了就是给芯片“画地皮”。你想想看,一块芯片就那么点大,里面要塞几亿甚至几十亿个晶体管,怎么塞、塞哪里,全看这一步。我做了十几年后端,见过太多因为布局规划没做好,后面绕线绕到崩溃的项目。今天咱们就聊聊这块的核心内容。

4.1 芯片面积估算——别让“面积”成为你的噩梦

面积估算,是布局规划的第一步。也是很多新手容易翻车的地方。

核心公式其实很简单:

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

嗯,这里要注意。利用率不是你想设多少就设多少的。我习惯把利用率控制在 70%~80% 之间。为什么?

  • 利用率太高(>85%): 绕线资源紧张,后期大概率要手动调,甚至可能无法收敛。
  • 利用率太低(<60%): 芯片面积浪费,成本上去了,老板会找你谈话的。

重要经验: 我在项目中遇到过,一个客户非要压到 90% 的利用率,结果绕线阶段 DRC 错误满天飞,最后不得不重新做布局规划,工期延误了两周。所以,别贪那点面积,留点余量是给自己留后路。

面积估算的步骤,我一般这么来:

  1. 统计标准单元面积: 从综合后的网表里,把每个标准单元的尺寸加起来。工具一般会给你一个报告。
  2. 统计宏单元面积: 包括 SRAM、PLL、ADC/DAC 等。这些尺寸是固定的,直接加。
  3. 估算布线通道面积: 这个比较玄学。我一般按标准单元面积的 20%~30% 来估算。如果设计里信号线特别多,就取上限。
  4. 除以利用率: 得到最终面积。

小技巧: 如果你用的是先进工艺(比如 7nm 以下),布线通道面积占比会更高。我建议你至少留 35% 的余量。别问我怎么知道的,都是泪。

4.2 IO规划——芯片的“门面”怎么摆?

IO 规划,就是决定芯片的输入输出端口放在哪。这步做不好,芯片跟外部电路连不上,或者信号质量差,那可就麻烦了。

IO 规划的几个原则:

  • 电源/地 IO 要均匀分布: 别把所有电源 IO 挤在一侧。否则芯片中间区域的供电会出问题。我见过一个设计,电源 IO 全放在左边,结果右边逻辑单元电压降了 10%,直接功能失效。
  • 高速信号 IO 要远离噪声源: 比如时钟 IO 要远离开关电源的 IO。否则串扰会让你头疼。
  • IO 分组要合理: 同一个功能模块的 IO 尽量放在一起。比如 DDR 接口的 IO 集中在一侧,这样布线也方便。

警告: 我曾经犯过一个错误,把模拟信号的 IO 和数字信号的 IO 混在一起。结果模拟信号被数字噪声干扰得一塌糊涂。从那以后,我坚持模拟和数字 IO 分区摆放,中间至少隔一组电源 IO。

IO 规划的流程:

  1. 确定 IO 类型: 信号 IO、电源 IO、地 IO、时钟 IO 等。
  2. 确定 IO 数量: 每个类型有多少个。
  3. 确定 IO 位置: 根据芯片封装形式(比如 BGA、QFP)和 PCB 布局要求来定。
  4. 检查 IO 约束: 比如 IO 之间的最小间距、ESD 保护要求等。

核心要点: IO 规划不是孤立的。你要跟封装工程师、PCB 设计师多沟通。我习惯在项目初期就拉一个微信群,把相关人都拉进来。别等到布局规划做完了,才发现 IO 位置跟封装不匹配,那就尴尬了。

4.3 宏单元(Macro)摆放原则——大块头要有大智慧

宏单元,比如 SRAM、ROM、PLL,这些家伙面积大、功耗高、信号敏感。摆不好,整个芯片的性能都会受影响。

宏单元摆放的“黄金法则”:

  • 靠近芯片边缘: 宏单元一般放在芯片四周,把中间区域留给标准单元。这样布线资源更均衡。
  • 避免形成“通道”: 两个宏单元之间不要留太窄的通道。否则标准单元塞不进去,布线也困难。我建议通道宽度至少是标准单元高度的 4~5 倍。
  • 考虑供电: 宏单元功耗大,需要足够的电源网络。我习惯在宏单元周围多放一些电源 IO 和去耦电容。
  • 信号流向要清晰: 宏单元的输入输出方向要跟数据流方向一致。比如数据从左边进、右边出,那宏单元就摆成横向的。

个人经验: 摆 SRAM 的时候,我一般会留出“布线通道”。什么意思呢?就是 SRAM 周围留一圈空白区域,专门用来走信号线。这样能避免信号线在 SRAM 上方绕来绕去,减少延迟和串扰。

宏单元摆放的检查清单:

检查项 说明
宏单元间距 至少 5~10 倍标准单元高度
宏单元与边缘距离 至少 2~3 倍标准单元高度
电源网络密度 宏单元周围电源 strap 数量增加 20%
信号线长度 宏单元到标准单元的信号线尽量短

避坑指南: 我曾经把两个大 SRAM 并排放在芯片中央,结果中间形成了一条“死胡同”。标准单元塞不进去,布线也绕不过去。最后不得不把 SRAM 拆开,重新布局。所以,宏单元摆放一定要留够空间,别太“挤”。

4.4 布局规划的整体流程——从“毛坯”到“精装”

布局规划不是一步到位的。我习惯分三步走:

  1. 粗规划: 先估算面积,确定 IO 位置,把宏单元大致摆一下。这时候不用太精细,主要看能不能放得下。
  2. 细规划: 调整宏单元的具体位置,优化信号流向,检查供电和布线通道。这时候要跟综合、时序团队多沟通。
  3. 验证: 跑一下快速布局布线,看看有没有明显的拥塞、时序问题。如果有,回头调整。

总结一下: 布局规划是芯片设计的“地基”。地基没打好,后面盖再高的楼也是白搭。我建议你多花点时间在这步,别急着往下走。记住一句话:布局规划省下的时间,会在布线阶段加倍还回来。

好了,今天就聊到这。下一章咱们讲讲时钟树综合,那可是个技术活。到时候再跟你分享一些我的“独门秘籍”。


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