plugins/gateflow/skills/gf-pnr/SKILL.md
Place and route with nextpnr for open-source FPGA targets. Supports iCE40, ECP5, and Gowin devices. Example: "place and route for iCEBreaker", "run P&R targeting ice40"
npx skillsauth add codejunkie99/gateflow-plugin gf-pnrInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
| FPGA Family | Tool | Command |
|------------|------|---------|
| Lattice iCE40 | nextpnr-ice40 | nextpnr-ice40 --up5k --package sg48 --json synth.json --pcf constraints.pcf --asc output.asc |
| Lattice ECP5 | nextpnr-ecp5 | nextpnr-ecp5 --85k --package CABGA381 --json synth.json --lpf constraints.lpf --textcfg output.config |
| Gowin | nextpnr-gowin | nextpnr-gowin --device GW1NR-LV9QN88PC6/I5 --json synth.json --cst constraints.cst |
NOT Supported: Xilinx (use Vivado), Intel (use Quartus). For these, GateFlow generates TCL scripts instead.
which nextpnr-ice40 || which nextpnr-ecp5 || which nextpnr-gowin
If not found:
---GATEFLOW-RESULT---
STATUS: ERROR
DETAILS: nextpnr not installed. Install for place & route.
macOS: brew install nextpnr
Linux: see https://github.com/YosysHQ/nextpnr
---END-GATEFLOW-RESULT---
After P&R:
icepack output.asc output.binecppack output.config output.bit---GATEFLOW-RESULT---
STATUS: PASS | FAIL | ERROR
TIMING:
Fmax: 125.3 MHz
Slack: +2.1 ns
UTILIZATION:
LUTs: 142 / 5280 (2.7%)
FFs: 87 / 5280 (1.6%)
FILES: [output files]
DETAILS: [summary or timing violations]
---END-GATEFLOW-RESULT---
| Flag | Purpose |
|---|---|
| --freq <mhz> | Target frequency |
| --seed <n> / -r | RNG seed / randomize |
| --opt-timing | Post-placement timing opt |
| --report <file> | JSON timing/utilization |
| --timing-allow-fail | Proceed despite violations |
| --router2-heatmap <prefix> | Congestion heatmaps |
| --placer heap | Heap placer (default) |
Devices: --lp1k, --lp8k, --hx1k, --hx8k, --up5k
Output: --asc <file> | Constraints: --pcf <file>
Full pipeline: yosys -p "synth_ice40 -json out.json" design.v && nextpnr-ice40 --hx8k --package ct256 --json out.json --pcf pins.pcf --asc out.asc && icepack out.asc out.bin
Devices: --12k, --25k, --45k, --85k
Output: --textcfg <file> | Constraints: --lpf <file>, --sdc <file>
Full pipeline: yosys -p "synth_ecp5 -json out.json" design.v && nextpnr-ecp5 --25k --package CABGA256 --json out.json --lpf pins.lpf --textcfg out.config && ecppack out.config out.bit
Device: --device <part> (e.g., GW1NR-LV9QN88PC6/I5)
Family: --vopt family=<fam> (for C-silicon, e.g., GW1N-9C)
Constraints: --vopt cst=<file> (mandatory)
Full pipeline: yosys -p "synth_gowin -json out.json" design.v && nextpnr-himbaechel --device GW1NR-LV9QN88PC6/I5 --vopt family=GW1N-9C --vopt cst=pins.cst --json out.json --write routed.json && gowin_pack -d GW1N-9C -o out.fs routed.json
--freq 0 for auto-determine, --freq N for target--opt-timing for post-placement optimization-r) for better placement--placer-heap-timingweight (20-50)--router2-tmg-ripup for timing-driven rerouting-nowidelut for ECP5 (big Fmax improvement)| Usage | Status | |---|---| | < 50% | Comfortable | | 50-70% | Normal | | 70-80% | Tight | | > 80% | Warning: congestion likely | | > 95% | May fail to route |
| Failure | Fix |
|---|---|
| Routing congestion | Larger device, optimize synth, different seed |
| Timing violations | Pipeline, --opt-timing, different seed |
| Placement failure | Check constraints, try --placer sa |
| Combinatorial loops | Break with register, or --ignore-loops |
set_io clk 21
set_io led[0] 99
set_frequency clk 48
LOCATE COMP "clk" SITE "P6";
IOBUF PORT "clk" IO_TYPE=LVCMOS33;
FREQUENCY PORT "clk" 48000000.0 HZ;
IO_LOC "clk" 52;
IO_PORT "clk" IO_TYPE=LVCMOS33;
tools
GateFlow release readiness workflow. Validates plugin manifests, marketplace metadata, docs index coverage, root mirrors, release notes, and component counts before a version tag is created. Use when preparing, checking, or cutting a GateFlow plugin release.
testing
Testbench verification best practices and patterns. This skill should be used when the user needs testbench architecture guidance, verification methodology, or wants to write professional-quality testbenches. Example requests: "testbench best practices", "how to structure TB", "verification patterns"
testing
Primary SystemVerilog/RTL orchestrator for GateFlow. Routes to specialist agents, runs verification, and iterates until working. Use when the user wants to create, test, fix, or implement any RTL design — FIFO, UART, AXI, state machines, or any digital hardware module.
development
Terminal visualization for GateFlow codebase maps. Renders module hierarchies, FSM state diagrams, and module detail cards as interactive ASCII/Unicode art. Example requests: "visualize the codebase", "show hierarchy", "show FSM", "show module detail"