IntermediateQuestion 260 of 142Source: pnr-placement-cts-skill:sec5

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 Reference DiagramWhat does create_clock_drivers actually do, and what step do you always have to run afterward?
What does create_clock_drivers actually do, and what step do you always have to run afterward?, illustrating the physical design concept.

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

ICC2create_clock_drivers -loads [get_nets clkA] -lib_cells [get_lib_cells my_lib/CKBUF8X] -boxes {5 5}

Inserts driver cells on a 5x5 grid.

ICC2legalize_placement

Required after every create_clock_drivers call -- not automatic.

ICC2check_legality

Confirms 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

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.

Timing Constraints (SDC) Handbook — nine chaptersSDC ConstraintsNine chapters on clocks, exceptions, and constraint linting. →