SynthesisDeck
Open-source FPGA development toolchain for VS Code
Build, simulate, and program FPGA designs without leaving the editor.
SynthesisDeck brings a complete open-source hardware workflow to VS Code — from writing HDL to flashing your board.

Highlights
- One-click synthesis — Yosys → nextpnr → bitstream pack, no Makefiles needed
- Zero-install native toolchain — the pinned oss-cad-suite downloads automatically on first build; no Docker, no manual installs
- Multi-family — iCE40, ECP5, and Gowin (9 board presets)
- Mixed HDL — VHDL (2008), Verilog, SystemVerilog, or any combination
- Board programming — Flash connected FPGAs directly from the editor
- Build Progress Panel — Real-time cyberpunk-themed GUI for pipeline status
- Project scaffolding — Templates with pre-configured constraints and example designs
- Simulation — GHDL testbench execution from the command palette
- PLL generation — Generate PLL configs for iCE40 with
icepll
Supported Boards
| Family |
Boards |
Programmer |
| iCE40 |
iCEstick · iCEBreaker · TinyFPGA BX · UPduino v3.1 |
iceprog / openFPGALoader |
| ECP5 |
ULX3S · OrangeCrab · Colorlight i5 |
openFPGALoader |
| Gowin |
Tang Nano 9K · Tang Nano 20K |
openFPGALoader |
Quick Start
Prerequisites
| Requirement |
Notes |
| VS Code ≥ 1.85 |
Required engine version |
| ~2 GB disk + internet |
The FPGA toolchain downloads automatically on first build |
First Project
- Install SynthesisDeck from the Marketplace
- Open the Welcome page —
Ctrl+Shift+P → SynthesisDeck: Welcome
- System diagnostics will check the FPGA toolchain and programmer status
- Click New Project, pick a board, choose a template
- Hit Build & Program to synthesize and flash
Workspace Marker
SynthesisDeck activates when it finds a .synthesisdeck/ directory alongside your fpga-project.toml. New projects get this automatically; for existing projects the extension will prompt you to migrate.
Project Config
[project]
name = "my_project"
[target]
family = "ice40"
device = "hx1k"
package = "tq144"
board = "icestick"
[sources]
top = "top"
vhdl = ["src/*.vhdl"]
Commands
| Command |
Description |
| Build Project |
Run full synthesis pipeline |
| Build & Program |
Build then flash the board |
| Build Stage… |
Run a specific pipeline stage |
| Program Board |
Flash bitstream to connected board |
| Run Simulation |
Run GHDL testbench simulation |
| Visual Simulation |
Run a GHDL simulation and view results in an interactive board panel |
| Clean Build |
Remove build artifacts |
| New Project |
Create project from template |
| Generate PLL |
Generate PLL config (iCE40) |
| Select Board |
Change target board |
| Detect Board |
Detect USB-connected FPGA boards |
| Toggle Program Target (SRAM / Flash) |
Switch where the bitstream is written |
| Open Project Config |
Open fpga-project.toml |
| Show Project Info |
Display project diagnostics |
| Setup |
Run guided setup |
| Welcome |
Open the welcome page |
All commands are available via Ctrl+Shift+P (prefix: SynthesisDeck).
Settings
| Setting |
Default |
Description |
synthesisDeck.toolchain.version |
2026-06-14 |
Pinned oss-cad-suite release tag to download |
synthesisDeck.toolchain.baseUrl |
https://payload.synthesisdeck.com |
Base URL for the toolchain download (point at another mirror to self-host) |
synthesisDeck.toolchain.sha256 |
"" |
Optional SHA-256 to verify the downloaded toolchain tarball |
synthesisDeck.toolchain.ghdlWindowsVersion |
6.0.0 |
GHDL release fetched for VHDL support on native Windows |
synthesisDeck.programmer.path |
"" |
Custom programmer binary path |
synthesisDeck.autoSaveBeforeBuild |
true |
Auto-save files before building |
synthesisDeck.showBuildNotifications |
true |
Show build completion notifications |
synthesisDeck.usb.autoDetect |
true |
Auto-detect connected boards via USB |
synthesisDeck.usb.pollInterval |
5000 |
USB detection poll interval (ms) |
synthesisDeck.advancedMode |
false |
Show verbose output in the Output panel |
Diagnostics
Built-in problem matchers surface errors directly in the Problems panel:
- GHDL — VHDL errors with file, line, column
- Yosys — Synthesis errors and warnings
- nextpnr — Place-and-route errors
Click any error to jump to the source location.
| Family |
Format |
Extension |
| iCE40 |
Physical Constraints File |
.pcf |
| ECP5 |
Lattice Preference File |
.lpf |
| Gowin |
Constraint File |
.cst |
| Platform |
Status |
| macOS (native, Intel & Apple Silicon) |
Supported |
| Linux (native — Ubuntu, Debian, Fedora, Arch) |
Supported |
| Windows (native, x64 + ARM64 via emulation) |
Supported |
VHDL on Windows uses a standalone GHDL downloaded alongside the suite. VHDL on linux-arm64 is not yet available (Verilog/SystemVerilog works).
SynthesisDeck integrates these open-source tools:
License
MIT
SynthesisDeck bundles and downloads third-party open-source software
(openFPGALoader, the oss-cad-suite toolchain, GHDL, libusb/libftdi1, …). See
THIRD-PARTY-NOTICES.md for their licenses and sources.