git: 2fde22d5d05d - main - cad/yosys-systemverilog: New port: SystemVerilog support for Yosys

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Tue, 06 Jun 2023 21:11:03 UTC
The branch main has been updated by yuri:

URL: https://cgit.FreeBSD.org/ports/commit/?id=2fde22d5d05d8c75c5cc93cf98247c837ff43120

commit 2fde22d5d05d8c75c5cc93cf98247c837ff43120
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2023-06-06 21:09:16 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2023-06-06 21:10:58 +0000

    cad/yosys-systemverilog: New port: SystemVerilog support for Yosys
---
 cad/Makefile                                      |  1 +
 cad/yosys-systemverilog/Makefile                  | 93 +++++++++++++++++++++++
 cad/yosys-systemverilog/distinfo                  | 35 +++++++++
 cad/yosys-systemverilog/files/install.sh          | 14 ++++
 cad/yosys-systemverilog/files/patch-sv2v_Makefile | 11 +++
 cad/yosys-systemverilog/pkg-descr                 |  2 +
 cad/yosys-systemverilog/pkg-plist                 | 52 +++++++++++++
 7 files changed, 208 insertions(+)

diff --git a/cad/Makefile b/cad/Makefile
index 48be6f53129f..d8269b0f165f 100644
--- a/cad/Makefile
+++ b/cad/Makefile
@@ -151,6 +151,7 @@
     SUBDIR += xcircuit
     SUBDIR += xyce
     SUBDIR += yosys
+    SUBDIR += yosys-systemverilog
     SUBDIR += z88
     SUBDIR += zcad
 
diff --git a/cad/yosys-systemverilog/Makefile b/cad/yosys-systemverilog/Makefile
new file mode 100644
index 000000000000..e9f4a7f48dd6
--- /dev/null
+++ b/cad/yosys-systemverilog/Makefile
@@ -0,0 +1,93 @@
+PORTNAME=	yosys-systemverilog
+DISTVERSION=	2023-06-05
+CATEGORIES=	cad
+PKGNAMEPREFIX=
+
+MAINTAINER=	yuri@FreeBSD.org
+COMMENT=	SystemVerilog support for Yosys
+WWW=		https://github.com/antmicro/yosys-systemverilog
+
+LICENSE=	APACHE20
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+BUILD_DEPENDS=	bash:shells/bash \
+		yosys>0:cad/yosys
+LIB_DEPENDS=	libcapnp.so:devel/capnproto \
+		libffi.so:devel/libffi \
+		libsurelog.so:cad/surelog \
+		libuhdm.so:cad/uhdm
+RUN_DEPENDS=	yosys>0:cad/yosys
+
+USES=		cabal gmake pkgconfig python:build readline tcl
+
+USE_CABAL=	alex-3.3.0.0 \
+		cmdargs-0.10.22 \
+		githash-0.1.6.3 \
+		happy-1.20.1.1 \
+		hashable-1.4.2.0_1 \
+		primitive-0.8.0.0 \
+		th-compat-0.1.4_2 \
+		vector-0.13.0.0_3 \
+		vector-stream-0.1.0.0_2
+SKIP_CABAL_PLIST=	yes
+# in order to update USE_CABAL run 'make local-cabal-configure local-make-use-cabal'
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	antmicro
+GH_TAGNAME=	00c9bce-${DISTVERSION}
+GH_TUPLE=	chipsalliance:yosys-f4pga-plugins:56f957c:yosys_f4pga_plugins/yosys-f4pga-plugins \
+		zachjs:sv2v:6c4ee8f:sv2v/sv2v \
+		YosysHQ:yosys:c5e4eec:yosys/yosys
+
+MAKE_ENV=	DESTDIR=${DESTDIR} \
+		HOME=${WRKSRC}
+MAKE_ARGS=	YOSYS_PATH=${LOCALBASE} -j${MAKE_JOBS_NUMBER}
+
+BINARY_ALIAS=	python3=${PYTHON_CMD} \
+		install=${FILESDIR}/install.sh
+
+OPTIONS_DEFINE=		TCMALLOC
+OPTIONS_DEFAULT=	TCMALLOC # should be the same TCMALLOC default as in cad/yosys, cad/surelog, cad/uhdm because surelog's lib is used in the yosys plugin cad/yosys-systemverilog
+
+TCMALLOC_LDFLAGS=	`pkg-config --libs libtcmalloc`
+TCMALLOC_LIB_DEPENDS=	libtcmalloc.so:devel/google-perftools
+
+post-extract:
+	@${CP} ${WRKSRC_yosys}/passes/pmgen/pmgen.py ${WRKSRC}/yosys-f4pga-plugins
+
+local-cabal-configure: check-cabal
+	@cd ${WRKSRC}/sv2v && \
+		${SETENV} ${MAKE_ENV} ${CABAL_HOME_ENV} ${CABAL_CMD} build --dry-run --disable-benchmarks --disable-tests --flags="${CABAL_FLAGS}" ${CABAL_WITH_ARGS} ${CABAL_LTO_ARGS} ${BUILD_ARGS} exe:sv2v
+
+local-make-use-cabal: check-cabal2tuple
+	@${_CABAL2TUPLE_CMD} ${CABAL2TUPLE_ARGS} ${WRKSRC}/sv2v || (${ECHO_CMD} "Did you forget to make do-cabal-configure ?" ; exit 1)
+
+do-build:
+	# UHDM plugin
+	${ECHO} "==> Building the C part (yosys-f4pga-plugins)"
+	@cd ${WRKSRC}/yosys-f4pga-plugins && ${SETENV} ${MAKE_ENV} ${GMAKE} ${MAKE_ARGS} ${ALL_TARGET}
+	# sv2v
+	${ECHO} "==> Building the Haskell part (sv2v)"
+	cd ${WRKSRC}/sv2v && \
+		${LN} -fs ${CABAL_DEPSDIR} && \
+		${LN} -fs ../cabal.project.local && \
+		${SETENV} ${MAKE_ENV} ${CABAL_HOME_ENV} ${CABAL_CMD} build --offline --disable-benchmarks --disable-tests ${CABAL_WITH_ARGS} ${CABAL_LTO_ARGS} --flags "${CABAL_FLAGS}" ${BUILD_ARGS} exe:sv2v
+
+do-install:
+	# create directories
+	@${MKDIR} \
+		${STAGEDIR}${PREFIX}/share/yosys/plugins/fasm_extra_modules \
+		${STAGEDIR}${PREFIX}/share/yosys/quicklogic/pp3 \
+		${STAGEDIR}${PREFIX}/share/yosys/quicklogic/qlf_k6n10 \
+		${STAGEDIR}${PREFIX}/share/yosys/quicklogic/qlf_k6n10f \
+		${STAGEDIR}${PREFIX}/share/yosys/nexus
+	# UHDM plugin
+	cd ${WRKSRC}/yosys-f4pga-plugins && ${SETENV} ${MAKE_ENV} ${GMAKE} ${MAKE_ARGS} ${INSTALL_TARGET}
+	# sv2v
+	${INSTALL_PROGRAM} \
+		${WRKSRC}/sv2v/dist-newstyle/build/*-freebsd/ghc-*/sv2v-*/x/sv2v/build/sv2v/sv2v \
+		${STAGEDIR}${PREFIX}/bin
+	# strip binaries
+	${STRIP_CMD} ${STAGEDIR}${PREFIX}/share/yosys/plugins/*.so
+
+.include <bsd.port.mk>
diff --git a/cad/yosys-systemverilog/distinfo b/cad/yosys-systemverilog/distinfo
new file mode 100644
index 000000000000..b5f91e6485fd
--- /dev/null
+++ b/cad/yosys-systemverilog/distinfo
@@ -0,0 +1,35 @@
+TIMESTAMP = 1686074483
+SHA256 (cabal/alex-3.3.0.0/alex-3.3.0.0.tar.gz) = 810f8e85ea6b87c37cba10f7660d7f1aa0ba251c1275e3a18c312964bb329a63
+SIZE (cabal/alex-3.3.0.0/alex-3.3.0.0.tar.gz) = 86004
+SHA256 (cabal/cmdargs-0.10.22/cmdargs-0.10.22.tar.gz) = b8b12e7f8795cf13037bb062d453b86c788eae62558586f59e9419aabe6e9bef
+SIZE (cabal/cmdargs-0.10.22/cmdargs-0.10.22.tar.gz) = 65154
+SHA256 (cabal/githash-0.1.6.3/githash-0.1.6.3.tar.gz) = fcba79b60ef87bdd4976332e998589a62e1be012b932b543b49de5e0620eef1b
+SIZE (cabal/githash-0.1.6.3/githash-0.1.6.3.tar.gz) = 7617
+SHA256 (cabal/happy-1.20.1.1/happy-1.20.1.1.tar.gz) = 8b4e7dc5a6c5fd666f8f7163232931ab28746d0d17da8fa1cbd68be9e878881b
+SIZE (cabal/happy-1.20.1.1/happy-1.20.1.1.tar.gz) = 183409
+SHA256 (cabal/hashable-1.4.2.0/hashable-1.4.2.0.tar.gz) = 1b4000ea82b81f69d46d0af4152c10c6303873510738e24cfc4767760d30e3f8
+SIZE (cabal/hashable-1.4.2.0/hashable-1.4.2.0.tar.gz) = 25094
+SHA256 (cabal/hashable-1.4.2.0/revision/1.cabal) = 585792335d5541dba78fa8dfcb291a89cd5812a281825ff7a44afa296ab5d58a
+SIZE (cabal/hashable-1.4.2.0/revision/1.cabal) = 4520
+SHA256 (cabal/primitive-0.8.0.0/primitive-0.8.0.0.tar.gz) = 5553c21b4a789f9b591eed69e598cc58484c274af29250e517b5a8bcc62b995f
+SIZE (cabal/primitive-0.8.0.0/primitive-0.8.0.0.tar.gz) = 57222
+SHA256 (cabal/th-compat-0.1.4/th-compat-0.1.4.tar.gz) = d8f97ac14ab47b6b8a7b0fdb4ff95426322ec56badd01652ac15da4a44d4bab8
+SIZE (cabal/th-compat-0.1.4/th-compat-0.1.4.tar.gz) = 14838
+SHA256 (cabal/th-compat-0.1.4/revision/2.cabal) = e5ae7c083ef3a22248558f8451669bb1c55ea8090f5908b86b9033743c161730
+SIZE (cabal/th-compat-0.1.4/revision/2.cabal) = 3224
+SHA256 (cabal/vector-0.13.0.0/vector-0.13.0.0.tar.gz) = c5d3167d15e12f52e00879ddf304a591672a74e369cc47bc5c7fa1d5a8d15b4f
+SIZE (cabal/vector-0.13.0.0/vector-0.13.0.0.tar.gz) = 154509
+SHA256 (cabal/vector-0.13.0.0/revision/3.cabal) = fa5cac81a17a5af388716792e8b99c24b3b66770086756d0d8b23f8272a0244c
+SIZE (cabal/vector-0.13.0.0/revision/3.cabal) = 9112
+SHA256 (cabal/vector-stream-0.1.0.0/vector-stream-0.1.0.0.tar.gz) = a888210f6467f155090653734be5cc920406a07227e0d3adb59096716fdb806c
+SIZE (cabal/vector-stream-0.1.0.0/vector-stream-0.1.0.0.tar.gz) = 12377
+SHA256 (cabal/vector-stream-0.1.0.0/revision/2.cabal) = f5d6d5291cd1b5f2f063403593f1f5c8127d692c888eedeb3e1eb40497a88dca
+SIZE (cabal/vector-stream-0.1.0.0/revision/2.cabal) = 1404
+SHA256 (cabal/antmicro-yosys-systemverilog-2023-06-05-00c9bce-2023-06-05_GH0.tar.gz) = 7dbc3b1607a39478f77fd35689483b574cf7c0111dd262bc7ed7ea936e31a75f
+SIZE (cabal/antmicro-yosys-systemverilog-2023-06-05-00c9bce-2023-06-05_GH0.tar.gz) = 158127
+SHA256 (cabal/chipsalliance-yosys-f4pga-plugins-56f957c_GH0.tar.gz) = e2bf0adae00912e07524f2ecf5f6de3d395d283890652d38568175ad56d7bada
+SIZE (cabal/chipsalliance-yosys-f4pga-plugins-56f957c_GH0.tar.gz) = 2690136
+SHA256 (cabal/zachjs-sv2v-6c4ee8f_GH0.tar.gz) = b03955f19128d05c2a2c9d162b2b946fd23a220146abbc5b7847c83c3f937e90
+SIZE (cabal/zachjs-sv2v-6c4ee8f_GH0.tar.gz) = 279380
+SHA256 (cabal/YosysHQ-yosys-c5e4eec_GH0.tar.gz) = ad4b43d55d98d2cc6f4892c1af6b0770af994a51f0cf8d450029f2a404738b8a
+SIZE (cabal/YosysHQ-yosys-c5e4eec_GH0.tar.gz) = 2542646
diff --git a/cad/yosys-systemverilog/files/install.sh b/cad/yosys-systemverilog/files/install.sh
new file mode 100755
index 000000000000..7962e5c28942
--- /dev/null
+++ b/cad/yosys-systemverilog/files/install.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+##
+## workaround for
+## * https://github.com/chipsalliance/yosys-f4pga-plugins/issues/527
+##
+##
+
+if [ "$1" != "-D" ]; then
+	exit 1
+fi
+
+#/usr/bin/install -m 0644 $2 ${DESTDIR}$3
+/usr/bin/install $2 $3
diff --git a/cad/yosys-systemverilog/files/patch-sv2v_Makefile b/cad/yosys-systemverilog/files/patch-sv2v_Makefile
new file mode 100644
index 000000000000..1b36cb36f007
--- /dev/null
+++ b/cad/yosys-systemverilog/files/patch-sv2v_Makefile
@@ -0,0 +1,11 @@
+--- sv2v/Makefile.orig	2023-05-10 12:48:15 UTC
++++ sv2v/Makefile
+@@ -4,7 +4,7 @@ all: sv2v
+ 
+ sv2v:
+ 	mkdir -p bin
+-	stack install --install-ghc --local-bin-path bin
++	stack config set system-ghc --global true && stack build --system-ghc --no-install-ghc
+ 
+ clean:
+ 	stack clean
diff --git a/cad/yosys-systemverilog/pkg-descr b/cad/yosys-systemverilog/pkg-descr
new file mode 100644
index 000000000000..c7f034ecab6b
--- /dev/null
+++ b/cad/yosys-systemverilog/pkg-descr
@@ -0,0 +1,2 @@
+yosys-systemverilog is a YoSys add-on that contains all moving parts needed to
+get SystemVerilog support enabled in Yosys.
diff --git a/cad/yosys-systemverilog/pkg-plist b/cad/yosys-systemverilog/pkg-plist
new file mode 100644
index 000000000000..7ab2e58b7515
--- /dev/null
+++ b/cad/yosys-systemverilog/pkg-plist
@@ -0,0 +1,52 @@
+bin/sv2v
+share/yosys/nexus/dsp_rules.txt
+share/yosys/plugins/design_introspection.so
+share/yosys/plugins/dsp-ff.so
+share/yosys/plugins/fasm.so
+share/yosys/plugins/fasm_extra_modules/BANK.v
+share/yosys/plugins/integrateinv.so
+share/yosys/plugins/params.so
+share/yosys/plugins/ql-iob.so
+share/yosys/plugins/ql-qlf.so
+share/yosys/plugins/sdc.so
+share/yosys/plugins/systemverilog.so
+share/yosys/plugins/uhdm.so
+share/yosys/plugins/xdc.so
+share/yosys/quicklogic/pp3/abc9_map.v
+share/yosys/quicklogic/pp3/abc9_model.v
+share/yosys/quicklogic/pp3/abc9_unmap.v
+share/yosys/quicklogic/pp3/bram_init_32.vh
+share/yosys/quicklogic/pp3/bram_init_8_16.vh
+share/yosys/quicklogic/pp3/brams.txt
+share/yosys/quicklogic/pp3/brams_map.v
+share/yosys/quicklogic/pp3/brams_sim.v
+share/yosys/quicklogic/pp3/cells_map.v
+share/yosys/quicklogic/pp3/cells_sim.v
+share/yosys/quicklogic/pp3/ffs_map.v
+share/yosys/quicklogic/pp3/latches_map.v
+share/yosys/quicklogic/pp3/lut_map.v
+share/yosys/quicklogic/pp3/lutdefs.txt
+share/yosys/quicklogic/pp3/mult_sim.v
+share/yosys/quicklogic/pp3/qlal3_sim.v
+share/yosys/quicklogic/pp3/qlal4s3b_sim.v
+share/yosys/quicklogic/qlf_k6n10/arith_map.v
+share/yosys/quicklogic/qlf_k6n10/brams.txt
+share/yosys/quicklogic/qlf_k6n10/brams_map.v
+share/yosys/quicklogic/qlf_k6n10/cells_sim.v
+share/yosys/quicklogic/qlf_k6n10/dsp_map.v
+share/yosys/quicklogic/qlf_k6n10/ffs_map.v
+share/yosys/quicklogic/qlf_k6n10/lut_map.v
+share/yosys/quicklogic/qlf_k6n10f/TDP18K_FIFO.v
+share/yosys/quicklogic/qlf_k6n10f/arith_map.v
+share/yosys/quicklogic/qlf_k6n10f/brams.txt
+share/yosys/quicklogic/qlf_k6n10f/brams_final_map.v
+share/yosys/quicklogic/qlf_k6n10f/brams_map.v
+share/yosys/quicklogic/qlf_k6n10f/brams_sim.v
+share/yosys/quicklogic/qlf_k6n10f/cells_sim.v
+share/yosys/quicklogic/qlf_k6n10f/dsp_final_map.v
+share/yosys/quicklogic/qlf_k6n10f/dsp_map.v
+share/yosys/quicklogic/qlf_k6n10f/dsp_sim.v
+share/yosys/quicklogic/qlf_k6n10f/ffs_map.v
+share/yosys/quicklogic/qlf_k6n10f/primitives_sim.v
+share/yosys/quicklogic/qlf_k6n10f/sram1024x18.v
+share/yosys/quicklogic/qlf_k6n10f/ufifo_ctl.v