第一章:布局布线概述

什么是布局布线?

布局布线,英文叫 Place & Route,简称 PnR。说白了,就是把逻辑网表变成物理版图的过程。

你想想看,前端工程师给了你一个门级网表,里面全是与门、或门、触发器这些东西。它们怎么摆?连线怎么走?这就是布局布线要干的事。

我个人习惯把布局布线分成两大步:

  • 布局(Placement):决定每个标准单元放在芯片的哪个位置
  • 布线(Routing):在单元之间用金属层把信号连起来

我在项目中遇到过不少新手,以为布局布线就是点一下工具让它自动跑。嗯,没那么简单。工具只是工具,你得告诉它怎么干,还得盯着它别干错。

核心理解:布局布线不是机械操作,而是物理实现的艺术。同样的网表,不同的人做出来,性能可能差30%。

布局布线在芯片设计流程中的位置

一张图胜过千言万语。我画了个流程图,你看看布局布线在整个流程里处在什么位置:

RTL设计 逻辑综合 布局布线 物理验证 布局布线前后对比 输入:门级网表 + 时序约束 + 工艺库 输出:GDSII版图文件 布局前:单元位置未定,时序未知 布局后:单元位置确定,时序可估算 布线后:所有连线完成,时序可精确分析 关键输入文件: • 综合后的网表 (.v) • 时序约束文件 (.sdc) • 工艺库文件 (.lib/.db) • 物理库文件 (.lef)

从图上你能看到,布局布线处在逻辑综合之后、物理验证之前。这个位置很关键——它是从逻辑世界到物理世界的桥梁。

我记得刚入行时,师傅跟我说过一句话:「前端给你的是理想,后端要把它变成现实。」布局布线就是实现这个转变的核心环节。

布局布线的目标

布局布线的目标,我总结成四个字:快、小、省、稳。

目标 具体含义 我的经验
快 满足时序要求,芯片能跑在目标频率 我曾经为了把频率从1.2GHz提到1.25GHz,反复调整布局策略整整两周
小 面积尽量小,降低成本 面积每大1mm²,12寸晶圆上就少几十颗芯片,成本差距很明显
省 功耗低,特别是动态功耗 我习惯在布局阶段就考虑功耗分布,比布线后再优化省事得多
稳 可制造性强,良率高 有些设计跑得快但良率低,说白了就是白干

小提示:这四个目标经常互相冲突。比如要跑得快,可能面积就大。怎么权衡?嗯,这得看具体项目的优先级。我个人习惯是先保时序,再优化面积和功耗。

布局布线的挑战

做布局布线这么多年,我遇到的挑战可以归纳为以下几类:

1. 时序收敛难

这是最大的挑战。你想想看,几百万个单元摆在一起,信号要走通,还要在规定时间内到达。稍微一个单元摆偏了,关键路径就崩了。

我曾经遇到一个项目,综合后时序是满足的,布局后却差了200ps。查了两天才发现,是一个时钟缓冲器摆得太远了。调整位置后,问题解决。

2. 拥塞问题

说白了就是布线资源不够用。有些区域单元密度太高,金属线挤不进去。这时候要么挪单元,要么调整布线层分配。

注意:拥塞问题在布局阶段就要预防。我见过有人布线时才发现拥塞,结果不得不回退到布局阶段重做,白白浪费好几天。

3. 功耗与热分布

现在的芯片功耗越来越大,热点问题越来越突出。布局时如果不考虑热分布,局部温度过高会导致时序恶化,甚至芯片烧毁。

4. 多电压域管理

很多芯片有多个电压域,不同电压域之间的信号需要电平转换单元。这些单元的摆放和连接,处理不好就会出问题。

5. 先进工艺的物理效应

到了7nm、5nm,各种物理效应越来越明显。比如:

  • 线边缘粗糙度影响电阻
  • 通孔电阻不可忽略
  • 自热效应影响可靠性

这些在28nm时代不太在意的问题,到了先进工艺就成了大麻烦。

我的避坑指南

最后分享几个我踩过的坑,希望能帮你少走弯路:

  1. 不要过早优化:我刚开始做后端时,总想在布局阶段就把所有问题都解决。后来发现,有些问题要到布线阶段才暴露出来。过早优化反而浪费时间。
  2. 重视floorplan:floorplan做得好,布局布线就成功了一半。我见过太多人随便画个floorplan就开始跑,结果后面各种问题。
  3. 留有余量:时序约束不要卡得太死。我习惯留5%-10%的余量,给后续的物理效应和工艺偏差留空间。
  4. 多看报告:工具生成的报告里有很多信息。我每次跑完都会仔细看congestion report、timing report、power report,不放过任何异常。

一句话总结:布局布线不是点一下按钮就完事的工作。它需要你对工艺、电路、物理都有深入理解。多动手、多总结、多复盘,慢慢就能找到感觉。

可可精品资料库