当前位置: 首页 > news >正文

【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/B

routing 要做的是把这种连接关系变成物理几何:

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 layers

Routing 问题可以抽象成:

在多层图中,为每个 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 estimate

Global 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 fixing

Detail 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 congestion

Global 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 reroute

route 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.log

demo 的重点是验证:

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 的区别。

关键结论如下:

  1. routing 的本质是把逻辑连接图映射成可制造几何;
  2. global route 解决 routing resource 和大方向规划问题;
  3. detail route 解决真实 track、via、pin access 和 DRC 落地问题;
  4. route optimize 解决 route 后 timing、DRC、antenna、SI 等收敛问题;
  5. routing 后 timing 会因为真实 RC 和 coupling 发生变化;
  6. congestion 的根源可能来自 floorplan、placement、macro、pin density 或 clock/power 结构;
  7. 成熟 routing flow 必须建立 precheck、global report、detail report、opt report 和 final QoR report;
  8. route 不是终点,而是进入 signoff 的关键门槛。

结尾一句话

Global route 决定“路大概从哪里走”,detail route 决定“线到底怎么画出来”,route optimize 决定“连出来以后能不能满足时序、规则和签核目标”;真正成熟的 routing flow,必须把这三层分开观察、分开报告、分开优化。

http://www.cnnetsun.cn/news/2193340.html

相关文章:

  • 如何高效使用es-toolkit的partial与partialRight:提升JavaScript函数灵活性的终极指南
  • 观察接入 Taotoken 后大模型 API 调用的延迟稳定性与成功率变化
  • ANSYS循环载荷仿真全解析
  • 基于FFT算法的农机微波多普勒测速雷达农业机械【附代码】
  • 告别命令行恐惧!用iStoreOS给你的云服务器加个‘应用商店’(CentOS/Ubuntu通用刷机法)
  • 为什么您的软件无法运行?VisualCppRedist AIO一站式解决Windows运行库问题
  • PyTorch Mask R-CNN多GPU训练优化策略与最佳实践
  • 在Nodejs后端服务中集成Taotoken实现稳定的大模型调用
  • tensorflow-DeepFM部署与扩展:从开发环境到生产系统的完整路径
  • C语言OTA固件升级配置全链路解析:从Bootloader跳转到校验回滚,一文打通7个关键节点
  • Nachos UI核心组件大揭秘:Button、Card与Input组件使用技巧与最佳实践
  • 5分钟快速掌握:Switch游戏文件管理的终极解决方案
  • 告别官网龟速下载!手把手教你用阿里云盘搞定Anaconda,再装昇思MindSpore 2.0
  • Cadence工作流设计思维:从业务流程到技术实现的完整指南
  • Pyro深度解析:10个技巧教你掌握概率编程与深度学习的完美融合
  • 别再手动更新Excel了!用这个免费API自动同步全球15000+只ETF行情
  • 【国家密码管理局认证实践】:基于pycryptodome+gmssl双引擎的SM2/SM3高可用封装,已通过等保2.0三级测评
  • Windows右键菜单终极清理工具:ContextMenuManager完整使用指南
  • 10分钟打造高效Node.js开发环境:example-node-server自动化工作流全指南
  • AloeStackView:iOS开发者的终极UI布局神器,10分钟快速上手
  • 如何用Vue.js构建高效中文OCR界面:TrWebOCR前端实现详解
  • 变量监控总失准,周期扫描总超时,C语言PLCopen调试卡顿问题全解析,附IEC 61131-3 v3.0兼容性校验清单
  • Go语言实现网络诊断工具PeonPing:从ICMP到HTTP的全栈连通性检测
  • LSPosed-Irena:终极Android Hook框架入门指南
  • 智能网盘直链解析引擎:重新定义高速下载体验
  • 2026全球AI模型巅峰对决:谁主沉浮?
  • GPU内存检测专家:MemtestCL全面诊断显卡稳定性问题
  • 在自动化内容生成场景中利用 Taotoken 实现多模型备选与降级
  • 深入解析STM32存储器架构与总线系统
  • 微信AI助手集成实战:基于OpenClaw框架的双向通信通道插件详解