openFPGALoader (trabucayre__openfpgaloader)

Field Value
Upstream https://github.com/trabucayre/openFPGALoader
Reviewed at 676e53e (upstream date 2026-09-23), reviewed 2026-09-27
License Apache-2.0
Language C++ (CMake), plus spiOverJtag/ gateware for other vendors
Toolchain CMake + libftdi/libusb; also bundled in YosysHQ oss-cad-suite
Target Universal FPGA programmer (Xilinx, Intel, Lattice, Gowin, Efinix, Anlogic, Cologne Chip)
Activity 2095 commits, 2019-09-26 → 2026-09-23, very active. Latest release v1.1.1 (2026-03-11). Main author Gwenhael Goavec-Merou

What it does for the ULX3S

Only the ULX3S-specific parts were reviewed (src/board.hpp, src/cable.hpp, doc/boards.yml, udev rules).

Board ID (-b) Transport Notes
ulx3s ft231X cable: FT231X on US1 (0403:6015) in bit-bang JTAG mode TCK/TMS/TDI/TDO on DCD/DSR/RI/CTS. SRAM + SPI flash
ulx3s_dfu USB DFU 1d50:614b on US2 Needs the DFU bootloader from emard/had2019-playground (binaries in ulx3s-bin); flash only
ulx3s_esp esp32s3 cable (ESP USB-JTAG, 303a:1001) Added 2025-04-18. The commit message says “it doesn’t work” at that point; current status unverified
ulx4m_dfu DFU 1d50:614b Successor board ULX4M (LD/LS), https://github.com/intergalaktik/ulx4m-ls
ulx2s FT232RL bit-bang Predecessor board

Common commands:

openFPGALoader -b ulx3s design.bit             # SRAM (default, -m optional)
openFPGALoader -b ulx3s -f design.bit          # SPI flash
openFPGALoader -b ulx3s design.bit.gz          # gzip accepted
openFPGALoader -b ulx3s_dfu design.bit         # via US2 DFU bootloader
openFPGALoader -b ulx3s --unprotect-flash --file-type bin -f multiboot.img.gz   # install bootloader image
openFPGALoader --detect -b ulx3s               # read IDCODE

udev: 70-openfpgaloader.rules (uaccess) or 99-… (group plugdev) include FT231X 0403:6015 and ULX3S/ULX4M DFU 1d50:614b.

Reuse notes

  • The recommended programmer for ULX3S today, and the default in our advice (toolchain memory).
  • Bit-banged FT231X JTAG is slow. For large 85F bitstreams, an external FT2232 on the JTAG header (-c ft2232) or DFU is faster.

Open questions

  • Does ulx3s_esp (ESP32-S3 USB-JTAG) work now? What ESP32-S3 hardware does it target (not the onboard ESP32)?

Back to top

Generated from the JSON in data/ by the scripts in .claude/skills. Facts cite the upstream file at the reviewed commit; verify before reuse.

This site uses Just the Docs, a documentation theme for Jekyll.