rtl-review

Audits Verilog and SystemVerilog RTL for lint violations, synthesis hazards, and coding-style compliance.

26|8|Updated Jun 13, 2026
One-click install
npx skills add https://github.com/vibeic/vibe-ic --skill rtl-review-vibeic
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: rtl-review
Source: https://github.com/vibeic/vibe-ic/tree/main/vibe-ic-marketplace/plugins/vibe-ic/skills/rtl-review
Command: npx skills add https://github.com/vibeic/vibe-ic --skill rtl-review-vibeic

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? AI-generated and hand-written RTL often contains latch inference, width mismatches, reset hygiene issues, and cross-module encoding mismatches that pass simulation but fail in synthesis or on FPGA hardware. This Skill runs a deterministic audit pipeline that scores RTL 0-10 and produces a structured review report before simulation or tape-in. ## Core Features & Use Cases - Deterministic multi-auditor pipeline: Runs rtl_hygiene_lint, reset_discipline_check, and rtl_precheck_gate via rtl_review_aggregate.py, aggregating findings into six categories with a pytest-pinned scoring rubric. - Cross-module interface checks: Detects gray-code vs binary encoding mismatches, TX data content errors (CRC bit-reversal, status byte fields), and TX/RX counter approach violations. - FPGA-specific blocking rules: Rejects Quartus-unsafe ROM initialization patterns that silently synthesize to all-zero on Intel/Altera targets. - Use Case: A designer shares a directory of SystemVerilog files and asks "is this synthesizable?" The Skill runs the aggregate program, emits rtl_review.md and rtl_review.json with a score and verdict, then hands off to /rtl-repair on FAIL or /checkpoint-gate on PASS. ## Quick Start Review all RTL files in my project directory and tell me the score, verdict, and which lint or synthesis hazards need fixing before tapeout.

Frequently Asked Questions about rtl-review

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I review Verilog RTL for synthesis hazards?▼

Run rtl_review_aggregate.py on the directory containing your .v and .sv files. It executes three sub-auditors covering lint hygiene, reset discipline, and correctness smells, then emits a Markdown report and JSON with a 0-10 score and PASS, WARN, or FAIL verdict.

What tools check SystemVerilog lint and synthesizability?▼

Verilator with --lint-only -Wall catches width mismatches and truncation warnings, Yosys handles synthesis checks with -sv, and this Skill's rtl_hygiene_lint program automates hazard detection. iverilog has poor SystemVerilog support and suits only simple Verilog.

Why does my RTL work in simulation but fail on FPGA hardware?▼

A common cause is initializing register-array memory with an initial-block for-loop, which Quartus silently drops to all-zero while still returning compile success. Use a combinational case statement or $readmemh with an external hex file instead, and audit the .map.rpt for Warnings 10030 and 10855.

How is the RTL review score calculated?▼

The score is computed deterministically by compute_score() in rtl_review_aggregate.py: 10 requires zero findings, 6-7 allows up to four warnings, and two or more errors score 2-3 with a FAIL verdict. Scores only cover auditors that actually ran, and skipped auditors are reported as auditors_not_run.

Can the review detect gray-code versus binary encoding mismatches?▼

Yes, the interface_encoding_audit cross-check flags cases where a producer module outputs binary counter values but a consumer compares against gray-code patterns. This mismatch causes silent total failure with no compile error, so it is treated as a blocking finding.

What are the limitations of automated RTL review?▼

The program cannot judge whether an error-flag site is recoverable or fatal, since that depends on protocol semantics in the L3/L5 specification prose rather than RTL structure. That classification requires reading the spec and quoting the exact sentences that justify the decision.