Gate Level Simulation

Gate-Level Simulation (GLS) is the functional and timing verification technique that simulates the chip design at the synthesized netlist level with actual gate delays annotated from the Standard Delay Format (SDF) file — bridging the gap between fast RTL simulation (which ignores physical delays) and static timing analysis (which doesn't verify functionality), catching timing-dependent functional bugs like race conditions, glitches, and clock domain crossing errors that neither RTL simulation nor STA alone can detect.

Why Gate-Level Simulation

  • RTL simulation: Verifies function → zero delay → cannot catch timing bugs.
  • STA: Verifies timing → but assumes correct function → cannot catch functional bugs.
  • GLS: Verifies function WITH timing → catches bugs that require both together.
  • Examples: Glitch causes spurious latch capture, racing paths cause wrong data selection, async reset releases at wrong time.

GLS Flow

[Gate Netlist (.v)]  + [SDF File (.sdf)]  + [Testbench]
  from Synthesis/PnR     from Timing Analysis   same as RTL
          ↓                     ↓                    ↓
       [Gate-Level Simulator (VCS, Xcelium, QuestaSim)]
          ↓
       [Compare outputs vs. RTL golden reference]

SDF Annotation

// SDF file snippet
(CELL
  (CELLTYPE "AND2X1")
  (INSTANCE u_core/u_alu/g123)
  (DELAY
    (ABSOLUTE
      (IOPATH A Y (0.025:0.030:0.038) (0.020:0.025:0.032))
      (IOPATH B Y (0.028:0.033:0.042) (0.022:0.028:0.036))
    )
  )
)
  • SDF contains: Cell delays, interconnect delays, setup/hold timing checks.
  • Min:Typ:Max values for each delay → simulate at each corner.
  • Back-annotated from actual layout parasitics → physically accurate.

Types of GLS

TypeDelaysCatchesRuntime
Zero-delay GLSNo delaysStructural bugs (missing connections)2-5× RTL
Unit-delay GLSAll delays = 1 unitBasic race conditions3-7× RTL
Full-timing GLS (SDF)Actual gate + wire delaysAll timing-dependent bugs10-100× RTL
Back-annotated GLSPost-PnR parasiticsMost accurate, signoff quality50-200× RTL

Bugs Found by GLS (Not by RTL Sim or STA)

Bug TypeWhy RTL MissesWhy STA Misses
Glitch on clock gate enableZero-delay enable is cleanSTA checks setup/hold, not glitch
Race between reset and clockReset and clock are concurrent in RTLSTA doesn't simulate async reset
CDC data corruptionRTL model assumes instant synchronizationSTA flags but doesn't simulate
Timing-dependent MUX selectMUX select arrives same cycle → RTL picks one arbitrarilySTA verifies paths independently
Init sequence timingPower-on sequence has no delay in RTLSTA doesn't cover power-on

Practical Challenges

ChallengeImpactMitigation
Runtime50-200× slower than RTLReduce test vector set, use targeted tests
X-propagationUninitialized signals create X → masks bugs or causes false failuresUse X-prop simulation mode
Memory modelsLarge memories slow simulationUse behavioral memory models
Analog interfacesGLS cannot model analog behaviorBlack-box analog blocks
DebugGate-level waveforms harder to readCross-reference to RTL hierarchy

Gate-level simulation is the verification safety net that catches the timing-functional interaction bugs that slip through all other verification methods — while STA ensures timing correctness under assumed functionality and RTL simulation verifies functionality under ideal timing, GLS is the only method that verifies both together, making it an indispensable step for taping out reliable silicon despite its significant runtime cost.

Take gate level simulation further

Ask the copilot about this term, or have our engineers assess it against your process.