Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
A direct command skips the review prompt. Inspect the source before running it.
When this skill is loaded and a user presents a verification task, do not
execute stages directly. Immediately spawn the
digital-chip-design-agents:verification-orchestrator agent and pass the full
user request and any available context to it. The orchestrator enforces the stage
sequence, loop-back rules, and sign-off criteria defined below.
Use the domain rules in this file only when the orchestrator reads this skill
mid-flow for stage-specific guidance, or when the user asks a targeted reference
question rather than requesting a full flow execution.
Pre-run Context
Before executing or advising on any stage, read the following files if they exist:
memory/verification/knowledge.md — known failure patterns, successful tool flags, PDK/tool quirks.
Incorporate its guidance into every stage decision. If absent, proceed without it.
memory/verification/run_state.md — current run identity (run_id, design_name, tool,
last_stage). Use this to resume correctly after interruption. If absent, a new run
is starting; the orchestrator will create this file before the first stage.
This pre-run read applies whether this skill is loaded by a user or called by the
orchestrator mid-flow. It ensures the fix database is consulted before any diagnosis step.
Purpose
Guide the complete UVM functional verification flow from testbench architecture
through coverage-closed regression sign-off. Produces a verified RTL package
with documented coverage and a clean regression.
Supported EDA Tools
Open-Source
Verilator (verilator) — fast cycle-accurate simulator; UVM support via verilator+UVM
Icarus Verilog (iverilog) — event-driven simulation for quick testbench checks
Requirement coverage: 100% of spec features mapped
P0 tests: must pass before random testing begins
Estimated test count: reasonable vs schedule
Output Required
V-plan document
Covergroup definitions
Assertion list with expected behaviour
Stage: uvm_tb_build
Domain Rules — Sequences
Base sequence: minimum valid transaction
Extended sequences: specific scenarios from V-plan
Sequence library: register all sequences for random selection
Never hardcode values — use randomised fields with constraints
Domain Rules — Drivers
Drive signals cycle-accurate to protocol specification
Handle back-pressure: check ready/valid correctly
Protocol assertion in driver to catch illegal stimulus early
Domain Rules — Scoreboard
Predict expected output from reference model before DUT output arrives
Report mismatches with full context (stimulus, expected, actual)
Track: total checks, pass, fail, untriggered
Domain Rules — SVA Assertions
Protocol assertions: in interface bind, not DUT
Functional assertions: in checker or bind module
All assertions: clearly named with descriptive failure message
QoR Metrics to Evaluate
TB compile: 0 errors, 0 warnings
Sanity test: passes with known-good RTL
All components active in simulation log
Output Required
UVM component source files
SVA assertion files (bind-based)
Compile script
Stage: directed_tests
Domain Rules
Implement one directed test per V-plan entry — tests must be deterministic
Each test: verify the exact functional requirement it targets (no catch-all tests)
Error/exception paths: explicit stimulus to trigger each one
Corner cases: boundary values, max/min, overflow, underflow — one test each
Reset during active transaction: at least one test per interface
P0 tests must all pass before constrained-random phase begins
DUT bug found during directed test: write a fix_request entry to design_state.fix_requests[] per the schema in the verification-orchestrator Design State section; terminate with decision=escalate. The pipeline-orchestrator (chip-design-meta) handles RTL re-invocation — do not loop locally or wait for user confirmation.
QoR Metrics to Evaluate
All V-plan features covered by at least one directed test
P0 directed tests: 100% pass before proceeding
0 UVM FATAL or ERROR during directed test phase
Output Required
Directed test source files (one UVM sequence per feature)
Directed test pass/fail report
Bug report (if any DUT bugs found)
Stage: constrained_random
Domain Rules
Constraint blocks: randomise all stimulus fields within protocol-legal ranges
Tag constraint_ref in history entries when evaluating QoR against these values (e.g. "coverage.functional_pct").
Memory
Write on stage completion
After each stage completes (regardless of whether an orchestrator session is active),
write or overwrite one JSON record in memory/verification/experiences.jsonl keyed by
run_id. This ensures data is persisted even if the flow is interrupted or called
without full orchestrator context.
Use run_id = verification_<YYYYMMDD>_<HHMMSS> (set once at flow start; reuse on each
stage update). Set signoff_achieved: false until the final sign-off stage completes.
Run state (write before first stage, update after each stage)
Write memory/verification/run_state.md as the first action before launching any tool:
Update last_stage after each stage completes. This file lets wakeup-loop prompts
and resumed sessions identify the correct run without relying on in-memory state.
Create the file and parent directories if they do not exist.
Optional: claude-mem index
If mcp__plugin_ecc_memory__add_observations is available in this session, emit each
applied fix as an observation to entity chip-design-verification-fixes after writing to
experiences.jsonl. Skip silently if the tool is absent — JSONL is the canonical record.