What does set_isolate_ports actually do, and which ports does it deliberately skip?
From PDVerse PnR Interview Handbook, part of the pdVerse Mentor Guide
Short Answer
set_isolate_ports inserts a buffer/inverter pair at specified ports for model accuracy -- {in3 out1} isolates those two ports; -driver LIBCELL_BUFF picks a specific driver cell; -type inverter picks an inverter pair instead. It is NOT applied to bidirectional ports, ports defined as clock sources or power pins, or ports connected to dont_touch nets -- these are deliberate, documented exclusions, not gaps to work around.
Technical Explanation
- set_isolate_ports inserts a buffer/inverter pair at specified ports specifically for model accuracy -- e.g. set_isolate_ports {in3 out1} isolates those two named ports.
- -driver LIBCELL_BUFF picks a specific driver cell for the isolation buffer; -type inverter picks an inverter pair instead of a buffer pair.
- It is NOT applied to bidirectional ports, ports defined as clock sources or power pins, or ports connected to dont_touch nets -- these are deliberate, documented exclusions.
- -force overrides in cases where the isolation would otherwise be skipped for a reason the user wants to override anyway.
Common Mistake
The Trap: Expecting set_isolate_ports to isolate every port you name, without checking whether any of them fall into the documented exclusion categories (bidirectional, clock source, power, or dont_touch-net-connected) that silently skip isolation unless -force is used.
Follow-up Question & Model Response
"Why would isolating a clock source port specifically be excluded by default, rather than treated the same as an ordinary data port?"
Candidate Model Response: Because inserting a buffer/inverter pair at a clock source would add real, uncharacterized delay right at the clock's entry point into the design -- exactly the kind of change that would corrupt the clock's own timing model rather than improving analysis accuracy, which is the opposite of what port isolation is meant to achieve.
Practical Example
Debug Scenario: set_isolate_ports {clk_in data_out} is called expecting both ports isolated, but only data_out actually gets a buffer pair inserted -- clk_in was silently skipped because it's a defined clock source port, one of the documented default exclusions.
PnR Flow Mentor Guide
Master the Physical Design Implementation Flow
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.

Continue practising