Index | Thread | Search

From:
Stuart Henderson <stu@spacehopper.org>
Subject:
Re: New port cad/openfpgaloader
To:
Thomas Dettbarn <dettus@dettus.net>
Cc:
ports@openbsd.org
Date:
Tue, 9 Jun 2026 00:14:34 +0100

Download raw body.

Thread
On 2026/06/09 00:54, Thomas Dettbarn wrote:
> For your consideration, please find the port for cad/openfpgaloader
> attached to this email.
> It is part of the yosys & nextpnr & openfpgaloader toolchain,
> which can be used for FPGA design and synthesis on OpenBSD.
> 
> P.S.: It requires a manual kernel patch to run with certain devices.
> Please see the note in pkg/DESCR for details.

> diff --git a/cad/openfpgaloader/Makefile b/cad/openfpgaloader/Makefile
> new file mode 100644
> index 00000000000..ce24d929e1f
> --- /dev/null
> +++ b/cad/openfpgaloader/Makefile
> @@ -0,0 +1,24 @@
> +COMMENT=	Universal utility for programming FPGAs.

no caps for first letter; no trailing .

COMMENT=	universal utility for programming FPGAs

> +CATEGORIES=	cad
> +V=		1.1.1a
> +REVISION=	0

start without a REVISION line at all, we add the line later if required
(i.e. if changes were made to the port without a new upstream version).

> +DISTNAME=	openfpgaloader-${V}
> +
> +GH_ACCOUNT=	trabucayre
> +GH_PROJECT=	openFPGALoader
> +GH_COMMIT=	bf8106ef5f6e92017c5901737db3c3c9593e8b4d

in this situation we'd often take the version number of the last release,
and add plYYYYMMDD (with the date of the newest commit)

> +
> +HOMEPAGE=	https://github.com/trabucayre/openFPGALoader
> +MAINTAINER=	Thomas Dettbarn <dettus@dettus.net>
> +# APACHE-2.0
> +PERMIT_PACKAGE=	yes
> +

missing WANTLIB

> +
> +MODULES=	devel/cmake
> +NO_TEST=	Yes
> +
> +LIB_DEPENDS=	devel/libftdi1
> +
> +
> +.include <bsd.port.mk>
> +
> diff --git a/cad/openfpgaloader/distinfo b/cad/openfpgaloader/distinfo
> new file mode 100644
> index 00000000000..c5ce86a01bb
> --- /dev/null
> +++ b/cad/openfpgaloader/distinfo
> @@ -0,0 +1,2 @@
> +SHA256 (openfpgaloader-1.1.1a-bf8106ef.tar.gz) = wBNVSeoPICa1PcMDLwmw1CUJUq+u+IQ+NwoIFMOpGlc=
> +SIZE (openfpgaloader-1.1.1a-bf8106ef.tar.gz) = 2931988
> diff --git a/cad/openfpgaloader/pkg/DESCR b/cad/openfpgaloader/pkg/DESCR
> new file mode 100644
> index 00000000000..4827293c392
> --- /dev/null
> +++ b/cad/openfpgaloader/pkg/DESCR
> @@ -0,0 +1,29 @@
> +Universal utility for programming FPGAs. Compatible with many boards, 
> +cables and FPGA from major manufacturers (Xilinx, Altera/Intel, 
> +Lattice, Gowin, Efinix, Anlogic, Cologne Chip). openFPGALoader works on 
> +Linux, Windows, macOS and OpenBSD.

remove the trailing spaces on the lines.

cut DESCR at this point; the remaining text should go into a pkg-readme
file instead:

cp /usr/ports/infrastructure/templates/README.template pkg/README
$EDITOR pkg/README
make clean=fake
make plist (which should add the readme to pkg/PLIST).

> +
> +*** WARNING *** You might need to recompile the kernel.
> +Some devices have problems when they are accessed through uftdi(4). One 
> +of the ways to disable them for this module is by commenting out their
> +USB IDs in /usr/src/sys/dev/usb/uftdi.c. Like so:
> +
> +  { USB_VENDOR_FTDI, USB_PRODUCT_FTDI_SEMC_DSS20 },
> +  //{ USB_VENDOR_FTDI, USB_PRODUCT_FTDI_SERIAL_2232C },
> +  { USB_VENDOR_FTDI, USB_PRODUCT_FTDI_SERIAL_2232L },
> +
> +After the kernel has been compiled (See the OpenBSD FAQ for this), the
> +problematic devices will be accessed through ugen(4).
> +
> +One other possibility is to disable uftdi(4) completely:
> +
> +  doas config -e -f -o /bsd.nouftdi /bsd
> +  ukc> disable uftdi*
> +  ukc> quit
> +  reboot
> +
> +At the boot prompt, type 
> +
> +  boot> boot /bsd.nouftdi
> +
> +

configuring the kernel via the bsd.re-config(5) mechanism would
usually be the most convenient way to do this and I think I would
avoid suggesting other methods. basically you would want to add
the disable line to /etc/bsd.re-config, run /usr/libexec/reorder_kernel,
and reboot.

> diff --git a/cad/openfpgaloader/pkg/PLIST b/cad/openfpgaloader/pkg/PLIST
> new file mode 100644
> index 00000000000..ad9b42e89d0
> --- /dev/null
> +++ b/cad/openfpgaloader/pkg/PLIST
> @@ -0,0 +1,114 @@
> +@bin bin/openFPGALoader
> +share/openFPGALoader/
> +share/openFPGALoader/bpiOverJtag_xc7k480tffg1156.bit.gz
> +share/openFPGALoader/spiOverJtag_10cl006144.rbf.gz
> +share/openFPGALoader/spiOverJtag_10cl016484.rbf.gz
> +share/openFPGALoader/spiOverJtag_10cl025256.rbf.gz
> +share/openFPGALoader/spiOverJtag_10cl055484.rbf.gz
> +share/openFPGALoader/spiOverJtag_5ce215.rbf.gz
> +share/openFPGALoader/spiOverJtag_5ce223.rbf.gz
> +share/openFPGALoader/spiOverJtag_5ce423.rbf.gz
> +share/openFPGALoader/spiOverJtag_5ce523.rbf.gz
> +share/openFPGALoader/spiOverJtag_5ce927.rbf.gz
> +share/openFPGALoader/spiOverJtag_5sgsd5.rbf.gz
> +share/openFPGALoader/spiOverJtag_efinix_t120f324.bit.gz
> +share/openFPGALoader/spiOverJtag_efinix_t13f256.bit.gz
> +share/openFPGALoader/spiOverJtag_efinix_t8f81.bit.gz
> +share/openFPGALoader/spiOverJtag_efinix_ti180j484.bit.gz
> +share/openFPGALoader/spiOverJtag_efinix_ti60f225.bit.gz
> +share/openFPGALoader/spiOverJtag_ep4ce1017.rbf.gz
> +share/openFPGALoader/spiOverJtag_ep4ce11523.rbf.gz
> +share/openFPGALoader/spiOverJtag_ep4ce1523.rbf.gz
> +share/openFPGALoader/spiOverJtag_ep4ce2217.rbf.gz
> +share/openFPGALoader/spiOverJtag_ep4ce622.rbf.gz
> +share/openFPGALoader/spiOverJtag_xc3s500evq100.bit.gz
> +share/openFPGALoader/spiOverJtag_xc6slx100fgg484.bit.gz
> +share/openFPGALoader/spiOverJtag_xc6slx150tcsg484.bit.gz
> +share/openFPGALoader/spiOverJtag_xc6slx150tfgg484.bit.gz
> +share/openFPGALoader/spiOverJtag_xc6slx16csg324.bit.gz
> +share/openFPGALoader/spiOverJtag_xc6slx16ftg256.bit.gz
> +share/openFPGALoader/spiOverJtag_xc6slx25csg324.bit.gz
> +share/openFPGALoader/spiOverJtag_xc6slx25tcsg324.bit.gz
> +share/openFPGALoader/spiOverJtag_xc6slx45csg324.bit.gz
> +share/openFPGALoader/spiOverJtag_xc6slx45tfgg484.bit.gz
> +share/openFPGALoader/spiOverJtag_xc6slx9csg324.bit.gz
> +share/openFPGALoader/spiOverJtag_xc6slx9tqg144.bit.gz
> +share/openFPGALoader/spiOverJtag_xc6vlx130tff784.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a100t.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a100tcsg324.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a100tfgg484.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a100tfgg676.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a100tftg256.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a12t.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a12tcpg238.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a12tcsg325.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a15t.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a15tcpg236.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a15tcsg324.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a15tcsg325.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a15tfgg484.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a15tftg256.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a200t.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a200tfbg484.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a200tfbg676.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a200tffg1156.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a200tsbg484.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a25t.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a25tcpg238.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a25tcsg325.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a35t.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a35tcpg236.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a35tcsg324.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a35tcsg325.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a35tfgg484.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a35tftg256.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a50t.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a50tcpg236.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a50tcsg324.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a50tcsg325.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a50tcsg325_1v35.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a50tfgg484.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a50tftg256.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a75t.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a75tcsg324.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a75tfgg484.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a75tfgg676.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7a75tftg256.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7k160tffg676.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7k325tfbg900.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7k325tffg676.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7k325tffg900.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7k420tffg901.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7k70tfbg484.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7k70tfbg676.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7s100.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7s100fgga484.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7s100fgga676.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7s15.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7s15cpga196.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7s15csga225.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7s15ftgb196.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7s25.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7s25csga225.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7s25csga324.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7s25ftgb196.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7s50.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7s50csga324.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7s50fgga484.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7s50ftgb196.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7s6.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7s6cpga196.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7s6csga225.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7s6ftgb196.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7s75.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7s75fgga484.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7s75fgga676.bit.gz
> +share/openFPGALoader/spiOverJtag_xc7vx330tffg1157.bit.gz
> +share/openFPGALoader/spiOverJtag_xcau10p-ffvb676.bit.gz
> +share/openFPGALoader/spiOverJtag_xcau15p-ffvb676.bit.gz
> +share/openFPGALoader/spiOverJtag_xcku040-ffva1156.bit.gz
> +share/openFPGALoader/spiOverJtag_xcku060-ffva1156.bit.gz
> +share/openFPGALoader/spiOverJtag_xcku3p-ffva676.bit.gz
> +share/openFPGALoader/spiOverJtag_xcku5p-ffvb676.bit.gz
> +share/openFPGALoader/spiOverJtag_xcvu37p-fsvh2892.bit.gz
> +share/openFPGALoader/spiOverJtag_xcvu9p-flga2104.bit.gz
>