Requirements
rizsotto/Bear
Write, modify, or review a requirement file under docs/requirements -- pick the single owning file, keep the text contract-only, name IDs so they need no explanation, and verify cross-references and…
Formal property verification (FPV) and logical equivalence checking (LEC).
$ npx skills add hdl-tools/digital-chip-design-agents --skill formal-verification -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install hdl-tools/digital-chip-design-agents formal-verification --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/hdl-tools/digital-chip-design-agents.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/formal/skills/formal-verification .claude/skills/formal-verification && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "formal-verification" agent skill from https://github.com/hdl-tools/digital-chip-design-agents/tree/master/plugins/formal/skills/formal-verification into .claude/skills/formal-verification/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "formal-verification", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/hdl-tools/digital-chip-design-agents/tree/master/plugins/formal/skills/formal-verificationType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add hdl-tools/digital-chip-design-agents --skill formal-verification -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install hdl-tools/digital-chip-design-agents formal-verification --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hdl-tools/digital-chip-design-agents.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/formal/skills/formal-verification .agents/skills/formal-verification && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "formal-verification" agent skill from https://github.com/hdl-tools/digital-chip-design-agents/tree/master/plugins/formal/skills/formal-verification into .agents/skills/formal-verification/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "formal-verification", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add hdl-tools/digital-chip-design-agents --skill formal-verification -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install hdl-tools/digital-chip-design-agents formal-verification --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hdl-tools/digital-chip-design-agents.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/formal/skills/formal-verification .cursor/skills/formal-verification && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "formal-verification" agent skill from https://github.com/hdl-tools/digital-chip-design-agents/tree/master/plugins/formal/skills/formal-verification into .cursor/skills/formal-verification/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "formal-verification", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/hdl-tools/digital-chip-design-agents.git --path plugins/formal/skills/formal-verification--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add hdl-tools/digital-chip-design-agents --skill formal-verification -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install hdl-tools/digital-chip-design-agents formal-verification --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hdl-tools/digital-chip-design-agents.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/formal/skills/formal-verification .gemini/skills/formal-verification && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "formal-verification" agent skill from https://github.com/hdl-tools/digital-chip-design-agents/tree/master/plugins/formal/skills/formal-verification into .gemini/skills/formal-verification/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "formal-verification", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install hdl-tools/digital-chip-design-agents formal-verificationInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add hdl-tools/digital-chip-design-agents --skill formal-verification -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/hdl-tools/digital-chip-design-agents.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/formal/skills/formal-verification .github/skills/formal-verification && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "formal-verification" agent skill from https://github.com/hdl-tools/digital-chip-design-agents/tree/master/plugins/formal/skills/formal-verification into .github/skills/formal-verification/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "formal-verification", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add hdl-tools/digital-chip-design-agents --skill formal-verification -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install hdl-tools/digital-chip-design-agents formal-verification --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hdl-tools/digital-chip-design-agents.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/formal/skills/formal-verification .opencode/skills/formal-verification && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "formal-verification" agent skill from https://github.com/hdl-tools/digital-chip-design-agents/tree/master/plugins/formal/skills/formal-verification into .opencode/skills/formal-verification/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "formal-verification", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
formal-verificationFormal property verification (FPV) and logical equivalence checking (LEC).
Formal Verification is an agent skill from hdl-tools/digital-chip-design-agents. Formal property verification (FPV) and logical equivalence checking (LEC). Use when proving design properties exhaustively, checking RTL vs gate-level netlist equivalence, verifying CDC crossings formally, or closing verification coverage gaps that simulation cannot efficiently reach.
Its SKILL.md is about 3.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Testing & QA, covering Test coverage. The repository describes itself as: Digital HDL Design Full-stack Agents. The licence is MIT.
2 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 38736b1. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadWriteBashFrom allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are systemverilog and markdown).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Formal Verification loads about 3.4k tokens when it runs. Until then it costs about 76 tokens; SKILL.md has 1,720 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Read, Write, BashAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from hdl-tools/digital-chip-design-agents at commit 38736b1, republished under its MIT licence (© hdl-tools). 1,720 words, ~3,392 tokens.
.claude/skills/formal-verification/SKILL.md (or your agent's skills folder).When this skill is loaded and a user presents a formal verification task, do not
execute stages directly. Immediately spawn the
digital-chip-design-agents:formal-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.
Before executing or advising on any stage, read the following files if they exist:
memory/formal/knowledge.md — known failure patterns, successful tool flags, PDK/tool quirks.
Incorporate its guidance into every stage decision. If absent, proceed without it.memory/formal/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.
Exhaustively prove design properties and equivalence using formal methods. Complements simulation-based verification for correctness proofs, protocol compliance, and equivalence checking between RTL and gate-level netlists.
sby) — formal property verification front-end for open-source solversyosys) — synthesis and equivalence checking back-endjg, dialect cadence) — industry-standard FPV, CDC, DFT formalvcf, dialect synopsys) — property checking and equivalence verificationqformal, dialect siemens) — FPV and coverage closureassert property (@(posedge clk) !(error && valid));assert property (@(posedge clk) req |-> ##[1:MAX] ack);assert property (@(posedge clk) valid |-> $stable(data));cover property (@(posedge clk) state == DONE);$past(), $rose(), $fell() over manual delay logicdisable iff: use for reset gatingdesign_state.rtl.unverified[] (claims
the RTL flow concluded without a tool run) gets a property, a cover, or a written reason it
is not formally tractable and who checks it instead. If rtl.unverified is absent the RTL
flow did not report — say so in the property plan and derive the targets below from the RTL
yourself; do not read "absent" as "nothing to prove"WIDTH=1, DEPTH=1 and 2, N=1, and any non-power-of-two
value the module accepts. A guarded initial/$fatal parameter assertion in the RTL sits
inside synthesis translate_off and may be invisible to the formal front-end, so restate
the legal parameter range in the environmentA clean lint run says nothing about these. Each applies wherever the structure exists:
| Structure | Properties |
|---|---|
| Ready/valid interface | Transfer only on valid && ready; valid not retracted before acceptance; payload stable while valid && !ready; valid and ready low in reset |
| FSM | Every state reachable (cover); every state has an exit (bounded liveness); from any illegal encoding the machine reaches a legal state — mandatory for an FSM using unique case without default, where this assertion is the only recovery check |
| Arbiter | Grant is one-hot or zero; a continuously asserting requester is granted within N grants; rotation advances only on a consumed grant |
| FIFO | No write when full, no read when empty; empty is 1 and full is 0 out of reset; occupancy never exceeds depth |
| Arithmetic | Every +, -, * and accumulator stays within its result width, or wraps only where the spec says so |
| Reset | Every control flop has its specified value in the first cycle out of reset |
| Deadlock | No wait-for cycle: bounded liveness on every request/acknowledge and every credit return |
rtl.unverified[] entry mapped to a property, a cover, or a stated reason// Reset sequence
assume property (@(posedge clk) $rose(rst_n) |-> ##[1:5] rst_n);
// AXI valid stability
assume property (@(posedge clk)
(s_axi_awvalid && !s_axi_awready) |=> $stable(s_axi_awaddr));| Result | Meaning | Action |
|---|---|---|
| PROVEN | Holds for all reachable states | Log and continue |
| CEX | Counterexample found | Analyse in cex_analysis; hand an RTL bug to the RTL flow, or fix the assumption |
| VACUOUS | Antecedent never fires | Fix assumption or property |
| INCONCLUSIVE | Bound too small or state space too large | Increase bound / abstract |
| UNREACHABLE | Cover never reachable | Verify or waive |
UNVERIFIED with the bound reached and the
justification. A bounded proof is not PROVEN and an assumed-correct property is not a
result — neither counts toward the PROVEN total, and a P0 property left UNVERIFIED
blocks sign-offfix_request entry to
design_state.fix_requests[] (failure_class=formal_cex, CEX trace path, the property that
failed) and stop; the RTL flow applies the fix under its own lint rules and FPV is re-run on
the result. Counts as an RTL bug, not a formal bugsuspected_rtl.basis to traced when the CEX trace shows
the faulty signal and cycle, hypothesis when the location is inferred| Failure | Fix |
|---|---|
| Optimizer removed logic | Verify with report_removal; add set_dont_touch if needed |
| SDC mismatch | Ensure same clock groupings in both netlists |
| Scan chain reordering | Use scan-unaware LEC mode |
| Black box mismatch | Align black box list in both netlists |
UNVERIFIED, not PROVENrtl.unverified[] entry: proven, covered, or dispositioned with a reasonSee plugins/meta/skills/pipeline-orchestration/SKILL.md §Constraints Schema for the authoritative schema and stage-entry validation rule.
No required keys for formal verification — all constraints in this domain are optional.
There are no numeric coverage thresholds unique to formal; this domain shares coverage targets
with the functional-verification domain (coverage.*) and timing targets with the STA domain
(timing.wns_ns_target). When evaluating LEC equivalence or FPV property results, tag
constraint_ref in history entries with the relevant dot-path key if a constraint value was
consulted (e.g. "coverage.functional_pct" when reporting coverage contribution).
After each stage completes (regardless of whether an orchestrator session is active),
write or overwrite one JSON record in memory/formal/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 = formal_<YYYYMMDD>_<HHMMSS> (set once at flow start; reuse on each
stage update). Every JSON record written must include a top-level "run_id" field
whose value matches this key — stage writes must upsert/overwrite by matching this
persisted run_id. Set signoff_achieved: false until the final sign-off stage
completes.
Write memory/formal/run_state.md as the first action before launching any tool:
run_id: formal_<YYYYMMDD>_<HHMMSS>
design_name: <design>
tool: <primary tool>
start_time: <ISO-8601>
last_stage: null
current_stage: <first stage name>Update current_stage when a stage starts, and set last_stage to the completed stage
name only after successful completion (then clear current_stage). This file lets
wakeup-loop prompts and resumed sessions identify the correct run and distinguish
completed vs in-flight work. Create the file and parent directories if they do not exist.
If mcp__plugin_ecc_memory__add_observations is available in this session, emit each
applied fix as an observation to entity chip-design-formal-fixes after writing to
experiences.jsonl. Skip silently if the tool is absent — JSONL is the canonical record.
© hdl-tools, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in plugins/formal/skills/formal-verification of hdl-tools/digital-chip-design-agents.
Open the folder on GitHubat commit 38736b1
Formal Verification next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Formal Verification this skillhdl-tools/digital-chip-design-agents | 214 | — | ~3.4k | Automated safety check: Notes | MIT | |
| Requirementsrizsotto/Bear | 6.5k | — | ~2k | Automated safety check: Pass | GPL-3.0 | |
| Crap Analysisardalis/RiverBooks | 135 | 2 repos | ~3.4k | Automated safety check: Pass | None | |
| Bmad Testarch Automatechenjackle45/SayIt | 115 | 2 repos | ~867 | Automated safety check: Pass | MIT | |
| Code Coverages3s-project/s3s | 311 | — | ~789 | Automated safety check: Pass | Apache-2.0 | |
| Project Statusbactopia/bactopia | 522 | — | ~787 | Automated safety check: Pass | MIT |
rizsotto/Bear
Write, modify, or review a requirement file under docs/requirements -- pick the single owning file, keep the text contract-only, name IDs so they need no explanation, and verify cross-references and…
ardalis/RiverBooks
Analyze code coverage and CRAP (Change Risk Anti-Patterns) scores to identify high-risk code.
chenjackle45/SayIt
Expand test automation coverage for codebase. An agent skill from chenjackle45/SayIt.
s3s-project/s3s
Measure and grow the line coverage of the s3s crate. An agent skill from s3s-project/s3s.
bactopia/bactopia
Show a live snapshot of the Bactopia project state — component counts, GroovyDoc coverage, nf-test coverage, and structural issues.
ldayton/Dippy
Ensure comprehensive test coverage for a CLI handler. An agent skill from ldayton/Dippy.
hdl-tools/digital-chip-design-agents
Microarchitecture exploration, PPA estimation, risk assessment, and architecture sign-off for digital chip design.
hdl-tools/digital-chip-design-agents
Compiler toolchain development for custom processor ISAs — LLVM/GCC backend, assembler, linker scripts, runtime libraries, and regression validation.
hdl-tools/digital-chip-design-agents
Design for Test — scan architecture planning, scan insertion, ATPG pattern generation, MBIST for embedded memories, and JTAG boundary scan.
hdl-tools/digital-chip-design-agents
Embedded firmware and device drivers — BSP development, peripheral driver implementation (UART, SPI, I2C, GPIO, DMA, Timer), RTOS integration (FreeRTOS, Zephyr), and system validation.
hdl-tools/digital-chip-design-agents
FPGA prototyping — ASIC-to-FPGA RTL adaptation, multi-FPGA partitioning, synthesis and timing closure on FPGA, hardware bring-up, and software validation on the prototype.
hdl-tools/digital-chip-design-agents
UVM-based functional verification — testbench architecture, test planning, directed and constrained-random stimulus, functional and code coverage closure, formal assist, and regression sign-off.
Categories
Formal property verification (FPV) and logical equivalence checking (LEC). Formal Verification is an agent skill from hdl-tools/digital-chip-design-agents. Formal property verification (FPV) and logical equivalence checking (LEC).
Formal Verification fits situations like: proving design properties exhaustively; checking RTL vs gate-level netlist equivalence; verifying CDC crossings formally; closing verification coverage gaps that simulation cannot efficiently reach.
Run `npx skills add hdl-tools/digital-chip-design-agents --skill formal-verification -a claude-code`. Or copy the skill folder (plugins/formal/skills/formal-verification in hdl-tools/digital-chip-design-agents) into .claude/skills/formal-verification in your project. Claude Code loads it when a task matches its description.
Run `npx skills add hdl-tools/digital-chip-design-agents --skill formal-verification -a codex`. Or copy the skill folder (plugins/formal/skills/formal-verification in hdl-tools/digital-chip-design-agents) into .agents/skills/formal-verification in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add hdl-tools/digital-chip-design-agents --skill formal-verification -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/formal-verification, .gemini/skills/formal-verification, .github/skills/formal-verification and .opencode/skills/formal-verification in your project.
SKILL.md names no scripts, command-line tools or credentials: Formal Verification is instructions for the agent only. Its frontmatter pre-approves these tools: Read, Write, Bash.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Formal Verification is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.4k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Formal Verification: Requirements (rizsotto/Bear, 6.5k stars), Crap Analysis (ardalis/RiverBooks, 135 stars), Bmad Testarch Automate (chenjackle45/SayIt, 115 stars) and Code Coverage (s3s-project/s3s, 311 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
hdl-tools (a GitHub organization) maintains it in hdl-tools/digital-chip-design-agents, which has 214 GitHub stars. The repository holds 17 skills in this directory. The repository was last updated on October 3, 2026.
Source: hdl-tools/digital-chip-design-agents on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.