ExpertQuestion 281 of 111Source PDF page undefined

Why does a clock mesh specifically need SPICE-level analysis instead of the normal STA delay-calculation flow, and what are the actual prerequisites?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

A clock mesh has multiple drivers feeding the same net, which normal STA delay calculation isn't built to resolve accurately -- analyze_subcircuit performs transistor-level circuit simulation to back-annotate accurate timing instead. Prerequisites: a detail-routed clock mesh net, a circuit-level model per gate and transistor model per transistor, and access to a SPICE simulator (NanoSim, FineSim, or HSPICE) -- this is a heavier, more accurate analysis specifically because mesh topology genuinely needs it.

Technical Reference DiagramWhy does a clock mesh specifically need SPICE-level analysis instead of the normal STA delay-calculation flow, and what are the actual prerequisites?
Why does a clock mesh specifically need SPICE-level analysis instead of the normal STA delay-calculation flow, and what are the actual prerequisites?, illustrating the physical design concept.

Technical Explanation

  • A clock mesh has multiple drivers feeding the same net -- normal STA delay calculation isn't built to resolve that accurately, since it typically assumes a single driver per net.
  • analyze_subcircuit performs transistor-level circuit simulation specifically to back-annotate accurate timing onto the mesh, given that multi-driver reality.
  • Prerequisites: a detail-routed clock mesh net (not just globally routed), a circuit-level model per gate and a transistor model per transistor, and access to a SPICE simulator (NanoSim, FineSim, or HSPICE).
  • For multi-driver mesh nets specifically, set_disable_timing disables all but one driver -- the anchor driver -- so the annotation has a single reference point rather than an ambiguous multi-source one.
  • The five steps in order: RC extraction (parasitics), SPICE deck generation, SPICE simulation run, timing annotation file generation, and applying those annotation files -- each has a standalone flag (-extraction, -create_spice_deck, -run_simulation, -write_annotation, -apply_annotation) if you need to run just one step.

Formula Or Decision Rule

Steps: RC extraction -> generate SPICE files -> run SPICE simulation -> generate timing annotation files [SDC: set_disable_timing/set_annotated_delay/set_annotated_transition] -> apply annotation files.

What To Check

  • Warning sign: STA timing on a clock mesh net looks suspiciously optimistic or pessimistic compared to what physical intuition suggests.
  • Inspect: confirm whether analyze_subcircuit has actually been run and its annotation applied, or whether the mesh is still being timed with standard single-driver delay calculation.
  • Correct: run the full analyze_subcircuit flow (extraction through annotation application) on the mesh net before trusting its reported timing.

Command Checks & Actions

ICC2analyze_subcircuit -net clk_mesh -extraction

Runs RC extraction as a standalone step.

ICC2analyze_subcircuit -net clk_mesh -simulator hspice -name clk_mesh_analysis

Runs the full flow with HSPICE as the simulator.

ICC2analyze_subcircuit -net clk_mesh -apply_annotation

Applies previously-generated timing annotation files.

Healthy, Suspicious & Hard-stop Results

  • Expected: mesh net timing reflects analyze_subcircuit's SPICE-level annotation, not the default single-driver delay-calculation assumption.
  • Investigate: mesh timing hasn't changed after a design change that should have affected it -- confirm analyze_subcircuit was re-run and re-applied, since stale annotation won't reflect the new design state.
  • Stop: a clock mesh is being signed off on standard STA delay-calculation numbers alone, with no analyze_subcircuit annotation ever applied -- that's not accurate for a genuinely multi-driver structure.

Common Mistake

The Trap: Trying to get accurate mesh timing from normal STA delay calculation without running analyze_subcircuit -- multi-driver mesh nets are exactly the case standard delay calculation isn't built to handle correctly.

What The Interviewer Is Testing

Whether you understand WHY a mesh specifically needs SPICE-level analysis (multi-driver nets) rather than just knowing analyze_subcircuit exists as a command.

Practical Example

Debug Scenario: A clock mesh's reported skew from standard STA looks implausibly good given its physical structure. Running analyze_subcircuit's full flow (extraction, SPICE simulation, annotation generation and application) produces a meaningfully different, more physically credible skew number -- because standard delay calculation was never built to resolve the mesh's multiple simultaneous drivers correctly.

Physical Design & Planning Handbook

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