What does create_clock_drivers actually do, and what step do you always have to run afterward?
From PDVerse PnR Interview Handbook · pdVerse Mentor Guide
Short Answer
create_clock_drivers inserts clock driver cells at specified loads, using either -boxes (a grid over the core or a bounded area) or -location (exact locations) for placement, with -lib_cells specifying the driver library cells. Critically, the command does NOT legalize -- you must run legalize_placement after every create_clock_drivers call, since the inserted drivers are marked fixed/dont-touch but not automatically legalized into the design.
Technical Explanation
- create_clock_drivers inserts clock driver cells at specified loads (-loads), placed via -boxes (a grid over the core, optionally bounded with -boundary) or -location (exact coordinates).
- -lib_cells specifies which library cells to use as drivers -- single-rail and dual-rail drivers are both supported.
- Clock drivers are marked fixed and dont-touch by the command, but the command does NOT legalize the design.
- You must run legalize_placement after every create_clock_drivers call -- skipping this leaves inserted drivers in a potentially illegal, unlegalized state.
What To Check
- Warning sign: driver insertion completes cleanly, but a subsequent placement check reports illegal cell positions.
- Inspect: confirm whether legalize_placement was actually run after the create_clock_drivers call, not just assumed to happen automatically.
- Correct: run legalize_placement explicitly -- it is never implicit in create_clock_drivers.
Command Checks & Actions
create_clock_drivers -loads [get_nets clkA] -lib_cells [get_lib_cells my_lib/CKBUF8X] -boxes {5 5}Inserts driver cells on a 5x5 grid.
legalize_placementRequired after every create_clock_drivers call -- not automatic.
check_legalityConfirms the drivers actually landed on legal sites.
Healthy, Suspicious & Hard-stop Results
- Expected: every inserted driver lands on a legal site after the required legalize_placement call.
- Investigate: drivers appear correctly placed in the layout view but check_legality flags them -- confirm legalize_placement actually ran, not just that the drivers visually look fine.
- Stop: create_clock_drivers is called repeatedly without an intervening legalize_placement -- illegal placements can compound across multiple insertion calls.
Common Mistake
The Trap: Assuming create_clock_drivers legalizes its own output, and skipping the required legalize_placement call -- the command explicitly does not legalize.
What The Interviewer Is Testing
Whether you know create_clock_drivers has a required follow-up step (legalize_placement) that isn't automatic, a common source of "illegal cell" surprises.
Practical Example
Debug Scenario: A script inserts mesh drivers with create_clock_drivers, then immediately runs route_clock_straps without an intervening legalize_placement -- the routing step fails because the drivers were never actually legalized into valid positions first.
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.

Continue practising