Skip to content

OpenROAD - Routing

Routing connects all placed standard cells, macros, and pins according to the logical netlist. It is performed in two main stages: global routing and detailed routing, which progressively refine the physical paths of interconnections. In OpenROAD, these tasks are handled by FastRoute (global) and TritonRoute (detailed).

Official documentation:

  • FastRoute (Global Routing) README
  • TritonRoute (Detailed Routing) README
  • OpenROAD-flow-scripts Routing Tutorial

1. Overview of Routing Flow

StageEngineDescription
Global RoutingFastRouteEstimates wire paths and assigns routing regions for each net.
Track AssignmentTritonRoute-prepassAssigns nets to specific routing tracks on each metal layer.
Detailed RoutingTritonRouteCreates exact wire geometries, vias, and layer transitions, ensuring DRC compliance.

2. Basic Routing Example

# Read the design
read_lef tech.lef
read_lef stdcells.lef
read_def results/cts.def

# Perform global and detailed routing
route_design

The route_design command executes global routing, track assignment, and detailed routing sequentially.

Equivalent manual sequence:

global_route
detailed_route

👉 Reference example: route1.tcl

3. Global Routing (FastRoute)

During global routing, OpenROAD computes approximate paths between pins, divides the chip into routing grids, and estimates wire congestion.

Example

global_route \
  -guide_file results/guides.guide \
  -overflow_iterations 150 \
  -congestion_iterations 50

Options

OptionDescription
-guide_fileFile storing routing guides for detailed routing
-overflow_iterationsNumber of iterations to resolve congestion
-congestion_iterationsIterations to refine congested regions

Output: guides.guide — routing guide file defining regions for each net.

👉 More details: FastRoute documentation

4. Detailed Routing (TritonRoute)

Detailed routing creates actual metal paths and vias that connect all nets, following the guides produced by FastRoute. It also performs DRC checks and reports violations.

Example

detailed_route \
  -output_drc results/drc.rpt \
  -output_maze results/route.maze

Options

OptionDescription
-output_drcSaves the DRC violation report
-output_mazeSaves the routing maze graph for debugging
-verboseEnables detailed logging of route progress

👉 Reference: TritonRoute README

5. Antenna and Via Checks

After detailed routing, OpenROAD can automatically fix antenna violations (caused by long wires connected to gates) and verify via rules.

repair_antennas
check_antennas

Optionally run after routing:

detailed_route -output_drc results/drc_final.rpt

6. Example: Full Routing Script

read_lef tech.lef
read_lef stdcells.lef
read_def results/optimized.def

# === Routing ===
global_route -guide_file results/guides.guide
detailed_route -output_drc results/drc.rpt

# === Post-routing checks ===
repair_antennas
check_antennas

# Export routed design
write_def results/routed.def
write_guides results/guides.guide
write_sdc results/final.sdc

7. Visualization and Debugging

Launch GUI mode to view routing layers and congestion maps:

openroad -gui
% read_def results/routed.def
% gui::show_routing_layers
% gui::show_congestion_heatmap

Tips:

  • Toggle routing layers using Layer Visibility Panel.
  • Use “Heatmap → Routing Congestion” to inspect critical regions.
  • Export screenshots for documentation or analysis.

8. Outputs

FileDescription
routed.defFully routed layout ready for extraction
guides.guideRouting guides from global router
drc.rptDRC violations report from detailed router
antenna.rptOptional antenna violation report
routed.odbOpenDB snapshot after routing

9. Troubleshooting Common Issues

IssueCauseMitigation
Unrouted netsOverlaps or missing guidesRe-run global_route with more overflow iterations
High congestionDensity too highReduce utilization or adjust macro spacing
DRC errorsLayer constraints or pin obstructionsTune routing layers or fix pin locations
Antenna violationsLong metal wiresUse repair_antennas

10. Summary of Key Commands

CommandDescription
route_designRun full routing sequence
global_routePerform global routing using FastRoute
detailed_routePerform detailed routing using TritonRoute
repair_antennasFix antenna-related violations
check_antennasReport antenna issues
write_guidesExport routing guides
write_defSave routed DEF

11. Next Step

After routing is completed and the layout is DRC-clean, proceed to Parasitic Extraction to generate the RC networks used for post-layout timing verification and sign-off.

👉 See also: {doc}parasitic_extraction