| name | hardware-formal-verification |
| description | Apply assertion-based and property-driven reasoning to RTL, interfaces, FIFOs, arbiters, and control logic. Use when writing SystemVerilog assertions, planning SymbiYosys checks, proving safety and liveness properties, or strengthening an RTL module beyond simulation-only confidence. |
Hardware Formal Verification
Use this skill when simulation is not enough to rule out corner-case protocol or state bugs.
Core Workflow
- Define the block contract and environment assumptions.
- Choose properties:
- reset safety,
- protocol safety,
- ordering,
- exclusivity,
- eventual progress.
- Use
references/formal-checklist.md to separate assumptions, assertions, and covers.
- If
sby or yosys exists, run the smallest proof target first.
- Report proof limits and abstraction assumptions explicitly.
Execution Rules
- Do not bury assumptions inside assertions.
- Prefer a few meaningful invariants over many weak properties.
- Use simulation counterexamples to refine formal properties and vice versa.
- State whether a failure is a design bug, a property bug, or an environment-model bug.
Output Contract
Return:
- Property set.
- Assumption set.
- Proof plan.
- Results or expected counterexamples.
- Remaining unproven risks.