BeginnerQuestion 247 of 97Source PDF page undefined

What is a clock mesh driver, and how is it different from a tap driver?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

A mesh driver feeds the clock mesh itself -- the 2D grid of horizontal and vertical straps joined by vias at intersections -- and is inserted via create_clock_drivers with -short_outputs to tie all driver outputs together for the mesh. A tap driver is different: it's what feeds a local subtree off the mesh in a regular multisource clock tree, connected to the mesh but driving downstream logic, not the mesh grid itself.

Technical Reference DiagramWhat is a clock mesh driver, and how is it different from a tap driver?
What is a clock mesh driver, and how is it different from a tap driver?, illustrating the physical design concept.

Technical Explanation

  • A mesh driver feeds the clock mesh itself -- the 2D grid of horizontal and vertical straps joined by vias at intersections.
  • Mesh drivers are inserted via create_clock_drivers with -short_outputs, which ties all driver outputs together specifically for feeding a mesh.
  • A tap driver is different: it feeds a local subtree off the mesh in a regular multisource clock tree -- connected to the mesh, but driving downstream logic rather than the mesh grid itself.
  • Both use the same create_clock_drivers command, just with different options (-short_outputs for mesh, -boxes/-lib_cells for taps) -- the command doesn't have separate names for the two roles.

Common Mistake

The Trap: Assuming "clock driver" always means the same thing -- mesh drivers and tap drivers use the same command but serve genuinely different structural roles.

Follow-up Question & Model Response

"If both use create_clock_drivers, what option specifically distinguishes inserting a mesh driver from inserting a tap driver?"

Candidate Model Response: -short_outputs is the option specific to mesh drivers -- it ties all driver outputs together for the mesh; tap drivers use -boxes/-lib_cells for grid placement without that output-tying behavior.

Practical Example

Debug Scenario: A multisource clock tree's mesh looks correctly built, but downstream subtrees show unexpected latency -- checking the tap drivers (not the mesh drivers, which were already confirmed correct) is where the actual problem turns out to be.

Physical Design & Planning Handbook

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