Part 6 of the Tcl command reference covering Routing and Signoff commands used to route nets, fix DRC violations, perform ECO routing, and verify the design before tape-out. Routing creates the actual metal interconnects between all cells and is the final major step in the physical design flow.
The complete physical design flow follows this order:
- Design & Database Setup
- Floorplanning
- Power Planning
- Placement
- Clock Tree Synthesis
- Routing
- Optimization
- Signoff & Reports
Quick Reference: Routing & Signoff Commands for EDA Tools
Routing assigns physical metal wires to connect all nets in the design. It starts with global routing that plans the coarse routing topology, followed by detailed routing that assigns specific track and via assignments. Signoff commands verify the routed design meets DRC, LVS, and timing requirements.
| Command | Description |
|---|---|
set_routing_mode | Sets routing mode (default, fast, or signal integrity aware) |
global_route | Performs global routing to plan net topologies |
rt_design | Global route (alias for global_route in some tools) |
detail_route | Performs detailed routing with track/via assignment |
route_design | Complete routing (global + detailed) |
set_drc_strategy | Sets DRC strategy for routing |
set_route_opt_strategy | Sets route optimization strategy |
route_opt | Optimizes existing routing for timing and DRC |
fix_drc | Fixes DRC violations automatically |
rip_up_route | Rips up existing routing for specified nets |
eco_route | Performs ECO routing for incremental changes |
route_pins | Routes pins to specified layers |
route_guide | Creates route guides for congestion management |
report_route | Reports routing statistics |
check_route | Checks routing completeness and connectivity |
check_drc | Checks design rule violations |
report_congestion | Reports routing congestion hotspots |
Typical Routing Flow Script
# === Typical Routing Flow ===
# Set routing mode
set_routing_mode -route_mode signal_integrity
# Global routing
global_route -congestion_map reports/cong.rpt
# Detailed routing
detail_route -effort high
# Optimize routing
route_opt -effort high
# Check for DRC violations
check_drc > reports/drc.rpt
# Fix violations
fix_drc -violation_types {all}
# ECO routing for late changes
eco_route -modify_via_only
# Final verification
check_route > reports/route_check.rpt
report_congestion > reports/cong_final.rpt
Command Deep-Dive: Understanding Each Command
What it is: set_routing_mode configures the routing engine behavior before routing begins. Options include standard mode, fast mode for quick iterations, and signal integrity (SI) aware mode that accounts for crosstalk and aggressive net shielding.
Where we use it: At the start of the routing step. In ICC2 and Innovus, SI mode is recommended for timing-critical designs at advanced nodes where crosstalk delay impacts timing closure.
Syntax: set_routing_mode -route_mode <mode>
# Set signal integrity aware routing
set_routing_mode -route_mode signal_integrity
# Fast mode for quick iterations
set_routing_mode -route_mode fast
# Default mode
set_routing_mode -route_mode standard
What it is: global_route plans the coarse routing topology by assigning nets to routing tracks and global routing cells (GCells) without committing to specific metal layers or via locations. It produces a congestion map that shows where routing resources are overused.
Where we use it: After placement and before detailed routing. Global routing identifies congestion hotspots that need fixing through floorplan changes, placement refinement, or routing guides.
Syntax: global_route [-congestion_map <file>] [-timing_driven <bool>]
# Run global routing with congestion map
global_route -congestion_map reports/global_cong.rpt
# Global route with timing-driven mode
global_route -timing_driven true
# Save congestion map for analysis
report_congestion > reports/congestion.rpt
What it is: detail_route performs detailed routing which assigns specific metal tracks, vias, and wire widths to every net. It follows the global route plan and ensures all design rule checking (DRC) constraints are met for spacing, width, and enclosure.
Where we use it: After global routing. Detailed routing is the most compute-intensive step in physical design. It handles layer assignment, via selection, and wire spreading to meet DRC requirements.
Syntax: detail_route [-effort <effort>] [-incremental <bool>] [-drc_prevention <bool>]
# Detailed routing with high effort
detail_route -effort high
# Incremental detailed routing
detail_route -incremental true
# Detailed route with DRC prevention
detail_route -drc_prevention true
What it is: route_opt optimizes the routed design to fix timing violations, reduce crosstalk, and improve signal integrity. It can reroute critical nets, insert buffers, or adjust wire widths without changing the overall routing topology.
Where we use it: After initial detailed routing. Route optimization is an iterative process that addresses setup and hold timing, crosstalk delay, and antenna violations.
Syntax: route_opt [-effort <effort>] [-focus <focus>]
# Optimize routing with high effort
route_opt -effort high
# Optimization for timing only
route_opt -focus timing
# Optimization for DRC cleanup
route_opt -focus drc
What it is: fix_drc automatically repairs design rule violations such as spacing errors, width violations, via enclosure, and metal density issues. It pushes wires apart, adjusts via placement, or reroutes small segments to clear violations.
Where we use it: After detailed routing and check_drc. DRC fixing is run until all violations are cleared or the remaining violations require manual intervention or floorplan changes.
Syntax: fix_drc [-violation_types {<list>}] [-incremental <bool>]
# Fix all DRC violations
fix_drc -violation_types {all}
# Fix specific violation types
fix_drc -violation_types {spacing width}
# Incremental DRC fix
fix_drc -incremental true
What it is: eco_route performs Engineering Change Order (ECO) routing for incremental design changes after the main routing is complete. It routes only the modified nets without disturbing the existing routing of unchanged nets.
Where we use it: During timing closure when small netlist changes are made, or when fixing late-stage timing violations. ECO routing preserves the existing routing as much as possible to avoid introducing new violations.
Syntax: eco_route [-modify_via_only] [-modified_nets_only] [-timing_driven <bool>]
# ECO route with via-only changes
eco_route -modify_via_only
# ECO route modified nets only
eco_route -modified_nets_only
# ECO route with timing-driven mode
eco_route -timing_driven true
What it is: check_drc runs design rule checking on the routed design to identify violations of the foundry's manufacturing rules. It checks spacing, width, minimum area, via enclosure, metal density, and antenna rules.
Where we use it: After each routing iteration and as part of the final signoff flow. Zero DRC violations are required before tape-out. Use report_route and check_route for connectivity and completeness checks.
Syntax: check_drc [-layer <layer>] [-violation_types {<list>}] [-output <file>]
# Full DRC check
check_drc > reports/drc_all.rpt
# Check specific layer
check_drc -layer M1 > reports/drc_m1.rpt
# Check specific violation type
check_drc -violation_types {spacing} > reports/drc_spacing.rpt
# Check routing completeness
check_route > reports/route_connectivity.rpt
What it is: report_congestion generates a detailed report of routing congestion showing areas where routing resource demand exceeds available supply. It highlights hotspots by GCell location and by metal layer.
Where we use it: After global routing to identify congestion problems early. Also used after detailed routing to verify that congestion was resolved. Severe congestion may require floorplan adjustments, cell spreading, or routing blockage insertion.
Syntax: report_congestion [-by_layer] [-output <file>]
# Basic congestion report
report_congestion > reports/congestion.rpt
# Congestion by layer
report_congestion -by_layer > reports/cong_by_layer.rpt
# Congestion map (tool-specific)
global_route -congestion_map reports/cong_map.txt
Mastering these Routing and Signoff commands is essential for achieving design closure. A cleanly routed design with zero DRC violations and acceptable congestion is ready for signoff and tape-out. Continue to Part 7: Timing Constraints →