Global + Detailed Routing (the Two-Pass Flow)
The idea
Routing a billion-cell grid across fifteen metal layers in one search is hopeless, so production flows split the problem by resolution.
Global routing overlays a coarse grid (GCells, thousands of tracks abstracted into per-edge capacities), decomposes every multi-pin net into Steiner segments (FLUTE), and assigns each segment a coarse-grained path with congestion-negotiated costs, PathFinder economics over the GCell graph, with layers, vias, and preferred directions priced in. Its outputs are route guides: corridors per net, plus the congestion maps that placement iterates against.
Detailed routing then works within the guides, clip by clip: the die is partitioned into windows of a few GCells each, and the search runs inside one clip at a time, many in parallel, with everything outside a clip treated as fixed context. It assigns exact tracks, exact via positions, and exact geometry under the full weight of the design rules, spacing tables, end-of-line rules, via enclosures, and at advanced nodes far stranger constraints. An A*-family point search over the track graph does the pathfinding; a rip-up-and-reroute loop driven by DRC (Design Rule Check) violation counts grinds the layout legal over dozens of iterations, shifting the clip origins between iterations so that violations on clip seams land mid-clip the next time. The figure above walks why this windowing is both necessary and sound.
Watch it work: coarse plan, exact finish
One multi-pin net and one two-pin net on a 10 x 10 GCell grid, with a macro blocking their crossing except two gaps. Every step of the global pass, from FLUTE (Fast Lookup Table Estimation) decomposition through the PathFinder negotiation to the frozen guides, with every number computed from the stated costs. The gap arithmetic mirrors the PathFinder and ILP (Integer Linear Programming) pages: one mechanism, three levels.
Pros, cons, and the trade-off
Strengths
- The only known road to scale: coarse capacity planning plus windowed exact legality is how billions of segments become tractable.
- Right information at each level: global sees congestion everywhere coarsely; detailed sees one window sharply under full rules.
- Placement feedback: global's congestion maps drive routability-aware placement long before detail exists.
- Parallelism: detailed routing partitions naturally into regions routed concurrently.
Weaknesses
- Abstraction mismatch: GCell capacities approximate real rules, so guides sometimes promise what tracks cannot deliver, surfacing as late violations.
- Handoff information loss: decisions optimal at coarse resolution can be locally poor; repair loops pay for it.
- Two engines to maintain: distinct codebases, cost models, and failure modes that must stay consistent.
- Guide rigidity: detailed routers must occasionally violate or renegotiate guides, complicating both sides.
The trade-off
The two-pass split is a deliberate act of information hiding: solve congestion where the whole chip is visible but rules are not, then solve legality where rules are total but vision is local. The seam between the passes costs iterations, and no one has found a cheaper place to put the seam.
Is it actually used today?
The two-pass architecture is documented in every routing tool, open source and commercial: separate commands, separate reports.
- Open source:
global_routeanddetailed_routein OpenROAD are FastRoute lineage and TritonRoute respectively; every OpenROAD-flow-scripts run on this site's real-tool problems executes exactly this handoff. - Commercial: every production sign-off flow runs the same architecture under proprietary names.
- Watch it: in any routing log, the global overflow report followed by detailed routing's violations shrinking per iteration is the two passes handing off in real time.