gnu: facter: Update to 4.0.33.
[jackhill/guix/guix.git] / gnu / packages / fpga.scm
index 0a5568a..b2717d2 100644 (file)
@@ -1,7 +1,8 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
 ;;; Copyright © 2016, 2017 Theodoros Foradis <theodoros@foradis.org>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019 Amin Bandali <bandali@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -43,6 +44,9 @@
   #:use-module (gnu packages gperf)
   #:use-module (gnu packages gawk)
   #:use-module (gnu packages version-control)
+  #:use-module (gnu packages qt)
+  #:use-module (gnu packages boost)
+  #:use-module (gnu packages algebra)
   #:use-module (gnu packages libftdi))
 
 (define-public abc
        (revision "1"))
   (package
     (name "abc")
-    (version (string-append "0.0-" revision "-" (string-take commit 9)))
+    (version (git-version "0.0" revision commit))
     (source (origin
               (method url-fetch)
               (uri
                (string-append "https://bitbucket.org/alanmi/abc/get/" commit ".zip"))
               (file-name (string-append name "-" version "-checkout.zip"))
               (sha256
-                (base32
-                   "1syygi1x40rdryih3galr4q8yg1w5bvdzl75hd27v1xq0l5bz3d0"))))
+               (base32
+                "1syygi1x40rdryih3galr4q8yg1w5bvdzl75hd27v1xq0l5bz3d0"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("unzip" ,unzip)))
@@ -74,7 +78,7 @@
              (let* ((out (assoc-ref outputs "out"))
                     (out-bin (string-append out "/bin")))
                (install-file "abc" out-bin)))))))
-    (home-page "http://people.eecs.berkeley.edu/~alanmi/abc/")
+    (home-page "https://people.eecs.berkeley.edu/~alanmi/abc/")
     (synopsis "Sequential logic synthesis and formal verification")
     (description "ABC is a program for sequential logic synthesis and
 formal verification.")
@@ -84,20 +88,20 @@ formal verification.")
 (define-public iverilog
   (package
     (name "iverilog")
-    (version "10.2")
+    (version "10.3")
     (source (origin
               (method url-fetch)
               (uri
                (string-append "ftp://ftp.icarus.com/pub/eda/verilog/v10/"
                               "verilog-" version ".tar.gz"))
               (sha256
-                (base32
-                   "0075x5nsxwkrgn7b3635il9kw7mslckaji518pdmwdrdn7fxppln"))))
+               (base32
+                "1vv88ckvfwq7mrysyjnilsrcrzm9d173kp9w5ivwh6rdw7klbgc6"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("flex" ,flex)
        ("bison" ,bison)
-       ("ghostscript" ,ghostscript))) ; ps2pdf
+       ("ghostscript" ,ghostscript)))   ; ps2pdf
     (home-page "http://iverilog.icarus.com/")
     (synopsis "FPGA Verilog simulation and synthesis tool")
     (description "Icarus Verilog is a Verilog simulation and synthesis tool.
@@ -119,16 +123,17 @@ For synthesis, the compiler generates netlists in the desired format.")
 (define-public yosys
   (package
     (name "yosys")
-    (version "0.7")
+    (version "0.9")
     (source (origin
-              (method url-fetch)
-              (uri
-               (string-append "https://github.com/cliffordwolf/yosys/archive/"
-                              name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/cliffordwolf/yosys")
+                    (commit (string-append "yosys-" version))
+                    (recursive? #t))) ; for the ‘iverilog’ submodule
               (sha256
                 (base32
-                   "0vkfdn4phvkjqlnpqlr6q5f97bgjc3312vj5jf0vf85zqv88dy9x"))
-              (file-name (string-append name "-" version "-checkout.tar.gz"))
+                   "0lb9r055h8y1vj2z8gm4ip0v06j5mk7f9zx9gi67kkqb7g4rhjli"))
+              (file-name (git-file-name name version))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -152,7 +157,7 @@ For synthesis, the compiler generates netlists in the desired format.")
              #t))
          (replace 'configure
            (lambda* (#:key inputs (make-flags '()) #:allow-other-keys)
-             (zero? (apply system* "make" "config-gcc" make-flags))))
+             (apply invoke "make" "config-gcc" make-flags)))
          (add-after 'configure 'prepare-abc
            (lambda* (#:key inputs #:allow-other-keys)
              (let* ((sourceabc (assoc-ref inputs "abc"))
@@ -163,7 +168,7 @@ For synthesis, the compiler generates netlists in the desired format.")
                      (lambda (port)
                        (format port ".PHONY: all\nall:\n\tcp -f abc abc-default\n")))
                    (copy-file source "abc/abc")
-                   (zero? (system* "chmod" "+w" "abc/abc")))))
+                   (invoke "chmod" "+w" "abc/abc"))))
           (add-before 'check 'fix-iverilog-references
              (lambda* (#:key inputs native-inputs #:allow-other-keys)
                (let* ((xinputs (or native-inputs inputs))
@@ -210,20 +215,20 @@ For synthesis, the compiler generates netlists in the desired format.")
     (license license:isc)))
 
 (define-public icestorm
-  (let ((commit "12b2295c9087d94b75e374bb205ae4d76cf17e2f")
-        (revision "1"))
+  (let ((commit "0ec00d892a91cc68e45479b46161f649caea2933")
+        (revision "3"))
    (package
     (name "icestorm")
-    (version (string-append "0.0-" revision "-" (string-take commit 9)))
+    (version (git-version "0.0" revision commit))
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/cliffordwolf/icestorm.git")
+                     (url "https://github.com/cliffordwolf/icestorm")
                      (commit commit)))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                 (base32
-                   "1mmzlqvap6w8n4qzv3idvy51arkgn03692ssplwncy3akjrbsd2b"))))
+                   "1qlh99fafb7xga702k64fmc9m700nsddrfgcq4x8qn8fplsb64f1"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; no unit tests that don't need an FPGA exist.
@@ -254,34 +259,68 @@ For synthesis, the compiler generates netlists in the desired format.")
 Includes the actual FTDI connector.")
     (license license:isc))))
 
+(define-public nextpnr-ice40
+  (let [(commit "c192ba261d77ad7f0a744fb90b01e4a5b63938c4")
+        (revision "0")]
+  (package
+    (name "nextpnr-ice40")
+    (version (git-version "0.0.0" revision commit))
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "git://github.com/YosysHQ/nextpnr")
+               (commit commit)))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32
+            "0g2ar1z89b31qw5vgqj2rrcv9rzncs94184dgcsrz19p866654mf"))))
+    (inputs
+      `(("qtbase" ,qtbase)
+        ("boost" ,boost-with-python3)
+        ("yosys" ,yosys)
+        ("eigen" ,eigen)
+        ("python" ,python)
+        ("icestorm" ,icestorm)))
+    (build-system cmake-build-system)
+    (arguments
+      `(#:configure-flags `("-DARCH=ice40"
+                            ,(string-append "-DICEBOX_ROOT="
+                                            (assoc-ref %build-inputs "icestorm")
+                                            "/share/icebox"))
+        #:tests? #f))
+    (synopsis "Place-and-Route tool for FPGAs")
+    (description "Nextpnr aims to be a vendor neutral, timing driven,
+FOSS FPGA place and route tool.")
+    (home-page "https://github.com/YosysHQ/nextpnr")
+    (license license:expat))))
+
 (define-public arachne-pnr
-  (let ((commit "52e69ed207342710080d85c7c639480e74a021d7")
-        (revision "1"))
+  (let ((commit "840bdfdeb38809f9f6af4d89dd7b22959b176fdd")
+        (revision "2"))
    (package
     (name "arachne-pnr")
     (version (string-append "0.0-" revision "-" (string-take commit 9)))
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/cseed/arachne-pnr.git")
+                     (url "https://github.com/YosysHQ/arachne-pnr")
                      (commit commit)))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                 (base32
-                   "15bdw5yxj76lxrwksp6liwmr6l1x77isf4bs50ys9rsnmiwh8c3w"))))
+                   "1dqvjvgvsridybishv4pnigw9gypxh7r7nrqp9z9qq92v7c5rxzl"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
+       #:make-flags
+       (list (string-append "DESTDIR=" (assoc-ref %outputs "out"))
+             (string-append "ICEBOX=" (string-append
+                                       (assoc-ref %build-inputs "icestorm")
+                                       "/share/icebox")))
        #:phases (modify-phases %standard-phases
        (replace 'configure
          (lambda* (#:key outputs inputs #:allow-other-keys)
-           (substitute* '("Makefile")
-             (("DESTDIR = .*") (string-append "DESTDIR = "
-                                             (assoc-ref outputs "out")
-                                             "\n"))
-             (("ICEBOX = .*") (string-append "ICEBOX = "
-                                             (assoc-ref inputs "icestorm")
-                                             "/share/icebox\n")))
            (substitute* '("./tests/fsm/generate.py"
                           "./tests/combinatorial/generate.py")
              (("#!/usr/bin/python") "#!/usr/bin/python2"))
@@ -293,7 +332,7 @@ Includes the actual FTDI connector.")
        ("yosys" ,yosys) ; for tests
        ("perl" ,perl) ; for shasum
        ("python-2" ,python-2))) ; for tests
-    (home-page "https://github.com/cseed/arachne-pnr")
+    (home-page "https://github.com/YosysHQ/arachne-pnr")
     (synopsis "Place-and-Route tool for FPGAs")
     (description "Arachne-PNR is a Place-and-Route Tool For FPGAs.")
     (license license:gpl2))))
@@ -301,14 +340,17 @@ Includes the actual FTDI connector.")
 (define-public gtkwave
   (package
     (name "gtkwave")
-    (version "3.3.76")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "http://gtkwave.sourceforge.net/"
-                                  name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1vlvavszb1jwwiixiagld88agjrjg0ix8qa4xnxj4ziw0q87jbmn"))))
+    (version "3.3.104")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (list (string-append "mirror://sourceforge/gtkwave/"
+                                 "gtkwave-" version "/"
+                                 "gtkwave-" version ".tar.gz")
+                  (string-append "http://gtkwave.sourceforge.net/"
+                                 "gtkwave-" version ".tar.gz")))
+       (sha256
+        (base32 "0kw9a33gx60kn069yhx5pyk39x1z3pwaj8l1qqwq943v62lx23fj"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("gperf" ,gperf)
@@ -328,7 +370,7 @@ Includes the actual FTDI connector.")
 
     (synopsis "Waveform viewer for FPGA simulator trace files")
     (description "This package is a waveform viewer for FPGA
-simulator trace files (FST).")
+simulator trace files (@dfn{FST}).")
     (home-page "http://gtkwave.sourceforge.net/")
-    ;; Exception against free government use in tcl_np.c and tcl_np.h
+    ;; Exception against free government use in tcl_np.c and tcl_np.h.
     (license (list license:gpl2+ license:expat license:tcl/tk))))