一键导入
rtl-lint-check
Lint RTL with Verilator, Verible, and slang; report-only quick check for 'run lint', pre-commit, or phase-gate verification (no fixing).
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Lint RTL with Verilator, Verible, and slang; report-only quick check for 'run lint', pre-commit, or phase-gate verification (no fixing).
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Read-only architecture review of RTL vs uArch spec with area/timing/power tradeoffs. Use for post-RTL architecture sign-off or suspected spec mismatch.
Builds Phase 3 SystemC TLM-2.0 bus functional models with AMBA (AXI/AHB/APB) support. Use for 'develop BFM', 'SystemC TLM model', 'bus functional model'.
Encoder RD evaluation of C ref model: BD-PSNR/BD-rate (VCEG-M33) across sequences/QPs — 'RD eval', 'BD-rate', codec algorithm quality comparison.
Validate spec contracts across phase boundaries (P3 uarch to P4 RTL to P5 verify): port widths, memory class, REQ traceability. Use at P4/P5 entry.
Internal reference: p1 spec research policy (agent-loaded; do not invoke).
Full 6-phase RTL pipeline from spec to verified design (P1 research through P6 design note). Triggers: 'design a chip', 'full pipeline', 'autopilot'.
| name | rtl-lint-check |
| description | Lint RTL with Verilator, Verible, and slang; report-only quick check for 'run lint', pre-commit, or phase-gate verification (no fixing). |
| user-invocable | true |
RTL files (rtl/) are linted with slang -Weverything for maximum strictness — this catches
IEEE 1800 §9.2.2.4 violations (e.g., always_ff + initial on same signal) that only VCS
enforces at compile time. TB files (sim/) use --allow-dup-initial-drivers for flexibility.
Report all violations with file, line, rule, and severity.
See references/verilator-warnings.md for detailed Verilator warning categories and waiver format.
<Use_When>
<Do_Not_Use_When>
<Why_This_Exists> Three complementary lint tools catch different issue classes:
<Coding_Convention_Requirements> Lint checks MUST enforce the project coding conventions (CLAUDE.md):
i_ (input), o_ (output), io_ (bidirectional) — NOT suffix _i, _oclk (single domain) or {domain}_clk (multiple domains, e.g., sys_clk) — NOT clk_irst_n (single domain) or {domain}_rst_n (multiple domains, e.g., sys_rst_n) — NOT rst_nilogic only — reg/wire usage flagged as violationlogic/typedef/localparam must appear before assign/always blocks — forward references flagged as violationu_ — missing prefix flaggedgen_ — missing prefix flagged
Note: Verible and slang may not catch all convention violations natively.
lint-checker MUST perform a supplementary grep-based check for naming conventions.
</Coding_Convention_Requirements><Execution_Policy>
lint/scripts/run_lint.sh (creates lint/lint/replay/run_lint_*_latest.sh){plugin_root}/skills/rtl-lint-check/scripts/check_conventions.sh {files} ({plugin_root} = plugin root resolved from .rat/state/spawn-context.json) for automated convention checkingreg/wire declarations, port suffixes _i/_o, clk_i/rst_ni, missing u_/gen_ prefixes, declarations after logic blocks (forward reference risk)templates/lint-report.md as the report format template.verilator.vlt exists, apply waivers before final verdict (see templates/verilator-waiver.vlt for waiver format)
<Tool_Usage>
Task(subagent_type="rtl-agent-team:lint-checker",
prompt="Run Verilator, Verible, and slang lint on rtl/ via Bash CLI. Verilator: --lint-only -Wall -Wpedantic -sv. Verible: --rules_config .verible_lint.cfg. slang: -Weverything for RTL and --allow-dup-initial-drivers for TB. Also check naming conventions: i_/o_ port prefixes, {domain}_clk/{domain}_rst_n, logic not reg/wire, u_ instance prefix. Report all violations grouped by file and severity (Critical/Major/Minor). Return PASS or FAIL summary.")
</Tool_Usage>
lint-checker runs all three tools via Bash CLI, finds 3 Verible style violations, 1 slang unused-variable warning, and 2 convention violations (port `data_i` should be `i_data`, `clk` should be `sys_clk` in multi-domain context); returns FAIL with exact line numbers and rule names. Running only one lint tool and claiming "lint clean" — misses semantic issues caught only by slang. Not checking naming conventions — allows `clk_i`, `data_o` to pass lint despite project rules.<Escalation_And_Stop_Conditions>
/rtl-agent-team:rat-setup (official binary releases: https://github.com/chipsalliance/verible/releases)/rtl-agent-team:rat-setup (official binary/source instructions: https://sv-lang.com/user-manual.html#getting-the-binary)<Final_Checklist>
Verilator waiver file (.verilator.vlt) for intentional suppressions:
`verilator_config
lint_off -rule UNUSED -file "rtl/reserved/reserved.sv" -lines 10-15
lint_off -rule WIDTH -file "rtl/datapath/datapath.sv" -match "Operator *"
Generate waiver template: verilator --lint-only -Wall --waiver-output verilator.vlt rtl/*/*.sv
See references/verilator-warnings.md for complete warning reference.