Skip to content

GLS · Chapter 13 · Simulation Performance & Regression Strategy

Choosing What to Run in GLS

Because gate-level simulation is expensive, the goal is to run the right subset rather than everything. The rule is simple: run in GLS only what only GLS can catch. Those are the gate-level-specific checks that RTL simulation structurally cannot do, such as unknown, reset, and initialization behavior, a netlist-equivalence sanity pass, timing-dependent behavior with SDF, low-power transitions, and DFT scan. What GLS should not do is re-run the full functional coverage suite, because that is the job of RTL and UVM, which run far faster and own functional coverage. This lesson shows how to select a GLS test plan by gate-level-specific value, why duplicating RTL coverage at the gate level wastes machine time, and how equivalence checking and STA cover what GLS only spot-checks.

Foundation12 min readGLSTest PlanStrategyCoverageSelection

Chapter 13 · Section 13.3 · Simulation Performance & Regression Strategy

Project thread — the mini-SoC's GLS test plan runs the gate-level-specific subset, not its full RTL regression. This lesson selects that subset; 13.4 places it in the pipeline.

1. Why Should I Learn This?

Speed (13.2) isn't enough — you also have to run the right things.

  • Run in GLS only what only GLS can catch (X/reset/timing/low-power/DFT).
  • Don't re-run RTL's functional coverage — 10–100× cost for the same answer.
  • Select by gate-level-specific value; defer function to RTL/UVM, equivalence to LEC, timing to STA.

This is the what that pairs with 13.2's how.

2. Real Silicon Story — the gate-level suite that duplicated RTL

A team ran their entire UVM functional regression at the gate level — thousands of tests — to 'be thorough'. It cost a fortune in machine time and found nothing RTL hadn't.

The tests were RTL's job — functional coverage — re-run at 10–100× the cost for the same result. Meanwhile the gate-level-specific checks (reset/init X, SDF timing spot-checks, low-power) were under-run because the pool was saturated. Cutting to a selected subset — the checks only GLS can do — found the real gate-level bugs (a reset gap, a timing effect) and freed the pool.

Lesson: don't duplicate RTL's functional coverage in GLS. Select the gate-level-specific subset — the checks only GLS can catch — and let RTL/UVM own function.

3. Concept — what to run (and what not to)

Run in GLS (gate-level-specific — only GLS can catch):

  • X / reset / initialization — power-up X, reset behavior, uninitialized state (RTL is X-optimistic + pre-initialized, 6.4/2.6).
  • Netlist-equivalence sanity — does the mapped/optimized netlist still function on key vectors? (A sanity pass — exhaustive equivalence is LEC's job.)
  • Timing-dependent behavior (SDF) — real clk-to-Q, glitches, setup/hold effects, at-speed (Ch3/8) — spot-checks, not exhaustive (that's STA).
  • Low-power — corruption/isolation/retention/sequencing across power transitions (Ch10).
  • DFT / scan — chain integrity, pattern simulation, test-mode reset/X (Ch11).

Do NOT run in GLS:

  • Full functional coverage — RTL/UVM's job, far faster, owns coverage. Duplicating it in GLS is 10–100× cost for the same answer (13.1).
  • Exhaustive equivalence — that's LEC (formal), not GLS.
  • Exhaustive timing — that's STA, not GLS.

The selection method:

  • Prioritize by gate-level-specific value — a test earns a GLS slot only if it checks something RTL can't.
  • Sanity, not exhaustive — a functional subset confirms the netlist behaves; deep function stays in RTL/UVM.
  • Defer exhaustive function → RTL/UVM; exhaustive equivalence → LEC; timing signoff → STA.

Scope (accuracy):

  • GLS is one verification input, run for its unique value; it doesn't replace RTL/UVM (function), LEC (equivalence), or STA (timing). GLS stays dynamic (0.3).
Run gate-level-specific checks in GLS; defer functional coverage to RTL/UVM, equivalence to LEC, timing to STAprioritizebelongs toRUN in GLS (only GLScan)X/reset/init · equivalence SANITY · SDF timing spot-checks · low-power · DFTX/reset/init · equivalenceSANITY · SDF timingspot-checks · low-power ·…DON'T: fullfunctional coverageRTL/UVM's job — 10-100xcost for the same answerSelect by gate-level-specific VALUESelect bygate-level-specific…earns a GLS slot only ifRTL can't check itDefer to the righttoolfunction→RTL/UVM ·equivalence→LEC ·timing→STA12
Figure 1 — choosing what to run in GLS (representative). RUN in GLS the gate-level-specific checks only GLS can catch: X/reset/init (6.4/2.6), netlist-equivalence SANITY, SDF timing SPOT-CHECKS (Ch3/8), low-power (Ch10), DFT/scan (Ch11). DON'T run the full functional coverage suite -- that's RTL/UVM's job (far faster, owns coverage); duplicating it in GLS is 10-100x cost for the same answer. Defer exhaustive equivalence to LEC and timing signoff to STA. Select by gate-level-specific VALUE.

4. Mental Model — use the expensive specialist for the specialist job

GLS is an expensive specialist (like an MRI) — use it for what only it can see.

  • You don't MRI every patient for a cold (full functional coverage) — a cheap GP visit (RTL/UVM) handles the common case far faster.
  • You reserve the MRI for what the GP can't see — the deep, structural issues (gate-level X/reset/timing/low-power/DFT).
  • Booking the MRI for everything saturates the machine and delays the patients who actually need it (the gate-level-specific checks starved by a duplicated functional suite).
  • And for questions the MRI isn't the right tool for, you use the specialist: blood work (LEC, equivalence), cardiac stress test (STA, timing).

Use the expensive specialist (GLS) for the specialist job — not for what a cheaper test already answers.

5. Working Example — a GLS test-plan selection

A representative GLS test plan (tool-neutral):

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
# GLS test plan — REPRESENTATIVE (tool-neutral) — SELECT by gate-level-specific value:
# RUN in GLS (only GLS can catch):
#   [x] reset / init / power-up X tests          (X/reset -- 2.6/6.x/7.x)  [zero-delay]
#   [x] netlist-equivalence SANITY subset         (does the netlist still function?) [zero-delay]
#   [x] SDF timing SPOT-CHECKS (key paths)        (clk-to-Q, glitch, setup/hold -- Ch3/8) [TIMED]
#   [x] low-power transition tests                (corruption/isolation/retention -- Ch10) [power-aware]
#   [x] DFT: scan chain + a few ATPG patterns     (chain integrity, pattern sim -- Ch11)
# DON'T run in GLS (belongs elsewhere):
#   [ ] full functional/UVM regression            -> RTL/UVM (far faster, owns coverage)
#   [ ] exhaustive equivalence                     -> LEC (formal)
#   [ ] exhaustive timing                          -> STA

Practical context (representative, tool-neutral):

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
# Selection rule (tool-neutral): a test earns a GLS slot ONLY if it checks something RTL can't.
#   gate-level-specific value?  ->  RUN in GLS (X/reset/init, equivalence sanity, SDF timing, low-power, DFT)
#   just functional coverage?   ->  RTL/UVM (far faster, owns coverage) -- NOT GLS
#   exhaustive equivalence?     ->  LEC     |   timing signoff?  ->  STA
#   fidelity per test: zero-delay (function/X/reset) vs timed SDF (timing spot-checks) -- 13.2

A gate-level-specific check (reset X) that only GLS catches, as a real waveform:

A gate-level-specific check: power-up X until reset — RTL (X-optimistic) misses it, GLS catches it

8 cycles
At power-up the gate-level flop is X until reset, a behavior RTL simulation does not showGLS catches power-up X (RTL misses it) → run THIS in GLSGLS catches power-up X…clkrst_nq (GLS: X until reset)XXq (RTL: pre-initialized)t0t1t2t3t4t5t6t7
Representative. At power-up the gate-level flop is X until reset asserts (2.6) — exactly the kind of check GLS is FOR (RTL is X-optimistic/pre-initialized and misses it, 6.4). This earns a GLS slot. A pure functional-coverage test that RTL already runs does NOT — running it in GLS would cost 10-100x for the same answer. Select by gate-level-specific value.

6. Debugging Session — a GLS suite duplicating RTL's coverage

1

A GLS regression re-runs the full functional/UVM suite at the gate level, costing 10-100x for the same answer RTL already gives and starving the gate-level-specific checks; selecting the gate-level-specific subset fixes both cost and coverage

RUN ONLY WHAT ONLY GLS CAN CATCH; DON'T DUPLICATE RTL COVERAGE
Symptom

A GLS regression is enormous and expensive (the whole functional/UVM suite at the gate level), yet it finds nothing RTL didn't — and the gate-level-specific checks are under-run (pool saturated).

Root Cause

Duplicating RTL's functional coverage in GLS. The functional/UVM suite is RTL's job — it owns functional coverage and runs far faster — so re-running it at the gate level costs 10–100× (13.1) for the same answer, finding nothing new. Worse, it saturates the machine pool, starving the checks GLS is actually for: X/reset/init (RTL is X-optimistic, 6.4), SDF timing spot-checks, low-power, DFT. The strategy is inverted: the expensive specialist is doing the cheap generalist's job while the specialist work goes undone. It's not that the tests are wrong; they're run in the wrong place.

Fix

Select the GLS test plan by gate-level-specific value — a test earns a GLS slot only if it checks something RTL can't: reset/init/X tests, a functional sanity subset (equivalence), SDF timing spot-checks (key paths), low-power transitions, DFT/scan. Defer the full functional coverage to RTL/UVM, exhaustive equivalence to LEC, and timing signoff to STA. This frees the pool (no 10–100× duplication) and ensures the gate-level-specific checks (the real bugs — reset gaps, timing effects) actually run. The lesson: run in GLS only what only GLS can catch (X/reset/init, equivalence sanity, SDF timing spot-checks, low-power, DFT) and don't duplicate RTL's functional coverage — select the gate-level-specific subset by value, and defer function to RTL/UVM, equivalence to LEC, and timing to STA. (GLS is one input, run for its unique value; it stays dynamic, 0.3.)

7. Common Mistakes

  • Re-running the full functional/UVM suite in GLS. 10–100× cost for the same answer (13.1).
  • Starving gate-level-specific checks by saturating the pool with duplicated coverage.
  • Treating GLS as exhaustive equivalence/timing. That's LEC/STA.
  • Not selecting by gate-level-specific value. Every GLS slot must check something RTL can't.
  • Running everything timed. Timing spot-checks are timed; function/X/reset are zero-delay (13.2).

8. Industry Best Practices

  • Run only what only GLS can catch (X/reset/init, equivalence sanity, SDF timing, low-power, DFT).
  • Don't duplicate RTL's functional coverage — RTL/UVM owns it, far faster.
  • Select by gate-level-specific value — each slot checks something RTL can't.
  • Defer exhaustive equivalence to LEC, timing signoff to STA.
  • Match fidelity to purpose — zero-delay for function/X/reset, timed for timing spot-checks (13.2).

Senior Engineer Thinking

  • Beginner: "Run everything in GLS to be thorough."
  • Senior: "GLS is 10–100× RTL — I run only what only GLS can catch: reset/X, an equivalence sanity subset, SDF timing spot-checks, low-power, DFT. Functional coverage is RTL/UVM's job; equivalence is LEC's; timing is STA's. I select by gate-level-specific value."

The senior selects the gate-level-specific subset and refuses to duplicate RTL's coverage.

Silicon Impact

What you run in GLS decides whether its expensive cycles find real gate-level bugs or just re-confirm RTL. Duplicating the functional suite is a double failure: it wastes 10–100× the cost (13.1) and starves the checks GLS is uniquely for — so a reset gap, a timing effect, a low-power leak, a scan X can escape to silicon (0.3) because the pool was busy re-running RTL's coverage. Selecting by gate-level-specific value — reset/init/X, equivalence sanity, SDF timing spot-checks, low-power, DFT — is what makes GLS's cost buy unique coverage that nothing else provides, while RTL/UVM (function), LEC (equivalence), and STA (timing) do their jobs faster and better. Right selection is what makes GLS worth its cost.

Engineering Checklist

  • Ran only gate-level-specific checks (X/reset/init, equivalence sanity, SDF timing, low-power, DFT).
  • Did not duplicate the full functional/UVM suite in GLS.
  • Selected by gate-level-specific value (each slot checks something RTL can't).
  • Deferred exhaustive equivalence to LEC, timing signoff to STA.
  • Matched fidelity to purpose (zero-delay vs timed, 13.2).

Try Yourself

  1. List your GLS regression's tests and mark each: gate-level-specific (X/reset/timing/low-power/DFT) or pure functional coverage.
  2. Observe: the functional-coverage tests duplicate RTL — 10–100× cost for the same answer.
  3. Change: cut the duplicated functional tests; keep/add the gate-level-specific ones (reset/X, SDF timing spot-checks, low-power, DFT).
  4. Expect: a smaller, cheaper GLS suite that finds the real gate-level bugs — and a freed machine pool. Selection beats volume.

Test-plan selection is a discipline, tool-independent. No paid tool required.

Interview Perspective

  • Weak: "Run the whole regression in GLS to be safe."
  • Good: "Run the gate-level-specific checks in GLS — X/reset, timing with SDF, low-power, DFT — not the full functional suite."
  • Senior: "GLS is 10–100× RTL, so I run only what only GLS can catch: reset/init/X, an equivalence sanity subset, SDF timing spot-checks, low-power transitions, DFT/scan. I don't duplicate RTL's functional coverage (RTL/UVM owns it, far faster), and I defer exhaustive equivalence to LEC and timing signoff to STA. Select by gate-level-specific value — selection beats volume."

9. Interview / Review Questions

10. Key Takeaways

  • Because GLS is expensive (13.1), run the right subset — only what only GLS can catch: X/reset/init (6.4/2.6), a netlist-equivalence sanity pass, SDF timing spot-checks (Ch3/8), low-power transitions (Ch10), and DFT/scan (Ch11).
  • Do NOT re-run the full functional coverage suite in GLS — that's RTL/UVM's job (far faster, owns coverage); duplicating it costs 10–100× for the same answer.
  • Select by gate-level-specific value — a test earns a GLS slot only if it checks something RTL can't; a functional sanity subset suffices (not exhaustive).
  • Defer exhaustive equivalence to LEC and timing signoff to STA — GLS spot-checks, it doesn't replace them.
  • Match fidelity to purpose — zero-delay for function/X/reset, timed for timing spot-checks (13.2); GLS is one input run for its unique value (dynamic, 0.3). Next: 13.4 — GLS in the regression & signoff pipeline.

Quick Revision

GLS is expensive -> run the RIGHT subset (only what only GLS can catch): X/reset/init (6.4/2.6), equivalence sanity, SDF timing spot-checks (Ch3/8), low-power (Ch10), DFT/scan (Ch11). DON'T duplicate RTL's functional coverage (RTL/UVM's job, 10-100x cost for the same answer). Select by gate-level-specific VALUE. Defer exhaustive equivalence -> LEC, timing signoff -> STA. Match fidelity to purpose (13.2). Next: 13.4 — GLS in the regression & signoff pipeline.