4. 拥塞分析工具:主流EDA工具(Innovus、ICC2)的拥塞报告解读
做后端设计,最怕什么?
我个人最怕的是半夜跑完PR,打开报告一看——congestion爆红。那种感觉,就像你精心收拾好的房间,突然被塞满了杂物,连门都关不上。
拥塞分析,说白了就是看你的芯片里,走线的地方够不够用。今天咱们就来聊聊两大主流工具——Innovus和ICC2,它们的拥塞报告到底怎么看。
4.1 为什么拥塞报告这么重要?
你想想看,一个芯片里成千上万条线,都要挤在有限的金属层里走。如果某个区域太挤,绕线器就得绕远路,结果就是时序变差、面积变大,严重的直接导致芯片废掉。
我在项目中遇到过最夸张的一次,一个模块的拥塞度到了98%。绕线器试了三天三夜,最后告诉我「unroutable」。嗯,从那以后我养成了一个习惯——每做完一个步骤,先扫一眼拥塞报告。
核心观点:拥塞报告不是事后诸葛亮,而是事中预警器。早发现,早治疗。
4.2 Innovus的拥塞报告解读
Innovus的拥塞报告,我习惯叫它「交通路况图」。它会把芯片切成一个个小格子,告诉你每个格子的拥挤程度。
4.2.1 报告怎么看?
跑完placement或route后,用这条命令生成报告:
reportCongestion -by_layer -hot_spot -output congestion.rpt
打开报告,你会看到类似这样的内容:
+------------------------------------------------------------+
| Layer | Overflow | Total Tracks | Utilization (%) |
+------------------------------------------------------------+
| M1 | 120 | 5000 | 2.4 |
| M2 | 345 | 5000 | 6.9 |
| M3 | 89 | 5000 | 1.78 |
| M4 | 12 | 5000 | 0.24 |
| M5 | 0 | 5000 | 0.0 |
+------------------------------------------------------------+
这里有个关键指标——Overflow。它表示有多少条线「溢出来」了,没地方走。数值越大,问题越严重。
我一般怎么判断?
- Overflow < 100:小问题,通常能自动解决
- Overflow 100-500:需要关注,建议手动干预
- Overflow > 500:红色警报,必须处理
小技巧:别只看总Overflow。要看每个层的分布。如果M2层Overflow特别高,说明标准单元太密,需要调整placement。
4.2.2 热点图怎么看?
Innovus还有个好东西——GUI里的拥塞热点图。颜色从绿到红,绿色表示通畅,红色表示拥堵。
我记得有一次,我看到一个区域红得发紫。放大一看,原来是几个大模块挤在一起,中间连条缝都没有。后来我把它们拉开了一点,拥塞度直接从85%降到了30%。
4.3 ICC2的拥塞报告解读
ICC2的拥塞报告,风格跟Innovus不太一样。它更偏向于用「路由资源利用率」来描述问题。
4.3.1 报告生成与解读
在ICC2里,用这条命令:
report_congestion -overflow -hotspot -output congestion_icc2.rpt
报告长这样:
+------------------------------------------------------------+
| Region | Total Tracks | Used Tracks | Utilization (%) |
+------------------------------------------------------------+
| core_0 | 10000 | 8500 | 85.0 |
| core_1 | 10000 | 9200 | 92.0 |
| core_2 | 10000 | 7800 | 78.0 |
| core_3 | 10000 | 9500 | 95.0 |
+------------------------------------------------------------+
ICC2把芯片分成多个region,每个region单独统计。Utilization超过85%就要警惕了,超过90%基本就是重灾区。
注意:ICC2的Utilization是「已用轨道数/总轨道数」。如果某个region利用率超过95%,绕线器基本就绕不动了。我曾经吃过这个亏,后来学乖了,提前做floorplan时就把这些region拆开。
4.3.2 跟Innovus的区别
说白了,两个工具的核心逻辑是一样的,只是表达方式不同:
| 对比项 | Innovus | ICC2 |
|---|---|---|
| 核心指标 | Overflow | Utilization (%) |
| 粒度 | 按层统计 | 按region统计 |
| 热点图 | GUI自带,颜色直观 | 需要额外命令生成 |
| 我个人的偏好 | 适合快速定位问题 | 适合做全局分析 |
4.4 拥塞分析的实战流程
我一般按这个步骤来:
- 跑完placement先看一眼——这时候的拥塞主要是标准单元密度导致的
- 跑完CTS再看一眼——时钟树插入后,拥塞可能会加剧
- 跑完route最后确认——这时候的拥塞报告,直接决定能不能tapeout
每个阶段,我都会用上面讲的方法去读报告。如果发现Overflow或Utilization超标,就停下来分析原因。
避坑指南:我曾经有一次,placement阶段拥塞报告一切正常,结果route阶段突然爆红。后来发现是power grid太密,把走线通道堵死了。所以,我建议你在做power plan时,就提前跑一次拥塞检查。
4.5 知识体系图
下面这张图,帮你理清拥塞分析的核心逻辑:
这张图告诉你:不管用哪个工具,最终目的都是找到拥塞热点,然后想办法优化。优化手段包括调整floorplan、加feedthrough、调整标准单元密度等等,这些我们后面会详细讲。
4.6 总结一下
拥塞报告解读,其实没那么玄乎。你只要记住三点:
- 看指标——Innovus看Overflow,ICC2看Utilization
- 看分布——哪个层、哪个region最严重
- 看趋势——从placement到route,拥塞是变好还是变差
嗯,掌握了这些,你就能在拥塞问题刚冒头时就发现它,而不是等到tapeout前才手忙脚乱。