4、拥塞分析工具:主流EDA工具(如Innovus、ICC2)中的拥塞分析功能、报告解读
聊到拥塞分析,咱们得先搞清楚一件事:工具到底是怎么判断“这里堵了”的?
我个人习惯把拥塞分析工具比作“芯片的交通摄像头”。它不直接告诉你“怎么修路”,而是告诉你“哪个路口在几点几分堵成了什么样”。你拿到数据,自己判断要不要拓宽车道、要不要改红绿灯。
嗯,今天咱们就重点看看两大主流工具——Innovus(Cadence家的)和ICC2(Synopsys家的)——它们是怎么做这个事的。
4.1 Innovus 的拥塞分析功能
Innovus 的拥塞分析,说白了就是基于“布线资源”和“绕线需求”的对比。它把芯片切成一个个小格子(G-Cell),然后算每个格子里有多少线要过,能过多少线。
我记得刚用 Innovus 那会儿,最常用的命令就是:
# 运行全局拥塞评估
set_ccopt_property -congestion_effort high
route_global -congestion_map_only true
# 查看拥塞热力图
gui_set_current_view -view congestion
这里有个小细节:-congestion_map_only true 这个选项,只做全局布线的拥塞评估,不真正走线。速度很快,适合早期快速迭代。
Innovus 的拥塞报告,我一般看这几个关键指标:
| 指标 | 含义 | 我关注的阈值 |
|---|---|---|
| Overflow | 超出可用轨道的线数 | > 0 就要警惕 |
| Congestion Map | 热力图上的红色区域 | 红色面积 > 5% 需干预 |
| Routing Utilization | 布线资源利用率 | > 85% 容易出问题 |
我曾经在一个 7nm 的项目上,看到 Overflow 显示为 0,但热力图上一片红。后来发现是工具把一些“伪路径”也算进去了。所以我的建议是:别只看数字,一定要看热力图。
4.2 ICC2 的拥塞分析功能
ICC2 的思路其实差不多,但叫法不一样。它用的是 Congestion Map 和 Routing Congestion Report。
ICC2 里我常用的命令是:
# 运行拥塞分析
create_congestion_map -layers {M1 M2 M3 M4} -output congestion_map.png
# 生成详细报告
report_congestion -overflow -verbose > congestion.rpt
你想想看,ICC2 的 report_congestion 报告里,我最关注的是 Overflow by Layer 这个表。它能告诉你具体是哪一层金属堵了。
举个例子,有一次我遇到 M2 层 Overflow 特别高,但 M3 层几乎没怎么用。后来发现是 power stripe 把 M2 的轨道占得太狠了。调整了 power plan 之后,问题就解决了。
核心区别总结:
- Innovus 用 G-Cell 做网格,ICC2 用 Tile 做网格
- Innovus 的 Overflow 是值,ICC2 的 Overflow 是百分比
- 两个工具都能导出热力图,但 ICC2 的图层分离更细
4.3 报告解读:别被数字骗了
报告解读这块,我踩过不少坑。说几个常见的:
- Overflow 为 0 不代表不拥塞——工具可能把线绕到了更远的区域,导致时序变差。
- 热力图上的红色区域——要结合标准单元密度一起看。有时候是单元太挤,不是线太多。
- 层利用率——M1、M2 层利用率高是正常的,但如果 M5、M6 也红了,那就要小心了。
避坑指南:
我曾经在一个 28nm 的项目上,看到 ICC2 报告显示 Overflow 只有 0.3%,觉得没问题就 tapeout 了。结果回来发现 M3 层有几条长线绕了很远,导致 IR drop 超标。从那以后,我每次看报告都会把 Overflow by Layer 和 Wire Length Distribution 一起看。
4.4 知识体系:拥塞分析的核心逻辑
为了让你更直观地理解,我画了一张图。这张图展示了从“布局后”到“拥塞分析完成”的整个流程:
我的小技巧:
不管是 Innovus 还是 ICC2,我建议你在 place_opt 之后就跑一次拥塞分析。这时候改 floorplan 还来得及。等 route_opt 跑完再看,黄花菜都凉了。
好了,关于拥塞分析工具的功能和报告解读,今天就聊到这儿。记住一句话:工具给你的数字是参考,你的经验才是决策依据。