IntermediateQuestion 160 of 162Source: Synopsys ICC2 Implementation User Guide: Routing

What are dangling and floating shapes, and how do you clean them up safely?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

A dangling shape is a piece of wire attached to a net at one end that goes nowhere; a floating shape belongs to a net but touches nothing of it. Both are usually left behind by rerouting and ECOs, and they add capacitance and can cause DRCs. remove_redundant_shapes deletes them without changing connectivity, but it skips open nets and nets with DRCs, so you re-check afterwards.

Technical Reference DiagramWhat are dangling and floating shapes, and how do you clean them up safely?
A net with a dangling stub hanging off it and a separate floating island of metal, both in red, then the same net after cleanup.

Technical Explanation

  • Rerouting often leaves pieces of old wire behind. A stub still attached to the net is dangling; a piece that lost its connection entirely is floating.
  • They carry no signal but still add capacitance, can create spacing violations and show up as floating routes in check_lvs.
  • remove_redundant_shapes reads DRC information stored in the design and removes dangling and floating shapes on all nets by default. -initial_drc_from_input false makes it run check_routes itself instead.
  • It does not change topology, connections or terminals. It also ignores open nets and nets with DRC violations, because removing metal from those could make things worse.
  • -nets, -layers and -route_types limit the scope. -remove_loop_shapes true also removes redundant loops, which are not removed by default.
  • You can turn off parts of the cleanup with -remove_dangling_shapes false or -remove_floating_shapes false, and -report_changed_nets true lists the nets it changed.
  • Afterwards, run check_routes again, and check_lvs if floating shapes were the reason you ran it.
  • The cleanup also helps timing a little. Every stub adds capacitance to its net, so after several ECO rounds a busy net can carry a few femtofarads of dead metal. Removing it lowers that load, which is one more reason to re-extract after a large cleanup.

What To Check

  • Floating routes reported by check_lvs before and after.
  • Which nets were changed, with -report_changed_nets true.
  • Open nets and DRC nets, which the command skips and which need their own fix first.
  • check_routes result after cleanup.

Command Checks & Actions

ICC2check_routes

Refreshes the stored DRC information the cleanup relies on.

ICC2remove_redundant_shapes -report_changed_nets true

Removes dangling and floating shapes on all nets and lists the changed nets.

ICC2remove_redundant_shapes -nets [get_nets my_net] -remove_loop_shapes true

Cleans one net, including redundant loops.

ICC2check_lvs -checks {floating_routes} -max_errors 0

Confirms no floating shapes remain.

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): Floating routes go to zero, check_routes is unchanged or better, and no nets lose connectivity.
  • Suspicious (illustrative): Some floating shapes remain on nets with DRCs or opens, which the command skipped.
  • Hard stop: Cleanup run on a stale DRC database, removing shapes on nets whose state has since changed.

Common Mistake

The Trap: Running remove_redundant_shapes and expecting it to fix a net that is open because of a stray stub. The command ignores open nets entirely, so nothing changes. The open needs ECO routing first; cleanup comes after.

What The Interviewer Is Testing

  • Whether you can define dangling and floating shapes clearly.
  • Do you know what the command will not touch?
  • A strong answer shows you verify afterwards rather than assume.

Follow-up Question & Model Response

"Why does the command skip nets with DRCs?"

Candidate Model Response: On a net with violations, the tool cannot be sure which shapes are redundant and which are part of a connection the router is still fixing. Removing the wrong piece could open the net or make the violation worse. So it leaves those nets alone. Fix the DRCs first, then run the cleanup again.

Practical Example

Tapeout Scenario: After two ECO rounds, check_lvs -checks {floating_routes} -max_errors 0 reports 58 floating routes, and 140 nets have dangling stubs (illustrative). remove_redundant_shapes -report_changed_nets true removes shapes on 181 nets. check_lvs then shows 4 floating routes left, all on 2 nets that still had DRCs. After an incremental detail routing pass fixes those DRCs, a second cleanup clears the last 4, and check_routes shows no change in open nets.

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. →