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 拥塞分析的实战流程

我一般按这个步骤来:

  1. 跑完placement先看一眼——这时候的拥塞主要是标准单元密度导致的
  2. 跑完CTS再看一眼——时钟树插入后,拥塞可能会加剧
  3. 跑完route最后确认——这时候的拥塞报告,直接决定能不能tapeout

每个阶段,我都会用上面讲的方法去读报告。如果发现Overflow或Utilization超标,就停下来分析原因。

避坑指南:我曾经有一次,placement阶段拥塞报告一切正常,结果route阶段突然爆红。后来发现是power grid太密,把走线通道堵死了。所以,我建议你在做power plan时,就提前跑一次拥塞检查。

4.5 知识体系图

下面这张图,帮你理清拥塞分析的核心逻辑:

拥塞分析知识体系 设计数据输入 Innovus ICC2 Overflow / 按层统计 Utilization / 按region统计 拥塞热点图 + 优化方案

这张图告诉你:不管用哪个工具,最终目的都是找到拥塞热点,然后想办法优化。优化手段包括调整floorplan、加feedthrough、调整标准单元密度等等,这些我们后面会详细讲。

4.6 总结一下

拥塞报告解读,其实没那么玄乎。你只要记住三点:

  • 看指标——Innovus看Overflow,ICC2看Utilization
  • 看分布——哪个层、哪个region最严重
  • 看趋势——从placement到route,拥塞是变好还是变差

嗯,掌握了这些,你就能在拥塞问题刚冒头时就发现它,而不是等到tapeout前才手忙脚乱。

可可精品资料库