BeginnerQuestion 121 of 127Source: Synopsys ICC2 Implementation User Guide: Routing

What is a routing blockage, and when do you use one?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

A routing blockage is a region where routing is not allowed on the layers you name. Zroute treats it as a hard rule, so wires detour around it. You use one to keep routing off sensitive areas, away from macro pins or edges that cause DRCs, or to reserve space, and you add -zero_spacing when the goal is to keep vias out.

Technical Reference DiagramWhat is a routing blockage, and when do you use one?
A hatched routing blockage over a macro corner on one layer, with signal wires detouring around it and a ledger of tracks lost.

Technical Explanation

  • create_routing_blockage takes a boundary, a rectangle, polygon or the area of existing objects, and the layers to block. It can be restricted to certain net types with -net_types, such as signal only.
  • By default a routing blockage is treated as real metal for extraction and design rule checks, and the default name is RB_objId.
  • -zero_spacing removes the minimum spacing rule between the blockage edge and net shapes, and makes the blockage not count as metal for extraction or DRC. It is required when the blockage is meant to prevent via insertion.
  • A corridor blockage, created with -reserve_for_top_level_routing, acts as a normal blockage inside the block, but frame view extraction removes it so the top level can route through that space.
  • Blockages cost capacity. Every track under a blockage is gone for the layers it covers, and the congestion map shows it.
  • Blockages are different from routing guides. A guide steers or limits routing and Zroute honours it, but a blockage is an absolute "no".

What To Check

  • That each blockage is on the intended layers and net types, with get_routing_blockages.
  • Congestion next to blockages, where rerouted nets pile up.
  • Whether a blockage meant to prevent vias has -zero_spacing.
  • Signal pins under a blockage, which become blocked pins.

Command Checks & Actions

ICC2create_routing_blockage -boundary {{0 0} {40 40}} -layers {M2} -net_types signal

Blocks signal routing on M2 inside the given rectangle.

ICC2create_routing_blockage -boundary {{0 0} {40 40}} -layers {VIA1} -net_types signal -zero_spacing

Prevents VIA1 insertion in the area without adding a spacing halo.

ICC2get_routing_blockages *

Lists the blockages in the block so you can check layers and names.

ICC2remove_routing_blockages -all

Removes all routing blockages, for example before rebuilding them from a script.

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): Every blockage has a stated reason, no signal pins are underneath, and congestion around it stays below overflow.
  • Suspicious (illustrative): A blockage causing a local overflow band next to it, still fixable by moving it or narrowing its layers.
  • Hard stop: Signal or macro pins under a blockage with no access, or a blockage meant to stop vias created without -zero_spacing, which frame view extraction then does not use to trim the via region.

Common Mistake

The Trap: Drawing a blockage on all layers when only one layer needed protection. A blockage meant to keep M2 off an analog macro edge also blocks M3 to M6. Nets that could have passed overhead now detour around the macro, and the channel beside it overflows.

What The Interviewer Is Testing

  • Whether you know a blockage is a hard constraint.
  • Do you know what -zero_spacing changes and when it is required?
  • A strong answer shows you scope blockages by layer and net type instead of blocking everything.

Follow-up Question & Model Response

"When would you use a routing guide instead of a blockage?"

Candidate Model Response: Use a guide when you want to influence routing without forbidding it: limit track utilization in an area, prefer one direction, or encourage river routing in a tight channel. Zroute honours guides, but they leave room for the router to find solutions. Use a blockage when routing in that area is simply not allowed, for example over a sensitive analog block. A blockage where a guide would do throws away capacity the router could have used carefully.

Practical Example

Tapeout Scenario: A block has a PLL macro that must have no signal wires on M2 and M3 within 5 um of its analog edge (illustrative). The engineer creates create_routing_blockage -boundary {{210 400} {215 460}} -layers {M2 M3} -net_types signal. The strip is 5 um wide and 60 um tall, so every horizontal M3 track crossing that 60 um band is cut for 5 um at the macro edge. The congestion map shows the next GCells over at 92% horizontal usage, tight but not overflowing. An earlier version that blocked all layers had pushed them to 118%.

PnR Flow Mentor Guide

Read the complete 8-chapter PnR Flow Mentor Guide free on the web — library setup through placement, clock tree synthesis, routing, chip finishing, hierarchical implementation, and ECO, all the way to stream-out.

PnR Flow Physical Design Mentor Guide — eight chaptersPnR Flow Mentor GuideEight chapters, library setup through to stream-out. →