πŸ”§ Physical Design Blog

Part 6 of 10

Routing

Connecting all the signals with metal wires

By Praveen Kumar Vagala

1,067 views

What is Routing?

Routing creates metal connections between cell pins according to the netlist.

Before Routing: After Routing: β”Œβ”€β”€β”€β” β”Œβ”€β”€β”€β” β”Œβ”€β”€β”€β”β•β•β•β•β•β•β•β•β•β”Œβ”€β”€β”€β” β”‚ A β”‚ β†’ β”‚ B β”‚ β”‚ A β”‚ β”‚ B β”‚ β””β”€β”¬β”€β”˜ β””β”€β”€β”€β”˜ β””β”€β”¬β”€β”˜ β•‘ β””β”€β”¬β”€β”˜ β”‚ β”‚ β•‘ β”‚ β”‚ β”Œβ”€β”€β”€β” ╠══════╝ β”‚ └──→ β”‚ C β”‚ β•‘ β”‚ β””β”€β”€β”€β”˜ β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β• β”‚ via β”‚ β”Œβ”€β”΄β”€β” β”Œβ”€β”΄β”€β” β”‚ C β”‚ β”‚ C β”‚ β””β”€β”€β”€β”˜ β””β”€β”€β”€β”˜ Logical connections Physical metal wires

Routing Stages

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ 1. GLOBAL ROUTING (Track Assignment) β”‚ β”‚ β€’ Divide chip into regions (GCells) β”‚ β”‚ β€’ Plan rough paths through regions β”‚ β”‚ β€’ No actual wires yet β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ 2. DETAIL ROUTING β”‚ β”‚ β€’ Create actual metal geometries β”‚ β”‚ β€’ Follow DRC rules (width, spacing) β”‚ β”‚ β€’ Insert vias at layer changes β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ 3. SEARCH & REPAIR (DRC Fixing) β”‚ β”‚ β€’ Find and fix DRC violations β”‚ β”‚ β€’ Reroute problematic areas β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Metal Layers

Different layers for different purposes:

Usage Direction M10-M12 ═══ Power (thick) Horizontal M7-M9 ═══ Semi-global Mixed M5-M6 β•‘β•‘β•‘ Signal routing Alternating M3-M4 ═══ Signal routing Alternating M1-M2 β•‘β•‘β•‘ Local connections Alternating Odd layers: Horizontal (M1, M3, M5...) Even layers: Vertical (M2, M4, M6...) (Convention varies by foundry)

Routing Grid and Tracks

Track 1 Track 2 Track 3 Track 4 β”‚ β”‚ β”‚ β”‚ ───┼────────┼────────┼────────┼─── M3 β”‚ β”‚ β”‚ β”‚ β”‚ ════β•ͺ════════β•ͺ════ β”‚ Wire on M3 β”‚ β”‚ β”‚ β”‚ ───┼────────┼────────┼────────┼─── β”‚ β”‚ β”‚ β”‚ β•‘ β•‘ β•‘ β•‘ M2 (vertical) β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Via β”‚ β”‚ ───┼────────┼────╳───┼────────┼─── M1 β”‚ β”‚ β”‚ β”‚ Wires follow tracks (routing grid) Vias connect layers

Via Structure

Cross-section: Top view: ══════════ M3 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” ┃┃┃ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β” β”‚ ══════════ M2 β”‚ β”‚ Via β”‚ β”‚ M2 ┃┃┃ β”‚ β”‚Array β”‚ β”‚ ══════════ M1 β”‚ β””β”€β”€β”€β”€β”€β”€β”˜ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ Via stack connects M1 multiple layers

Design Rule Check (DRC) in Routing

RuleDescription
Minimum widthWire can't be too thin
Minimum spacingWires must be apart
Via enclosureMetal must surround via
End-of-lineExtra spacing at wire ends
Min areaMetal shapes need minimum area

Routing Challenges

Congestion

GCell overflow: β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ 4 tracks β”‚ 4 tracks β”‚ β”‚ available β”‚ available β”‚ β”‚ β”‚ β”‚ β”‚ 6 nets need β”‚ 2 nets need β”‚ β”‚ to cross! β”‚ to cross β”‚ β”‚ β”‚ β”‚ β”‚ OVERFLOW! β”‚ OK β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ Solutions: - Spread cells in placement - Use more routing layers - Increase GCell density

Antenna Effect

Long metal wires can damage gates during manufacturing.

During manufacturing, plasma etches metal. Long wire collects charge β†’ damages thin gate oxide. ════════════════════════════════► Long wire β”‚ β”Œβ”€β”€β”΄β”€β”€β” β”‚Gate β”‚ ← Damaged! β””β”€β”€β”€β”€β”€β”˜ Fix: Add antenna diodes or break wire with layer changes.

Signal Integrity

Crosstalk

Victim net: ────────────────────────► ↑ coupling ↑ Aggressor: ════════════════════════► When aggressor switches: - Victim signal gets noise (glitch) - Victim timing changes (delay) Fix: Space wires, use shielding, different layers

Routing Commands (Innovus)

# Set routing options
setRouteMode -earlyGlobalHonorMsvRouteConstraint false
setRouteMode -timing true

# Global route
route_global

# Detail route
route_detail

# Or combined:
routeDesign

# Fix DRC violations
routeDesign -wireOpt

# ECO routing (incremental)
ecoRoute

# Check routing
verifyConnectivity
verify_drc

Route Optimization

# Post-route optimization
optDesign -postRoute

# Fix timing with routing
setOptMode -postRouteAllowOverlaps false
optDesign -postRoute -hold

# Fix SI (crosstalk)
optDesign -postRoute -si

Routing Quality Checks

CheckWhat to Look For
DRC violationsShould be 0
ShortsShould be 0
OpensShould be 0
Antenna violationsShould be 0
Congestion overflowShould be 0

Summary

StageKey Point
Global routingPlan paths, no actual wires
Detail routingCreate actual metal geometries
DRC fixingSearch and repair violations
AntennaAdd diodes for long wires
CrosstalkSI optimization needed