布图规划(Floorplan)进阶:拥塞评估、IR Drop预估、热分布与迭代优化
各位同学,咱们今天聊点进阶的。布图规划这事儿,说白了就是给芯片里的各个模块“分房子”。但分房子可不是随便画个框就完事了。你想想看,房子分得不好,邻居之间抢路走(拥塞),供电不足(IR Drop),或者某个区域热得像火炉(热分布),那这芯片基本就废了。
我个人习惯,在做Floorplan的时候,脑子里始终绷着三根弦:能不能绕通?电够不够?会不会烧掉?今天咱们就把这三件事掰开揉碎了讲清楚。
核心观点:布图规划不是一次性的艺术创作,而是一个反复迭代的工程过程。你永远不可能第一次就把所有问题都想到。
一、拥塞评估:别让信号线“堵车”
拥塞,说白了就是绕线资源不够用。我在项目中遇到过最夸张的一次,一个模块的绕线密度达到了95%,结果后端工具跑了三天三夜都没绕通。后来我学乖了,在Floorplan阶段就得做拥塞预估。
怎么做?我一般分三步走:
- 快速全局绕线(Quick Global Routing):在Floorplan完成后,跑一个快速的全局绕线。工具会告诉你每个区域的绕线密度。我个人习惯,密度超过85%的区域就要亮红灯了。
- 看热点图(Congestion Map):工具会生成一张彩色的拥塞热点图。红色区域就是重灾区。这时候你要考虑:是不是模块放得太挤了?是不是要把某些逻辑挪走?
- 预估绕线层数:如果某个区域拥塞严重,你可能需要增加绕线层,或者调整模块的宽高比。记住,绕线层不是免费的,每加一层,成本就上去了。
我的小技巧:在做拥塞评估时,别只看平均值。要看最差的那个点。我曾经吃过这个亏,平均拥塞率只有70%,但角落里有个点达到了98%,结果那个点成了整个芯片的瓶颈。
二、电压降(IR Drop)预估:别让芯片“饿死”
IR Drop,就是电源从焊盘传到模块内部时,电压被消耗掉了。你想想看,如果核心电压是1.0V,结果到了某个模块只剩下0.85V,那这个模块还能正常工作吗?
我一般会在Floorplan阶段做两件事:
- 静态IR Drop分析:假设电流是恒定的,看看电源网络的电阻有多大。这个分析很快,几分钟就能出结果。如果静态IR Drop都超标,那动态就更不用说了。
- 动态IR Drop分析:考虑实际工作时的电流变化。比如某个模块在时钟沿同时翻转,瞬间电流会很大。这个分析慢一些,但更准确。
嗯,这里要注意:IR Drop和拥塞往往是矛盾的。你想降低IR Drop,就得加宽电源线,但电源线宽了,绕线资源就少了,拥塞就上来了。这就是个trade-off。
避坑指南:我曾经在一个项目中,为了降低IR Drop,把电源网格做得特别密。结果绕线阶段发现,信号线根本找不到地方走。后来不得不重新做Floorplan,浪费了两周时间。所以,IR Drop和拥塞要一起看,别单打独斗。
三、热分布考虑:别让芯片“发烧”
热分布,很多人容易忽略。但你要知道,温度高了,晶体管的漏电流会变大,速度会变慢,甚至可能烧坏芯片。
我在做热分析时,会关注几个点:
| 因素 | 影响 | 我的处理方式 |
|---|---|---|
| 高功耗模块 | 局部温度过高 | 分散放置,别扎堆 |
| 时钟网络 | 频繁翻转,发热量大 | 时钟树周围留散热通道 |
| 芯片边缘 | 散热条件好 | 把高功耗模块放边缘 |
| 芯片中心 | 散热条件差 | 尽量放低功耗模块 |
说白了,热分布就是给芯片做“空调布局”。高功耗模块别挤在一起,否则局部温度会飙升。我一般会在Floorplan阶段跑一个快速的热仿真,看看温度分布是否均匀。
四、布图规划迭代优化方法
布图规划不是一锤子买卖。我通常的做法是:
- 第一版:粗放型。先把大模块放进去,看看面积够不够,形状合不合理。这个阶段不用太精细。
- 第二版:精细调整。根据拥塞和IR Drop的反馈,调整模块位置。比如把高拥塞区域的模块挪一挪,或者给高功耗模块加宽电源线。
- 第三版:微调。这时候主要看细节了。比如某个模块的pin位置是不是合理,时钟树能不能走通。
我一般会迭代3到5轮。每轮迭代,我都会问自己三个问题:拥塞改善了吗?IR Drop达标了吗?温度分布均匀了吗?如果三个答案都是“是”,那就可以往下走了。
我的经验:迭代的时候,别一次改太多。每次只改一两个参数,看看效果。改多了,你都不知道是哪个改动起了作用。我曾经一次改了五个参数,结果拥塞好了,IR Drop却炸了,查了半天才找到原因。
五、布图规划检查清单
最后,给大家一份我自己的检查清单。每次做完Floorplan,我都会对着清单过一遍:
- 面积检查:模块总面积是否在芯片面积范围内?有没有留出足够的绕线通道?
- 拥塞检查:最差区域的绕线密度是否低于85%?热点图有没有红色区域?
- IR Drop检查:静态IR Drop是否低于5%?动态IR Drop是否低于10%?
- 热分布检查:最高温度是否在工艺允许范围内?高功耗模块是否分散放置?
- 电源网络检查:电源网格是否完整?有没有窄颈?
- 时钟网络检查:时钟树的大致位置是否合理?有没有被高功耗模块挡住?
这份清单,我用了好多年。每次做完Floorplan,我都会对着它过一遍。虽然不能保证100%没问题,但至少能避免80%的坑。
好了,布图规划的进阶内容就讲到这里。记住,布图规划是个手艺活,多练、多总结,你也能成为高手。