From rtl-agent-team
Validates consistency across hardware design phases: P3 uarch to P4 RTL contracts (port widths, memory classification, pipeline depth, bus params, REQ traceability) and P4 to P5 verification.
npx claudepluginhub babyworm/rtl-agent-team --plugin rtl-agent-teamThis skill is limited to using the following tools:
<Purpose>
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
<Use_When>
<Do_Not_Use_When>
Compare across three sources — all must agree:
docs/phase-2-architecture/io_definition.json (if exists): port widthsdocs/phase-3-uarch/*.md: interface width specificationsrtl/*/*.sv: actual module port declarationsFor each port: io_definition[width] == uarch_spec[width] == RTL_port_width.
Mismatch → CRITICAL.
For each storage element in P3 uarch docs:
sram_sp/sram_tp/sram_dp instancelogic [...] name [...] arraylogic [103:0] mem [511:0] with
combinational read → CRITICAL (register array where SRAM required)DEPTH * WIDTH > 4096 and no SRAM wrapper instantiated → CRITICALFor each module with pipeline specification in P3:
always_ff sequential stages (±1 tolerance)stage_* or sequential register chains in RTLFor each FIFO/bus width defined in P3 with a derivation formula:
localparam MUST use the same formula (derived from parameters)WIDTH = PIXELS * COMPONENTS * (BPC+1) + META but P4 has
localparam L_FIFO_W = 672 → MAJORlocalparam.*WIDTH.*=.*[0-9]+; where a corresponding parameter existsFor each REQ-U-* in docs/phase-3-uarch/iron-requirements.json:
// REQ: REQ-U-NNN)
or in docs/phase-4-rtl/functional-completeness.mdFor each RTL module in rtl/*/:
sim/{module}/tb_{module}.sv or equivalent must existsim/{module}/{module}_unit_results.json must exist with ref_mismatches=0Verify Stream B artifacts from P4 are present for P5 consumption:
docs/phase-4-rtl/stream-b-sva-skeletons.md → contains property/assert per moduledocs/phase-4-rtl/stream-b-cdc-preliminary.md → references clock domain namesdocs/phase-4-rtl/stream-b-tb-skeletons.md → references REQ tags per moduledocs/phase-4-rtl/stream-b-synth-estimate.md → no inferred latchessim/uvm/coverage/hier.cfg exists (if UVM flow) → TB infrastructure excluded from coverageRead all upstream artifacts, perform checks, generate report:
Glob("docs/phase-3-uarch/*.md")
Glob("docs/phase-3-uarch/iron-requirements.json")
Glob("docs/phase-2-architecture/io_definition.json")
Glob("rtl/*/*.sv")
Glob("sim/*/tb_*.sv")
Glob("sim/*/*_unit_results.json")
For each check: collect evidence (file:line citations), classify (CRITICAL/MAJOR/WARNING/INFO).
Write reviews/cross-phase-contract-validation.md:
# Cross-Phase Contract Validation
- Date: YYYY-MM-DD
- Boundary: P3→P4 | P4→P5
- Verdict: PASS | FAIL
## Check Results
| # | Check | Status | Evidence |
|---|-------|--------|----------|
| 1 | Port width consistency | PASS/FAIL | file:line details |
| 2 | Memory classification | PASS/FAIL | ... |
| ... | ... | ... | ... |
## Critical Findings
[details with file:line citations]
## Recommendations
[actionable fix suggestions]