Help us improve
Share bugs, ideas, or general feedback.
From rtl-agent-team
Reproduces RTL bugs by creating minimal testbenches and analyzing waveforms to isolate root cause. Outputs repro_tb.sv and root_cause.md for regression failures.
npx claudepluginhub babyworm/rtl-agent-team --plugin rtl-agent-teamHow this skill is triggered — by the user, by Claude, or both
Slash command
/rtl-agent-team:rtl-bug-repro [bug-id | --failing-test <path>][bug-id | --failing-test <path>]This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
<Purpose>
Policy rules, mandatory sequence, parallel UNIT_FIX decision tree, escalation rules, and checklists for the RTL bug fix workflow. Pure reference — no orchestration.
Translates cryptic errors from Verilator, Yosys, GHDL, and hardware simulations into 3-layer explanations (WHAT, WHY, FIX) for RTL debugging.
Diagnoses and routes fixes for verification or test failures with evidence-based root cause analysis. Never edits code directly.
Share bugs, ideas, or general feedback.
<Use_When>
<Do_Not_Use_When>
rtl-synth-check instead.
</Do_Not_Use_When><Why_This_Exists>
Debugging without a minimal reproduction wastes time. Waveform analysis on the full regression is slow; a targeted minimal TB isolates the failure in minutes. root_cause.md documents the finding for the RTL engineer making the fix, and the repro TB can be added directly to the regression suite.
</Why_This_Exists>
.vcd/.fst waveform from a previous simulation run.rtl/**/*.sv.If prerequisites are missing: WARNING — recommend running the failing regression test first to obtain a waveform. Proceed with available artifacts; the orchestrator adapts scope.
| Path | Role | |------|------| | `templates/repro-tb-template.sv` | Minimal TB scaffold: clock/reset gen, DUT instantiation, stimulus, pass/fail assertion. | | `scripts/vcd_diff.py` | Cycle-by-cycle VCD comparison — identifies first divergence between two waveform files. | | `references/bug-repro-conventions.md` | Naming rules, output schema (repro_tb.sv / root_cause.md), length guidance, anti-patterns. | | `examples/` | (placeholder — deep-fill in follow-up PR) |<Responsibility_Boundary>
vcd_diff.py identifies the exact divergence cycle and signal path between two VCD files.root_cause.md structure documented in references/bug-repro-conventions.md.
</Responsibility_Boundary>Apply steps 1-6 to every bug ID requested — do not stop after the first.
<Tool_Usage> Waveform analysis (when no golden VCD for diff):
Task(subagent_type="rtl-agent-team:waveform-analyzer",
prompt="Analyze sim/regression/test_cabac_fail.vcd. Find first divergence between actual and expected output. Identify originating module and signal path. Port signals use i_/o_ prefixes, clocks are {domain}_clk, resets are {domain}_rst_n.")
Minimal TB authoring and confirmation:
Task(subagent_type="rtl-agent-team:func-verifier",
prompt="Write sim/bugs/BUG-042/repro_tb.sv that reproduces the CABAC bypass mode failure at cycle ~250. Minimize stimulus to the essential sequence. Use: i_/o_ port prefixes, sys_clk, sys_rst_n, u_dut instance, logic types only. Scaffold: skills/rtl-bug-repro/templates/repro-tb-template.sv. Run: scripts/run_sim.sh --sim iverilog --top repro_tb --outdir sim/bugs/BUG-042 --trace rtl/cabac_encoder/cabac_encoder.sv sim/bugs/BUG-042/repro_tb.sv. Confirm reproduction.")
</Tool_Usage>
Regression test `test_cabac_bypass` fails at cycle 247; waveform shows output divergence in the bypass path. skills/rtl-bug-repro/examples/ `vcd_diff.py` reports first divergence at cycle 247 on `u_cabac_encoder.o_bin_val`; `func-verifier` writes a 40-line `repro_tb.sv` that reproduces in 300 cycles; `root_cause.md` identifies missing state reset in `bypass_ctx` register at `rtl/cabac_encoder/cabac_encoder.sv:183`. No golden VCD available; only the failing test log and the module source exist. skills/rtl-bug-repro/examples/ `waveform-analyzer` reads the failing VCD and identifies the signal path without a golden reference; `func-verifier` writes minimal stimulus based on the identified divergence point; `root_cause.md` labels the hypothesis as "suspected" pending confirmation by the repro run. Bug affects three modules; regression isolates failure to the AXI-Stream bridge boundary. skills/rtl-bug-repro/examples/ Repro TB instantiates only the two modules at the failing boundary; `root_cause.md` documents all affected signal paths and flags the issue as systemic per escalation rules.<Escalation_And_Stop_Conditions>
root_cause.md that a minimal repro could not be isolated.rtl-architect in the analysis task.root_cause.md and flag as systemic.sim/bugs/{bug_id}/repro_tb.sv — minimal reproduction testbench, confirmed to reproduce the failure.sim/bugs/{bug_id}/root_cause.md — root cause analysis: symptom, first failure cycle, signal trace, suspected RTL location.sim/bugs/{bug_id}/repro_tb.vcd (or .fst) — waveform from the reproduction run.<Final_Checklist>
templates/repro-tb-template.sv scaffold.run_sim.sh exit code 0 + failure assertion fires).sim/bugs/{bug_id}/root_cause.md written with signal trace and suspected RTL location.