IntermediateQuestion 12 of 222

How do you debug unresolved references or missing library cells?

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

Short Answer

"Unresolved reference" just means one thing: an instantiated design or cell name couldn't be bound to any actual definition โ€” your job is to find out why, not to make the error message disappear. Start by pinning down the exact instance and the exact referenced name from the diagnostic, then classify it: is it supposed to be a standard cell, a hard macro, a hierarchical sub-block, or a deliberate black box?

Technical Reference DiagramHow do you debug unresolved references or missing library cells?

Technical Explanation

  • "Unresolved reference" just means one thing: an instantiated design or cell name couldn't be bound to any actual definition โ€” your job is to find out why, not to make the error message disappear.
  • Start by pinning down the exact instance and the exact referenced name from the diagnostic, then classify it: is it supposed to be a standard cell, a hard macro, a hierarchical sub-block, or a deliberate black box?
  • From there, check the reference-library list and search paths โ€” but don't stop at "the search found something with that name"; confirm the library actually contains the right release and the right views, and that pin/interface details actually match (a same-named cell with different pins isn't a valid fix).
  • Common root causes: an omitted macro library, a netlist mapped against the wrong standard-cell family, a renamed module, incomplete hierarchy, or a stale library revision. After fixing the linking setup, rerun the unresolved-reference report, compare design counts against the handoff, and rerun timing/physical/power-intent checks โ€” a newly resolved model can change all of those results. And if you deliberately leave something unresolved as a black box, document the owner and reason; an undocumented one can silently hide missing logic or timing.

Command Checks & Actions

ICC2link_block -rebind

Re-attempts binding of blocks already in the library against the current search_path -- the direct fix-and-diagnose command for unresolved references.

ICC2set_ref_libs -rebind

Rebinds reference library paths per the current search_path, the fix when a library moved or was renamed rather than the block itself having a bad reference.

ICC2report_ref_libs

Shows exactly which reference libraries are open and carrying technology info, narrowing down which specific library failed to bind rather than treating "unresolved references" as one undifferentiated error.

Common Mistake

The Trap: Replacing unknown cells with arbitrary buffers or suppressing link warnings to proceed with placement.

Follow-up Question & Model Response

"Why can a library-list change affect already linked instances?"

Candidate Model Response: Binding and reference ordering can change which definitions are used; inspect the documented rebind behavior and resulting models.

Practical Example

Tapeout Scenario: The netlist instantiates SRAM_1K32 but only SRAM_51232 is present in the macro library. Renaming the netlist reference to the available macro changes the design specification. Obtain or regenerate the correct model instead.

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.