From rtl-agent-team
Policy rules for SVA coding conventions, SymbiYosys engine guide, 3-round iterative refinement protocol, and formal verification checklists for RTL design verification.
How this skill is triggered — by the user, by Claude, or both
Slash command
/rtl-agent-team:rtl-p5s-sva-policyThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
SVA property files MUST follow the project coding conventions (CLAUDE.md):
SVA property files MUST follow the project coding conventions (CLAUDE.md):
i_ prefix for inputs, o_ prefix for outputs (e.g., i_valid, o_ready)clk (single domain) or {domain}_clk (multiple domains, e.g., sys_clk) — NOT clk_irst_n (single domain) or {domain}_rst_n (multiple domains, e.g., sys_rst_n) — NOT rst_nilogic in helper code (NOT reg/wire)no_fifo_overflow, valid_handshake)SVA property extraction must iterate at least 3 times to strengthen assertion quality. Each round builds upon the previous:
cover properties to verify reachability. Check for vacuous assertions.##[1:N] bounded eventually). Verify assume/assert balance (not over-constrained). Add cross-module interface properties if applicable.Each round produces a review note at .rat/scratch/phase-5/sva-iteration-r{N}.md.
pip install sbyosys or from source)i_/o_ prefix, {domain}_clk/{domain}_rst_n)Use assume statements to constrain inputs to legal protocol ranges before proving.
Principle: assume inputs, assert outputs. Inputs are constrained with assume; outputs are verified with assert.
Target properties: no deadlock, no overflow, interface protocol compliance, data integrity.
Assertion clock: @(posedge sys_clk) disable iff (!sys_rst_n) for synchronous properties.
See examples/handshake-assertions.sv for valid/ready handshake SVA patterns.
See examples/fifo-assertions.sv for FIFO overflow/underflow assertion patterns.
SymbiYosys engine guide:
| Engine | Mode | Best For |
|---|---|---|
smtbmc boolector | BMC, prove | General purpose (default) |
smtbmc yices | BMC, prove | Bitvector-heavy, often fastest |
smtbmc z3 | BMC, prove | Arithmetic-heavy designs |
abc pdr | prove only | Unbounded proof via PDR |
See references/sva-patterns.md for complete temporal operator reference and pattern library.
sv2v conversion note:
SymbiYosys relies on Yosys for reading design files. Yosys has limited SystemVerilog support,
so RTL .sv files need Verilog conversion before sby. This is a Layer 2 concern —
formal verification scripts handle sv2v conversion internally. Do NOT run sv2v manually.
SVA property files (formal/*_props.sv) are read with -formal -sv and do NOT need conversion.
# Scripts handle sv2v internally:
sby -f formal/{module}.sby # .sby task script runs sv2v as a pre-step
npx claudepluginhub babyworm/rtl-agent-team --plugin rtl-agent-teamProvides SVA coding conventions and formal verification guidelines for SystemVerilog assertions. Covers assertion styles, property/sequence patterns, bind files, coverage properties, and SymbiYosys integration.
Generates SVA properties from natural language, configures SymbiYosys, runs formal proofs on hardware designs like FIFOs, and explains pass/fail results.
Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.