Subject: [PATCH electronics-team] gnu: nextpnr: Add ecp5 and himbaechel architectures.
From: Cayetano Santos <[email-masked]>
To: [email-masked]
Cc: Cayetano Santos <[email-masked]>
Date: Mon, 12 May 2025 14:10:33 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

* gnu/packages/fpga.scm (nextpnr): Add ecp5 and himbaechel architectures.

Change-Id: Ia4b92f6cd1693b844b35949fdc23369e958e73c1

---

[arguments] <#:configure-flags>: Add Add ecp5 and himbaechel.
<#:phases> {get-prjbeyond-db}: New phase.
{unbundle-sanitizers-cmake}: Simplify lambda.
[native-inputs]: Add prjtrellis.

 gnu/packages/fpga.scm | 24 ++++++++++++++++++++++--
 1 file changed, 22 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/fpga.scm b/gnu/packages/fpga.scm
index 2019700d72..4d767340cb 100644
--- a/gnu/packages/fpga.scm
+++ b/gnu/packages/fpga.scm
@@ -54,6 +54,7 @@ (define-module (gnu packages fpga)
   #:use-module (gnu packages cmake)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cpp)
+  #:use-module (gnu packages electronics)
   #:use-module (gnu packages elf)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages gawk)
@@ -408,18 +409,36 @@ (define-public nextpnr
      (list
       #:cmake cmake                     ;CMake 3.25 or higher is required.
       #:configure-flags
-      #~(list "-DARCH=generic;ice40"    ;TODO: enable more architectures?
+      ;;TODO: enable more architectures?
+      #~(list "-DARCH=generic;ice40;ecp5;himbaechel"
               "-DBUILD_GUI=ON"
               "-DUSE_OPENMP=ON"
               "-DBUILD_TESTS=ON"
+              "-DHIMBAECHEL_UARCH=ng-ultra" ;gowin requires python-apycula.
+              "-DHIMBAECHEL_NGULTRA_DEVICES=ng-ultra"
+              "-DHIMBAECHEL_PRJBEYOND_DB=/tmp/prjbeyond-db"
               (string-append "-DCURRENT_GIT_VERSION=nextpnr-" #$version)
               (string-append "-DICESTORM_INSTALL_PREFIX="
                              #$(this-package-input "icestorm"))
+              (string-append "-DTRELLIS_INSTALL_PREFIX="
+                             #$(this-package-input "prjtrellis"))
               "-DUSE_IPO=OFF")
       #:phases
       #~(modify-phases %standard-phases
+          (add-after 'unpack 'get-prjbeyond-db
+            (lambda _
+              (copy-recursively
+               #$(origin
+                   (method git-fetch)
+                   (uri (git-reference
+                         (url "https://github.com/yosyshq-GmbH/prjbeyond-db/")
+                         (commit "06d3b424dd0e52d678087c891c022544238fb9e3")))
+                   (sha256
+                    (base32
+                     "17dd3cgms2fy6xvz7magdmvv92km4cqh2kz9dyjrvz5y8caqav4y")))
+               "/tmp/prjbeyond-db")))
           (add-after 'unpack 'unbundle-sanitizers-cmake
-            (lambda* (#:key inputs #:allow-other-keys)
+            (lambda _
               (substitute* "CMakeLists.txt"
                 ;; Use the system sanitizers-cmake module.  This is made
                 ;; necessary 'sanitizers-cmake' installing a FindPackage
@@ -436,6 +455,7 @@ (define-public nextpnr
            corrosion
            eigen
            icestorm
+           prjtrellis
            pybind11
            python
            qtbase-5

base-commit: e4e43cebbacbbb7982d08f691636f3234fd60184
--
2.49.0