Taxonomy Rules¶
Objectives¶
- Normalize noisy verification outputs into consistent:
severitycategorytags[]- Provide deterministic, explainable mapping from source text → taxonomy
Taxonomy Categories (v1)¶
FailureEvent.category enum:
assertionscoreboardprotocoltimeoutxpropcompileelabruntimeunknown
Severity Mapping (v1)¶
UVM Severity Normalization¶
Map to:
UVM_INFO→infoUVM_WARNING→warningUVM_ERROR→errorUVM_FATAL→fatal
If a simulator prefixes errors differently (e.g., *E, in Xcelium), map to error unless fatal keywords exist.
cocotb Severity Normalization¶
- Exception in test →
error - Explicit assertion failure →
failat test level, but failure events often stillerrorunless you distinguish "check failure" vs "infrastructure error"
Recommended: - If message matches AssertionError, ScoreboardMismatch, or user "expect" failure → error but category scoreboard/protocol/assertion as appropriate - If matches ImportError, RuntimeError at harness, SimulatorError → runtime + severity fatal (configurable)
Category Mapping Rules (ordered, first match wins)¶
Rule Group A: Compile / Elaboration (highest priority)¶
1. Compile¶
Patterns: - Compilation failed - Error-[A-Z0-9]+ with compile - vlog- / xmvlog errors - Syntax error, unexpected token, Undefined variable in compile context
Category: compile
Tags: ["compile"] + vendor tags
2. Elaboration¶
Patterns: - Elaboration failed - Unresolved reference (during elab) - Cannot find instance / binding failed - Top module not found
Category: elab
Tags: ["elab"]
Rule Group B: Assertions¶
3. Assertion Failures¶
Patterns: - ASSERTION FAILED - SVA and failed - assert property failure messages - Vendor-specific: - Questa: ** Error: (vsim-*) with assertion wording - VCS: Assertion failure / $assertoff contexts
Category: assertion
Tags: ["assertion", "sva"] + protocol tags if detectable (AXI/APB/etc.)
If an assertion name is captured, attach it to: - AssertionFailure.assertion_id (when resolvable) - FailureEvent.tags += ["assert:<name>"] (bounded)
Rule Group C: Timeouts / Deadlocks¶
4. Timeout¶
Patterns: - TIMEOUT - watchdog - No activity for - objection timeout - phase timeout - simulation time limit reached
Category: timeout
Tags: ["timeout"] + phase tags if known (e.g., phase:run)
Rule Group D: X-Propagation / Unknowns¶
5. Xprop / X-Check¶
Patterns: - X-propagation - X-check - Unknown value X - has Xs - xrun: *E combined with X warnings (vendor-specific)
Category: xprop
Tags: ["xprop"]
Rule Group E: Scoreboard / Data Mismatches¶
6. Scoreboard Mismatch¶
Patterns: - scoreboard and (mismatch|compare failed|unexpected|expected) - DATA MISMATCH - CRC mismatch (often protocol too; see tags) - sequence item mismatch
Category: scoreboard
Tags: ["scoreboard"] + protocol tags if detectable
Rule Group F: Protocol Violations (when explicit)¶
7. Protocol¶
Patterns: - protocol violation - handshake violation - illegal transition - unexpected response (when not scoreboard compare) - BRESP/RRESP error codes in AXI monitors - APB PSLVERR in monitor
Category: protocol
Tags: ["protocol"] + protocol name tags
Rule Group G: Runtime/Infrastructure¶
8. Runtime¶
Patterns: - segmentation fault - core dumped - Simulator terminated - Python traceback that indicates harness failure - Out of memory - License checkout failed
Category: runtime
Severity: fatal for crashes/license failures; otherwise error
Tags: ["runtime"]
Default¶
9. Unknown¶
Category: unknown
Tags: derived from heuristic keyword extraction (bounded)
Tagging System (v1)¶
Standard Tags (recommended)¶
- Vendor:
vcs,questa,xcelium,verilator,riviera - Framework:
uvm,cocotb - Protocol:
axi4,ahb,apb,pcie,usb,jtag,i2c,spi,gpio - Phase:
phase:build,phase:connect,phase:run,phase:shutdown - Component role:
driver,monitor,scoreboard,sequencer
Protocol Detection Heuristics¶
If message contains:
AXIorAWVALID/WREADY/BRESP→ tagaxi4PADDR/PSEL/PREADY/PSLVERR→ tagapbHADDR/HREADY/HRESP→ tagahbLTSSM,TS1,TS2→ tagpcieLFPS,PIPE,U0/U1/U2→ tagusbTMS,TCK,TDO,TDI→ tagjtag
Bounded Tagging¶
- Max tags per failure: 20
- Prefer deterministic ordering:
[category/framework/protocol/vendor/phase/component_role/other]
Evidence Linkage Policy¶
When a taxonomy decision is made, the indexer may store:
taxonomy_reason: a short code likeRULE_ASSERTION_VENDOR_QUES(optional internal field)- This reason is not required to be exposed via MCP in v1, but helps debugging
Implementation Reference¶
See sentinel_dv/taxonomy_engine.py for the canonical implementation.