BeginnerQuestion 18 of 187

Why must current_block be checked before every sanity run?

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

Short Answer

Think of current_block as the "you are here" pointer in ICC2 — almost every command [PrimeTime: get_cells, report_timing, place_opt, you name it] silently operates on whatever block is currently active, not the block whose name you typed in your last open_block. If you have several blocks open in the same session (a hierarchical flow, a sub-block plus the top level, or two design revisions loaded for comparison), a query can run cleanly against the wrong block and return a perfectly formatted, completely irrelevant answer.

Technical Reference DiagramWhy must current_block be checked before every sanity run?

Technical Explanation

  • There's no error message for this — the syntax is valid, the collection isn't empty, the report prints. The only way to catch it is to check current_block (or print it in your log) before trusting the result.
  • This is the PD equivalent of double-checking which file is open before you hit save: cheap to check, expensive to debug after the fact once ten more commands have run on the wrong context.
  • Good practice: start every sanity/debug script with current_block, and have your reports echo the block name in their header so a stale log is immediately recognizable.

Visual Verification

Visual VerificationCurrent Block Context & Hierarchical Scope Execution

EDA commands execute strictly within the active design block (current_block). Unintended block context leads to applying constraints or ECO changes to the wrong hierarchical container.

What To Check

  • Warning sign: Counts or scenarios unexpectedly match another checkpoint.
  • Inspect: Start with one named object in the report and trace it to the netlist, library, or SDC statement that created it.
  • Correct: Select the intended block explicitly and repeat the baseline reports before any mutation.

Command Checks & Actions

  • current_block: confirms the active design block
  • get_blocks *: lists available design blocks

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

Healthy, Suspicious & Hard-stop Results

  • Expected: Most ICC2 queries and reports operate on the current block, so correct syntax in the wrong context gives a polished but wrong answer.
  • 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.

Physical Design & Planning Handbook

Dive into 14 comprehensive chapters covering netlist sanity, FinFET grids, macro placement, power grids, CTS, and timing budgeting.

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.