| name | rtl-fpga-workflow |
| description | Design, review, and debug Verilog or SystemVerilog and FPGA work including interfaces, testbenches, reset strategy, clock-domain crossings, synthesis constraints, and timing-closure preparation. Use when writing RTL, planning an FPGA prototype, reviewing a testbench, or turning a hardware paper or spec into simulatable modules. |
RTL FPGA Workflow
Use this skill for RTL and FPGA tasks where interface discipline matters more than clever syntax.
Core Workflow
- Start with the interface contract and timing assumptions.
- Pick one clock and reset story and document it.
- Write the smallest useful testbench first.
- Use
references/rtl-checklist.md for resets, CDC, FSMs, RAMs, and synthesis hazards.
- Run
scripts/fpga_toolchain_doctor.py when tool availability is unclear.
- Use
references/toolchain-install.md when the task is to install or repair the toolchain.
- If
iverilog, verilator, or yosys exists, run the lightest valid check. scripts/rtl_quickcheck.py is the preferred wrapper.
- Report design gaps separately from simulation or toolchain gaps.
Execution Rules
- Avoid mixed blocking and nonblocking assignments in sequential logic.
- Make width, sign, and handshake behavior explicit.
- Never hand-wave CDC, async resets, or initialization semantics.
- Prefer small composable modules with testable interfaces over monolithic RTL.
- Distinguish synthesizable logic from testbench-only convenience code.
Output Contract
Return:
- Module contract.
- Design notes.
- Testbench plan.
- Tool results if any.
- Unresolved timing, reset, CDC, or synthesis risks.