diff options
Diffstat (limited to 'gnu/packages/fpga.scm')
-rw-r--r-- | gnu/packages/fpga.scm | 122 |
1 files changed, 119 insertions, 3 deletions
diff --git a/gnu/packages/fpga.scm b/gnu/packages/fpga.scm index 50a19a00d6..bee87d9311 100644 --- a/gnu/packages/fpga.scm +++ b/gnu/packages/fpga.scm @@ -1,8 +1,10 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org> ;;; Copyright © 2016, 2017 Theodoros Foradis <theodoros@foradis.org> -;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Amin Bandali <bandali@gnu.org> +;;; Copyright © 2020 Vinicius Monego <monego@posteo.net> +;;; Copyright © 2021 Andrew Miloradovsky <andrew@interpretmath.pw> ;;; ;;; This file is part of GNU Guix. ;;; @@ -35,6 +37,7 @@ #:use-module (gnu packages tcl) #:use-module (gnu packages readline) #:use-module (gnu packages python) + #:use-module (gnu packages python-xyz) #:use-module (gnu packages bison) #:use-module (gnu packages check) #:use-module (gnu packages flex) @@ -346,7 +349,7 @@ FOSS FPGA place and route tool.") (define-public gtkwave (package (name "gtkwave") - (version "3.3.107") + (version "3.3.108") (source (origin (method url-fetch) @@ -356,7 +359,7 @@ FOSS FPGA place and route tool.") (string-append "http://gtkwave.sourceforge.net/" "gtkwave-" version ".tar.gz"))) (sha256 - (base32 "1ibnhn7w1awalsbndbb5nilbmih3i3dwfry95mq5sn221l5n7zj8")))) + (base32 "0fzbap72zm4ka6n85j0873fpaarrx199ay0kjw1avrs20hs4gr7c")))) (build-system gnu-build-system) (native-inputs `(("gperf" ,gperf) @@ -381,6 +384,33 @@ simulator trace files (@dfn{FST}).") ;; Exception against free government use in tcl_np.c and tcl_np.h. (license (list license:gpl2+ license:expat license:tcl/tk)))) +(define-public python-migen + (package + (name "python-migen") + (version "0.9.2") + (source + (origin + ;; Tests fail in the PyPI tarball due to missing files. + (method git-fetch) + (uri (git-reference + (url "https://github.com/m-labs/migen") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1kq11if64zj84gv4w1q7l16fp17xjxl2wv5hc9dibr1z3m1gy67l")))) + (build-system python-build-system) + (propagated-inputs + `(("python-colorama" ,python-colorama))) + (home-page "https://m-labs.hk/gateware/migen/") + (synopsis "Python toolbox for building complex digital hardware") + (description + "Migen FHDL is a Python library that replaces the event-driven +paradigm of Verilog and VHDL with the notions of combinatorial and +synchronous statements, has arithmetic rules that make integers always +behave like mathematical integers, and allows the design's logic to be +constructed by a Python program.") + (license license:bsd-2))) + (define-public python-myhdl (package (name "python-myhdl") @@ -438,3 +468,89 @@ a hardware description and verification language. ") (description "This package provides a VHDL compiler and simulator.") (home-page "https://github.com/nickg/nvc") (license license:gpl3+))) + +(define-public systemc + (package + (name "systemc") + (version "2.3.3") + (source + (origin + (method url-fetch) + (uri (string-append + "https://accellera.org/images/downloads/standards/" + "systemc/systemc-" version ".tar.gz")) + (sha256 + (base32 "0gvv3xmhiwx1izmzy06yslzqzh6ygrgmw53xqfmyvbz5a6ivk0ap")))) + (native-inputs `(("perl" ,perl))) + (build-system gnu-build-system) + (arguments '(#:configure-flags '("--enable-debug"))) + (home-page "https://accellera.org/community/systemc") + (synopsis "Library for event-driven simulation") + (description + "SystemC is a C++ library for modeling concurrent systems, and the +reference implementation of IEEE 1666-2011. It provides a notion of timing as +well as an event-driven simulations environment. Due to its concurrent and +sequential nature, SystemC allows the description and integration of complex +hardware and software components. To some extent, SystemC can be seen as +a Hardware Description Language. However, unlike VHDL or Verilog, SystemC +provides sophisticated mechanisms that offer high abstraction levels on +components interfaces. This, in turn, facilitates the integration of systems +using different abstraction levels.") + ;; homepages.cae.wisc.edu/~ece734/SystemC/Esperan_SystemC_tutorial.pdf + (license license:asl2.0))) + +(define-public verilator + (package + (name "verilator") + (version "4.108") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/verilator/verilator") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0kcs0p8i2hiw348xqqh49pmllqspbzh2ljwmia03b42md5h4x5vf")))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("bison" ,bison) + ("flex" ,flex) + ("gettext" ,gettext-minimal) + ("python" ,python))) + (inputs + `(("perl" ,perl) + ("systemc" ,systemc))) + (build-system gnu-build-system) + (arguments + '(#:configure-flags + (list (string-append "LDFLAGS=-L" + (assoc-ref %build-inputs "systemc") + "/lib-linux64")) + #:make-flags + (list (string-append "LDFLAGS=-L" + (assoc-ref %build-inputs "systemc") + "/lib-linux64")) + #:phases + (modify-phases %standard-phases + (replace 'bootstrap + (lambda _ (invoke "autoconf")))) + #:test-target "test")) + ;; #error "Something failed during ./configure as config_build.h is incomplete. + ;; Perhaps you used autoreconf, don't." -- so we won't. ^^ + (home-page "https://www.veripool.org/projects/verilator/") + (synopsis "Fast Verilog/SystemVerilog simulator") + (description + "Verilator is invoked with parameters similar to GCC or Synopsys’s VCS. +It ``Verilates'' the specified Verilog or SystemVerilog code by reading it, +performing lint checks, and optionally inserting assertion checks and +coverage-analysis points. It outputs single- or multi-threaded @file{.cpp} +and @file{.h} files, the ``Verilated'' code. + +The user writes a little C++/SystemC wrapper file, which instantiates the +Verilated model of the user’s top level module. These C++/SystemC files are +then compiled by a C++ compiler (GCC/Clang/etc.). The resulting executable +performs the design simulation. Verilator also supports linking its generated +libraries, optionally encrypted, into other simulators.") + (license license:lgpl3))) |