【Backend Flow工程实践 20】Routing:global route、detail route 与 route optimize 分别解决什么问题?
作者:Darren H. Chen
方向:Backend Flow / 后端实现流程 / EDA 工具工程 / Routing
demo:LAY-BE-20_routing
标签:Backend Flow、EDA、Routing、Global Route、Detail Route、Route Optimize、Congestion、DRC、Timing Closure
在后端实现中,routing 经常被直观理解为:
把 cell 和 macro 之间的 net 连起来。这个理解是对的,但远远不够。
Routing 不是简单画线,而是在多层金属、工艺规则、pin access、routing resource、timing、power、SI、antenna、DRC 和 manufacturability 共同约束下,把抽象连接关系实现成真实版图几何。
更重要的是,routing 本身不是单一步骤。
通常可以拆成几层:
global route detail route route optimize这三者解决的问题不同。
如果把它们混在一起看,就很难理解 routing 为什么会失败、为什么会反复迭代、为什么 route 后 timing 会变、为什么 DRC 修复会影响 slack。
本文从底层原理、架构模型和工程方法论角度解释:global route、detail route 与 route optimize 分别解决什么问题。
一、Routing 的本质:把连接图映射到制造几何
在 placement 后,设计中已经有了 cell location 和 pin location。
但是 net 仍然只是连接关系:
net N1 connects: U1/Z U2/A U3/Brouting 要做的是把这种连接关系变成物理几何:
metal segment via routing layer wire width wire spacing routing topology抽象转换如下:
logical connectivity ↓ placed pins ↓ routing topology ↓ metal/via geometry ↓ DRC-clean layout这说明 routing 是从逻辑世界进入制造世界的关键步骤。
二、Routing Grid:底层不是任意画线
在芯片版图里,routing 不是在连续平面中任意画线。
它通常受 routing grid、track、preferred direction 和 design rule 约束。
可以简化成一个多层网格图:
Layer M1: horizontal/vertical tracks Layer M2: preferred vertical Layer M3: preferred horizontal Layer M4: preferred vertical ... Via: connect adjacent layersRouting 问题可以抽象成:
在多层图中,为每个 net 找到一组连接 pin 的路径,同时不超过资源容量、不违反设计规则,并尽量优化 timing、wirelength、via count 和 congestion。这本质上是一个复杂的组合优化问题。
难点在于:
每条 net 的路径会占用资源; 一条 net 的选择会影响其他 net; 局部绕线会改变全局拥塞; DRC 修复会改变 wirelength 和 parasitic; timing 优化可能增加 routing pressure; clock / power / signal net 有不同规则。所以 routing 不可能一次简单完成。
三、Global Route 解决什么问题?
Global route 不是生成最终可制造的详细线段。
它解决的是:
每条 net 大致应该走哪些 routing region / gcell / layer corridor。可以把芯片区域划分成 coarse grid:
+----+----+----+ | G1 | G2 | G3 | +----+----+----+ | G4 | G5 | G6 | +----+----+----+ | G7 | G8 | G9 | +----+----+----+Global route 关注:
net 从哪个区域走到哪个区域; 每个区域的 routing demand 是多少; 每条 routing edge 的 capacity 是否超限; 哪些区域发生 overflow; 哪些 nets 需要绕开 congestion; clock / critical nets 是否需要特殊资源。它的核心输出是 routing plan,而不是最终几何。
典型指标包括:
total wirelength estimate via estimate congestion map overflow count overflow severity layer usage critical net routing estimateGlobal route 的价值在于提前发现可布线性问题。
如果 global route 已经大面积 overflow,detail route 很难凭空解决。
四、Detail Route 解决什么问题?
Detail route 在 global route 给出的通道和方向基础上,生成真实 layout 几何。
它要处理:
track assignment pin access exact wire segment via insertion spacing rule width rule end-of-line rule cut spacing rule short/open avoidance DRC fixingDetail route 面对的是更细粒度的问题。
例如:
这个 pin 从哪一侧接入? 这条线走哪条 track? via 放在哪里不会违反 cut spacing? 两条线之间 spacing 是否满足规则? macro pin 周围是否有 obstruction? 局部绕线是否造成 notch 或 min-area 问题?因此 detail route 的失败常常不是全局方向错,而是局部几何无解或代价太高。
典型问题包括:
pin access failure short open spacing violation via violation min area violation antenna risk local congestionGlobal route 像城市交通规划,detail route 像具体道路施工。
一个决定大方向,一个决定能不能按规则落地。
五、Route Optimize 解决什么问题?
Route optimize 是 routing 后的修复和优化阶段。
它处理的不是“有没有连上”这么简单,而是:
连上以后是否满足 timing、DRC、SI、transition、capacitance、antenna 和工程收敛目标。典型优化包括:
timing-driven route repair buffer insertion / resizing wire spreading wire widening via optimization detour reduction antenna fixing crosstalk reduction DRC cleanup hold/setup repair incremental rerouteroute optimize 的难点在于,它是在一个高度耦合的状态中修改设计。
例如:
修 timing 可能增加 wirelength; 减少 coupling 可能增加 congestion; 插 buffer 可能改变 placement legality; 修 DRC 可能改变 parasitic; 修 antenna 可能增加 diode 或跳层; 修 hold 可能增加 delay 和 area。因此 route optimize 是一个多目标收敛过程,不是一次性清理。
六、为什么 route 后 timing 会变化?
placement 阶段和 pre-route 阶段,net delay 通常来自估算。
routing 后,wire geometry 更真实,寄生参数也更准确。
因此 timing 会变化。
变化来源包括:
wirelength change layer assignment via count coupling capacitance resistance shielding route detour pin access path clock route realization在 timing equation 中,net delay 是 data path 和 clock path 的重要组成部分。
routing 改变了 RC,自然改变 slack。
这就是为什么 post-route timing 是一个关键阶段。
七、Routing 与 DRC 的关系
Detail route 必须遵守工艺设计规则。
这些规则包括但不限于:
minimum width minimum spacing end-of-line spacing minimum area via enclosure cut spacing antenna rule density related rule routing blockage non-default rule先进工艺下,规则可能非常复杂,不再是简单 width / spacing。
因此 routing engine 必须内置大量 rule-aware 逻辑。
但即便如此,route 完成后仍然需要 DRC 检查和修复。
原因是:
局部规则组合复杂; 多 net 交互复杂; macro boundary 周围规则复杂; post-route optimization 会引入新几何; fill、antenna、ECO 会改变版图环境。所以 routing 之后并不意味着物理实现结束。
八、Routing 与 Congestion 的关系
Congestion 是 routing 最重要的风险信号之一。
可以把 congestion 简化理解为:
需求资源 > 可用资源例如某个区域可用 routing track 是 100,但所有 nets 估算需要 130,就会 overflow。
Congestion 常来自:
cell density 太高 macro channel 太窄 pin density 太高 routing layer 不足 clock/power 预占资源过多 critical nets 聚集 floorplan 不合理 scan chain 或 bus 连接跨区过多routing 阶段发现 congestion,根源可能在 floorplan 或 placement。
所以成熟 flow 不会等 detail route 后才看 congestion,而是在 placement、global route、detail route 多个阶段持续监控。
九、Routing 与 Timing 的冲突
Timing-driven routing 希望关键路径获得更好的 routing 资源。
例如:
更短路径 更高金属层 更少 via 更小 coupling 更好 shielding但 routing resource 是有限的。
如果所有 critical nets 都抢高质量资源,可能导致拥塞增加。
另一方面,为了避开 congestion,某些 net 可能被迫绕路,导致 timing 变差。
所以 routing 的本质是资源分配。
关键问题不是“能不能连”,而是:
哪些 net 值得优先获得更好的 routing 资源? 哪些 net 可以接受较差路径? 哪些区域需要回退到 placement 或 floorplan 修复?这就是 timing-driven route 和 congestion-driven route 的平衡。
十、Routing 与 Signal Integrity
Routing 之后,信号线之间的相邻关系变得真实。
这会带来 coupling 和 crosstalk。
典型影响包括:
crosstalk delay noise glitch setup degradation hold degradation clock victim sensitivity解决手段包括:
spacing shielding victim/aggressor analysis critical net protection slew control route layer adjustment这说明 routing 不只是几何连接,也是电气行为建模。
十一、Routing Flow 的推荐阶段划分
一个工程化 routing flow 可以划分为:
1. route precheck 2. global route 3. global route congestion analysis 4. detail route 5. DRC cleanup 6. timing-driven route optimize 7. antenna fix 8. SI-aware cleanup 9. post-route timing 10. final route report每一步都应该有报告。
建议报告包括:
route_precheck.rpt global_route_summary.rpt congestion_map.rpt detail_route_summary.rpt route_drc_summary.rpt antenna_fix_summary.rpt post_route_timing.rpt route_opt_summary.rpt final_route_qor.rpt这些报告共同构成 routing 阶段的工程证据链。
十二、Route Precheck 应该检查什么?
Routing 前至少要检查:
placement 是否 legal; clock tree 是否完成; power network 是否完成; routing layer 是否定义; route blockage 是否正确; macro obstruction 是否正确; NDR / route rule 是否有效; critical net 是否标记; antenna rule 是否可用; pre-route timing 是否有基线; congestion 是否可接受。如果这些条件不满足,直接 route 很可能浪费时间。
成熟 flow 应该在 route 前生成:
route_precheck.rpt例如:
[PASS] placement legal [PASS] clock tree exists [WARN] macro channel congestion high near u_sram0 [FAIL] routing layer M6 missing preferred direction十三、如何判断 routing 结果是否健康?
不能只看 route 是否完成。
应该看:
是否有 open / short; DRC violation 数量和类型; congestion 是否缓解; wirelength 是否异常; via count 是否异常; critical path slack 是否恶化; transition/cap 是否增加; antenna 是否可修复; clock nets 是否符合 route rule; 是否存在局部反复修复区域。如果 routing 完成但 timing 大幅恶化,说明 route 质量不健康。
如果 DRC 很少但 wirelength 和 via count 异常,也可能埋下 SI 和 timing 风险。
所以 route QoR 必须多指标判断。
十四、demo 设计:LAY-BE-20_routing
这个 demo 目标是展示 routing 阶段如何分层观察,而不是绑定具体工具命令。
推荐目录结构:
LAY-BE-20_routing/ ├─ data/ │ ├─ sample_global_route.rpt │ ├─ sample_detail_route.rpt │ ├─ sample_congestion.rpt │ └─ sample_post_route_timing.rpt ├─ scripts/ │ ├─ run_routing_demo.csh │ └─ clean.csh ├─ tcl/ │ ├─ 01_route_precheck.tcl │ ├─ 02_run_global_route.tcl │ ├─ 03_report_congestion.tcl │ ├─ 04_run_detail_route.tcl │ ├─ 05_run_route_optimize.tcl │ └─ 06_report_route_qor.tcl ├─ reports/ │ ├─ route_precheck.rpt │ ├─ global_route_summary.rpt │ ├─ congestion_summary.rpt │ ├─ detail_route_summary.rpt │ ├─ route_opt_summary.rpt │ └─ final_route_qor.rpt └─ README.md运行入口可以抽象为:
#!/bin/csh -f setenv EDA_TOOL_BIN /path/to/eda_tool setenv DESIGN_ROOT /path/to/LAY-BE-20_routing $EDA_TOOL_BIN -batch $DESIGN_ROOT/tcl/02_run_global_route.tcl \ >&! $DESIGN_ROOT/reports/run_global_route.log $EDA_TOOL_BIN -batch $DESIGN_ROOT/tcl/04_run_detail_route.tcl \ >&! $DESIGN_ROOT/reports/run_detail_route.logdemo 的重点是验证:
global route 和 detail route 的报告分离; congestion 能独立统计; route optimize 前后 QoR 可以比较; post-route timing 和 route metrics 可以共同归档。十五、从 Routing 到 Signoff
Routing 完成后,设计进入更接近 signoff 的状态。
但 route 之后还要面对:
post-route timing DRC LVS antenna metal fill parasitic extraction SI analysis IR/EM analysis ECO所以 route 不是终点,而是从实现阶段进入签核阶段的门槛。
routing 的质量决定后续签核是否可收敛。
一个糟糕 routing 结果,即使暂时能连通,也会在 timing、DRC、SI、IR/EM、ECO 中反复暴露问题。
十六、总结
本文解释了 global route、detail route 和 route optimize 的区别。
关键结论如下:
- routing 的本质是把逻辑连接图映射成可制造几何;
- global route 解决 routing resource 和大方向规划问题;
- detail route 解决真实 track、via、pin access 和 DRC 落地问题;
- route optimize 解决 route 后 timing、DRC、antenna、SI 等收敛问题;
- routing 后 timing 会因为真实 RC 和 coupling 发生变化;
- congestion 的根源可能来自 floorplan、placement、macro、pin density 或 clock/power 结构;
- 成熟 routing flow 必须建立 precheck、global report、detail report、opt report 和 final QoR report;
- route 不是终点,而是进入 signoff 的关键门槛。
结尾一句话
Global route 决定“路大概从哪里走”,detail route 决定“线到底怎么画出来”,route optimize 决定“连出来以后能不能满足时序、规则和签核目标”;真正成熟的 routing flow,必须把这三层分开观察、分开报告、分开优化。
