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-upX, 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).
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):
# 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 -> STAPractical context (representative, tool-neutral):
# 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.2A 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 cycles6. Debugging Session — a GLS suite duplicating RTL's coverage
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 COVERAGEA 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).
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.
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
- List your GLS regression's tests and mark each: gate-level-specific (X/reset/timing/low-power/DFT) or pure functional coverage.
- Observe: the functional-coverage tests duplicate RTL — 10–100× cost for the same answer.
- Change: cut the duplicated functional tests; keep/add the gate-level-specific ones (reset/
X, SDF timing spot-checks, low-power, DFT). - 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.