Subject: [bug#78774] [PATCH electronics-team v4] gnu: nextpnr: Add ecp5 and himbaechel architectures.

From: Cayetano Santos <[email-masked]>
Date: Thu, 12 Jun 2025 12:23:40 +0200

From: Cayetano Santos via Guix-patches via <[email-masked]>

Change-Id: Ia4b92f6cd1693b844b35949fdc23369e958e73c1

---

As prjbeyond-db now includes a free license [0], we way produce an executable for himbaechel architecture, in addition to ecp5.

[0] https://github.com/YosysHQ-GmbH/prjbeyond-db/issues/2#issuecomment-2963375264

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

diff --git a/gnu/packages/fpga.scm b/gnu/packages/fpga.scm
index c46631c6cd..3240cca92f 100644
--- a/gnu/packages/fpga.scm
+++ b/gnu/packages/fpga.scm
@@ -55,6 +55,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 freedesktop)
@@ -437,18 +438,39 @@ (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"
+              "-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
+          ;; Required by himbaechel architecture, ng-ultra support.
+          (add-after 'unpack 'get-prjbeyond-db
+            (lambda _
+              (copy-recursively
+               #$(origin
+                   (method git-fetch)
+                   (uri (git-reference
+                         (url "https://github.com/yosyshq-GmbH/prjbeyond-db/")
+                         ;; We take latest commit, as indicated in nextpnr’s
+                         ;; README.md file
+                         (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
@@ -465,6 +487,7 @@ (define-public nextpnr
            corrosion
            eigen
            icestorm
+           prjtrellis
            pybind11
            python
            qtbase-5

base-commit: 8730c8f3a86ef41d5b88df573fce9b6d73c23b0c
--
2.49.0