Quickstart — up and running in 10 minutes
This guide walks through installing the Fpgawright CLI, connecting it to your RTL repository, running your first analysis, and setting up a CI hook.
Step 1 — Install the CLI
The CLI requires Node.js 18+ or you can download a standalone binary. The binary has no runtime dependencies.
# Install via npm
npm install -g @fpgawright/cli
# Or download the Linux binary
curl -fsSL https://fpgawright.com/install.sh | sh
Verify the installation:
fpgawright --version
# fpgawright v0.9.2
Step 2 — Connect your repository
Authenticate with your API key. You can find your key in the dashboard after access is granted.
fpgawright auth login --key $FPGAWRIGHT_API_KEY
Create a config file in your repo root. This tells Fpgawright where to find your RTL source:
# .fpgawright.yaml
rtl:
paths:
- ./rtl
- ./src/rtl
language: systemverilog
output:
format: json
fail_on: error
Step 3 — Run your first analysis
From your repo root, run:
fpgawright analyze
The analysis runs in two passes. You'll see progress output in your terminal. A typical 100k-line design completes in 2–4 minutes.
→ Indexing RTL source (247 files)
→ Running base rule engine (140 rules)
→ Applying learned patterns
→ Generating report
Analysis complete: 3 errors, 7 warnings
GLT-003 ERROR clock_sync_module.sv:142 CDC violation
RST-007 ERROR top_module.sv:89 Async reset in sync domain
FSM-012 WARN state_machine.sv:203 Unreachable state S_IDLE
(+ 6 more warnings)
Full report: ./fpgawright-report.json
Step 4 — Read your first report
The JSON report contains the full ranked violation list. Open it directly or use the CLI to render a human-readable summary:
fpgawright report show
fpgawright report export --format pdf --output ./rtl-verification.pdf
Each violation entry includes:
- Rule ID (e.g.,
GLT-003) and description - File path and line number
- Module name and signal context
- Severity and learned weight score
- Link to the relevant spec clause
Step 5 — Set up your CI hook
Add the Fpgawright GitHub Actions workflow to your repository:
# .github/workflows/fpgawright.yml
name: RTL Verification
on: [push, pull_request]
jobs:
verify:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Fpgawright RTL verification
uses: fpgawright/action@v2
with:
api-key: ${{ secrets.FPGAWRIGHT_API_KEY }}
rtl-path: ./rtl
diff-only: true
The diff-only: true flag runs in diff-aware mode — the action reports only violations introduced by the current commit, not the full baseline list. This mode is recommended for PR-gating workflows to avoid noise from pre-existing findings.
Configuration reference
The .fpgawright.yaml file supports the following top-level keys:
rtl.paths— list of directories containing RTL source filesrtl.language—verilog,systemverilog,vhdl, ormixedrules— per-rule severity overrides and enable/disable toggleslearning.enabled— enable historical bug pattern weighting (default:true)learning.weight_factor— multiplier for learned pattern weights (default:2.0)output.format—jsonorpdfoutput.fail_on— exit non-zero onerror,warn, ornone
Next step: explore the RTL Rules Reference to understand which rules are enabled by default and how to configure them for your architecture.