IntermediateQuestion 254 of 142Source PDF page undefined

How do you actually invoke split_clock_cells, and what are the two ways to specify what gets split?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

You can split by cell (-cells [get_cells U1/ICG*]) to target specific clock cells directly, or by load (-loads {list1 list2}) to specify which load groups should end up on which resulting split cell -- two different entry points into the same underlying operation, chosen based on whether you're thinking in terms of cells or in terms of load distribution.

Technical Reference DiagramHow do you actually invoke split_clock_cells, and what are the two ways to specify what gets split?
How do you actually invoke split_clock_cells, and what are the two ways to specify what gets split?, illustrating the physical design concept.

Technical Explanation

  • -cells [get_cells U1/ICG*] targets specific clock cells directly for splitting -- you name the cells, the tool figures out the load division.
  • -loads {list1 list2} specifies which load groups should end up on which resulting split cell -- you control the load division directly instead of leaving it to the tool.
  • Both are entry points into the same underlying split_clock_cells operation; which one you use depends on whether you're thinking in terms of "which cells" or "which loads go where."

Common Mistake

The Trap: Using -cells when you actually need explicit control over which loads land on which resulting cell -- -cells lets the tool decide the split, -loads doesn't.

Follow-up Question & Model Response

"If you need a specific load to end up on a specific resulting split cell, which option must you use and why?"

Candidate Model Response: -loads must be used, since -cells lets the tool decide the load division automatically and gives no direct control over which specific load ends up on which resulting cell.

Practical Example

Practical Example: split_clock_cells -cells [get_cells U1/ICG*] splits every matching ICG cell with an automatic load division. split_clock_cells -loads [list loads1 loads2] instead explicitly assigns loads1 to one resulting cell and loads2 to the other.

Physical Design & Planning Handbook

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