BeginnerQuestion 29 of 187

What does an empty collection during SDC loading indicate?

From PDVerse PnR Interview Handbook, part of the pdVerse Mentor Guide

Short Answer

An empty collection means your selector (something like get_ports, get_cells, get_pins) matched zero objects in the current design โ€” the command didn't error, it just quietly found nothing. This is one of the most dangerous "silent failures" in SDC loading, because a constraint applied to an empty collection isn't an error โ€” it just does nothing, and your design proceeds as if that constraint never existed.

Technical Reference DiagramWhat does an empty collection during SDC loading indicate?

Technical Explanation

  • Common causes: a hierarchy path that changed between when the SDC was written and when it's being applied, a name that got renamed or uniquified during synthesis/optimization, a bus notation mismatch ([0] vs _0_), or the object simply not existing yet at the point the SDC is read.
  • The fix isn't to ignore the warning โ€” it's to actually check what changed. Run the same selector interactively and see what it should have matched, then trace why it didn't.
  • "

Visual Verification

Visual VerificationEmpty SDC Collection Root Causes & Silent Path Drops

When wildcards or bus naming conventions (e.g., data[0] vs data_reg_0_) fail to match netlist pins, SDC collections return empty sets, leaving critical paths completely unconstrained.

What To Check

  • Warning sign: The command executes with a warning yet constrains zero ports or pins.
  • Inspect: Start with one named object in the report and trace it to the netlist, library, or SDC statement that created it.
  • Correct: Inspect the exact selector against the linked design and obtain a revision-correct constraint; never replace it immediately with *.

Command Checks & Actions

  • get_ports <pattern>: selects boundary ports
  • get_pins -hierarchical <pattern>: selects instance pins

Run the commands in order. Each line answers a separate part of the check.

Healthy, Suspicious & Hard-stop Results

  • Expected: A selector found no current design objects, commonly because hierarchy, names, buses, or optimisation changed.
  • Stop before floorplanning when required logic or timing coverage is missing or unexplained.

Common Mistake

The Trap: Do not assume the check passed just because ICC2 continued. Fix or narrowly justify the named objects, then rerun the same command.

What The Interviewer Is Testing

Be ready to explain why this matters before floorplanning.

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.

Offline PDF Bundle

Want all 1109 questions offline?

Get the complete 4-book PDF bundle (PnR, STA, MMMC, Low Power) with a clickable table of contents - no ads, no internet needed.

See what's inside the bundle
PnR Flow Physical Design Mentor Guide โ€” eight chaptersPnR Flow Mentor GuideEight chapters, library setup through to stream-out.