fpga.scm 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555
  1. ;;; GNU Guix --- Functional package management for GNU
  2. ;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
  3. ;;; Copyright © 2016, 2017 Theodoros Foradis <theodoros@foradis.org>
  4. ;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
  5. ;;; Copyright © 2019 Amin Bandali <bandali@gnu.org>
  6. ;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
  7. ;;; Copyright © 2021 Andrew Miloradovsky <andrew@interpretmath.pw>
  8. ;;; Copyright © 2022 Christian Gelinek <cgelinek@radlogic.com.au>
  9. ;;;
  10. ;;; This file is part of GNU Guix.
  11. ;;;
  12. ;;; GNU Guix is free software; you can redistribute it and/or modify it
  13. ;;; under the terms of the GNU General Public License as published by
  14. ;;; the Free Software Foundation; either version 3 of the License, or (at
  15. ;;; your option) any later version.
  16. ;;;
  17. ;;; GNU Guix is distributed in the hope that it will be useful, but
  18. ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
  19. ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  20. ;;; GNU General Public License for more details.
  21. ;;;
  22. ;;; You should have received a copy of the GNU General Public License
  23. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
  24. (define-module (gnu packages fpga)
  25. #:use-module ((guix licenses) #:prefix license:)
  26. #:use-module (guix packages)
  27. #:use-module (guix download)
  28. #:use-module (guix git-download)
  29. #:use-module (guix utils)
  30. #:use-module (guix build-system gnu)
  31. #:use-module (guix build-system cmake)
  32. #:use-module (guix build-system python)
  33. #:use-module (gnu packages)
  34. #:use-module (gnu packages autotools)
  35. #:use-module (gnu packages base)
  36. #:use-module (gnu packages compression)
  37. #:use-module (gnu packages pkg-config)
  38. #:use-module (gnu packages tcl)
  39. #:use-module (gnu packages readline)
  40. #:use-module (gnu packages python)
  41. #:use-module (gnu packages python-xyz)
  42. #:use-module (gnu packages bison)
  43. #:use-module (gnu packages check)
  44. #:use-module (gnu packages flex)
  45. #:use-module (gnu packages gettext)
  46. #:use-module (gnu packages gtk)
  47. #:use-module (gnu packages graphviz)
  48. #:use-module (gnu packages libffi)
  49. #:use-module (gnu packages linux)
  50. #:use-module (gnu packages llvm)
  51. #:use-module (gnu packages maths)
  52. #:use-module (gnu packages perl)
  53. #:use-module (gnu packages ghostscript)
  54. #:use-module (gnu packages gperf)
  55. #:use-module (gnu packages gawk)
  56. #:use-module (gnu packages version-control)
  57. #:use-module (gnu packages qt)
  58. #:use-module (gnu packages boost)
  59. #:use-module (gnu packages algebra)
  60. #:use-module (gnu packages libftdi))
  61. (define-public abc
  62. (let ((commit "5ae4b975c49c")
  63. (revision "1"))
  64. (package
  65. (name "abc")
  66. (version (git-version "0.0" revision commit))
  67. (source (origin
  68. (method url-fetch)
  69. (uri
  70. (string-append "https://bitbucket.org/alanmi/abc/get/" commit ".zip"))
  71. (file-name (string-append name "-" version "-checkout.zip"))
  72. (sha256
  73. (base32
  74. "1syygi1x40rdryih3galr4q8yg1w5bvdzl75hd27v1xq0l5bz3d0"))))
  75. (build-system gnu-build-system)
  76. (native-inputs
  77. (list unzip))
  78. (inputs
  79. (list readline))
  80. (arguments
  81. `(#:tests? #f ; no check target
  82. #:phases
  83. (modify-phases %standard-phases
  84. (delete 'configure)
  85. (replace 'install
  86. (lambda* (#:key outputs #:allow-other-keys)
  87. (let* ((out (assoc-ref outputs "out"))
  88. (out-bin (string-append out "/bin")))
  89. (install-file "abc" out-bin)))))))
  90. (home-page "https://people.eecs.berkeley.edu/~alanmi/abc/")
  91. (synopsis "Sequential logic synthesis and formal verification")
  92. (description "ABC is a program for sequential logic synthesis and
  93. formal verification.")
  94. (license
  95. (license:non-copyleft "https://fedoraproject.org/wiki/Licensing:MIT#Modern_Variants")))))
  96. (define-public iverilog
  97. (package
  98. (name "iverilog")
  99. (version "11.0")
  100. (source (origin
  101. (method url-fetch)
  102. (uri
  103. (string-append "ftp://ftp.icarus.com/pub/eda/verilog/v11/"
  104. "verilog-" version ".tar.gz"))
  105. (sha256
  106. (base32
  107. "1mamlrkpb2gb00g7xdddaknrvwi4jr4ng6cfjhwngzk3ddhqaiym"))))
  108. (build-system gnu-build-system)
  109. (arguments
  110. `(#:make-flags (list (string-append "CC=" ,(cc-for-target)))))
  111. (native-inputs
  112. (list flex bison ghostscript zlib)) ; ps2pdf
  113. (home-page "http://iverilog.icarus.com/")
  114. (synopsis "FPGA Verilog simulation and synthesis tool")
  115. (description "Icarus Verilog is a Verilog simulation and synthesis tool.
  116. It operates as a compiler, compiling source code written in Verilog
  117. (IEEE-1364) into some target format.
  118. For batch simulation, the compiler can generate an intermediate form
  119. called vvp assembly.
  120. This intermediate form is executed by @command{vvp}.
  121. For synthesis, the compiler generates netlists in the desired format.")
  122. ;; GPL2 only because of:
  123. ;; - ./driver/iverilog.man.in
  124. ;; - ./iverilog-vpi.man.in
  125. ;; - ./tgt-fpga/iverilog-fpga.man
  126. ;; - ./vvp/vvp.man.in
  127. ;; Otherwise would be GPL2+.
  128. ;; You have to accept both GPL2 and LGPL2.1+.
  129. (license (list license:gpl2 license:lgpl2.1+))))
  130. (define-public yosys
  131. (package
  132. (name "yosys")
  133. (version "0.9")
  134. (source (origin
  135. (method git-fetch)
  136. (uri (git-reference
  137. (url "https://github.com/cliffordwolf/yosys")
  138. (commit (string-append "yosys-" version))
  139. (recursive? #t))) ; for the ‘iverilog’ submodule
  140. (sha256
  141. (base32
  142. "0lb9r055h8y1vj2z8gm4ip0v06j5mk7f9zx9gi67kkqb7g4rhjli"))
  143. (file-name (git-file-name name version))
  144. (modules '((guix build utils)))
  145. (snippet
  146. '(begin
  147. (substitute* "Makefile"
  148. (("ABCREV = .*") "ABCREV = default\n"))
  149. #t))))
  150. (build-system gnu-build-system)
  151. (arguments
  152. `(#:test-target "test"
  153. #:make-flags (list "CC=gcc"
  154. "CXX=g++"
  155. (string-append "PREFIX=" %output))
  156. #:phases
  157. (modify-phases %standard-phases
  158. (add-before 'configure 'fix-paths
  159. (lambda _
  160. (substitute* "./passes/cmds/show.cc"
  161. (("exec xdot") (string-append "exec " (which "xdot")))
  162. (("dot -") (string-append (which "dot") " -"))
  163. (("fuser") (which "fuser")))
  164. #t))
  165. (replace 'configure
  166. (lambda* (#:key inputs (make-flags '()) #:allow-other-keys)
  167. (apply invoke "make" "config-gcc" make-flags)))
  168. (add-after 'configure 'prepare-abc
  169. (lambda* (#:key inputs #:allow-other-keys)
  170. (let* ((sourceabc (assoc-ref inputs "abc"))
  171. (sourcebin (string-append sourceabc "/bin"))
  172. (source (string-append sourcebin "/abc")))
  173. (mkdir-p "abc")
  174. (call-with-output-file "abc/Makefile"
  175. (lambda (port)
  176. (format port ".PHONY: all\nall:\n\tcp -f abc abc-default\n")))
  177. (copy-file source "abc/abc")
  178. (invoke "chmod" "+w" "abc/abc"))))
  179. (add-before 'check 'fix-iverilog-references
  180. (lambda* (#:key inputs native-inputs #:allow-other-keys)
  181. (let* ((xinputs (or native-inputs inputs))
  182. (xdirname (assoc-ref xinputs "iverilog"))
  183. (iverilog (string-append xdirname "/bin/iverilog")))
  184. (substitute* '("./manual/CHAPTER_StateOfTheArt/synth.sh"
  185. "./manual/CHAPTER_StateOfTheArt/validate_tb.sh"
  186. "./techlibs/ice40/tests/test_bram.sh"
  187. "./techlibs/ice40/tests/test_ffs.sh"
  188. "./techlibs/xilinx/tests/bram1.sh"
  189. "./techlibs/xilinx/tests/bram2.sh"
  190. "./tests/bram/run-single.sh"
  191. "./tests/realmath/run-test.sh"
  192. "./tests/simple/run-test.sh"
  193. "./tests/techmap/mem_simple_4x1_runtest.sh"
  194. "./tests/tools/autotest.sh"
  195. "./tests/vloghtb/common.sh")
  196. (("if ! which iverilog") "if ! true")
  197. (("iverilog ") (string-append iverilog " "))
  198. (("iverilog_bin=\".*\"") (string-append "iverilog_bin=\""
  199. iverilog "\"")))
  200. #t))))))
  201. (native-inputs
  202. (list pkg-config
  203. python
  204. bison
  205. flex
  206. gawk ; for the tests and "make" progress pretty-printing
  207. tcl ; tclsh for the tests
  208. iverilog)) ; for the tests
  209. (inputs
  210. (list tcl
  211. readline
  212. libffi
  213. graphviz
  214. psmisc
  215. xdot
  216. abc))
  217. (propagated-inputs
  218. (list z3)) ; should be in path for yosys-smtbmc
  219. (home-page "http://www.clifford.at/yosys/")
  220. (synopsis "FPGA Verilog RTL synthesizer")
  221. (description "Yosys synthesizes Verilog-2005.")
  222. (license license:isc)))
  223. (define-public icestorm
  224. (let ((commit "0ec00d892a91cc68e45479b46161f649caea2933")
  225. (revision "3"))
  226. (package
  227. (name "icestorm")
  228. (version (git-version "0.0" revision commit))
  229. (source (origin
  230. (method git-fetch)
  231. (uri (git-reference
  232. (url "https://github.com/cliffordwolf/icestorm")
  233. (commit commit)))
  234. (file-name (git-file-name name version))
  235. (sha256
  236. (base32
  237. "1qlh99fafb7xga702k64fmc9m700nsddrfgcq4x8qn8fplsb64f1"))))
  238. (build-system gnu-build-system)
  239. (arguments
  240. `(#:tests? #f ; no unit tests that don't need an FPGA exist.
  241. #:make-flags (list "CC=gcc" "CXX=g++"
  242. (string-append "PREFIX=" (assoc-ref %outputs "out")))
  243. #:phases
  244. (modify-phases %standard-phases
  245. (add-after 'unpack 'remove-usr-local
  246. (lambda _
  247. (substitute* "iceprog/Makefile"
  248. (("-I/usr/local/include") "")
  249. (("-L/usr/local/lib") ""))
  250. #t))
  251. (add-after 'remove-usr-local 'fix-usr-local
  252. (lambda* (#:key outputs #:allow-other-keys)
  253. (substitute* "icebox/icebox_vlog.py"
  254. (("/usr/local/share") (string-append (assoc-ref outputs "out") "/share")))
  255. #t))
  256. (delete 'configure))))
  257. (inputs
  258. (list libftdi))
  259. (native-inputs
  260. `(("python-3" ,python)
  261. ("pkg-config" ,pkg-config)))
  262. (home-page "http://www.clifford.at/icestorm/")
  263. (synopsis "Project IceStorm - Lattice iCE40 FPGAs bitstream tools")
  264. (description "Project IceStorm - Lattice iCE40 FPGAs Bitstream Tools.
  265. Includes the actual FTDI connector.")
  266. (license license:isc))))
  267. (define-public nextpnr-ice40
  268. (let [(commit "fbe486df459909065d6852a7495a212dfd2accef")
  269. (revision "1")]
  270. (package
  271. (name "nextpnr-ice40")
  272. (version (git-version "0.0.0" revision commit))
  273. (source
  274. (origin
  275. (method git-fetch)
  276. (uri (git-reference
  277. (url "git://github.com/YosysHQ/nextpnr")
  278. (commit commit)))
  279. (file-name (git-file-name name version))
  280. (sha256
  281. (base32
  282. "1fmxsywgs45g88ra7ips5s2niiiwrkyxdcy742ws18dfk2y4vi9c"))))
  283. (inputs
  284. (list boost
  285. eigen
  286. icestorm
  287. python
  288. qtbase-5
  289. yosys))
  290. (build-system cmake-build-system)
  291. (arguments
  292. `(#:configure-flags `("-DARCH=ice40"
  293. ,(string-append "-DICEBOX_ROOT="
  294. (assoc-ref %build-inputs "icestorm")
  295. "/share/icebox"))
  296. #:tests? #f))
  297. (synopsis "Place-and-Route tool for FPGAs")
  298. (description "Nextpnr aims to be a vendor neutral, timing driven,
  299. FOSS FPGA place and route tool.")
  300. (home-page "https://github.com/YosysHQ/nextpnr")
  301. (license license:expat))))
  302. (define-public arachne-pnr
  303. (let ((commit "840bdfdeb38809f9f6af4d89dd7b22959b176fdd")
  304. (revision "2"))
  305. (package
  306. (name "arachne-pnr")
  307. (version (string-append "0.0-" revision "-" (string-take commit 9)))
  308. (source (origin
  309. (method git-fetch)
  310. (uri (git-reference
  311. (url "https://github.com/YosysHQ/arachne-pnr")
  312. (commit commit)))
  313. (file-name (git-file-name name version))
  314. (sha256
  315. (base32
  316. "1dqvjvgvsridybishv4pnigw9gypxh7r7nrqp9z9qq92v7c5rxzl"))))
  317. (build-system gnu-build-system)
  318. (arguments
  319. `(#:test-target "test"
  320. #:make-flags
  321. (list (string-append "DESTDIR=" (assoc-ref %outputs "out"))
  322. (string-append "ICEBOX=" (string-append
  323. (assoc-ref %build-inputs "icestorm")
  324. "/share/icebox")))
  325. #:phases (modify-phases %standard-phases
  326. (replace 'configure
  327. (lambda* (#:key outputs inputs #:allow-other-keys)
  328. (substitute* '("./tests/fsm/generate.py"
  329. "./tests/combinatorial/generate.py")
  330. (("#!/usr/bin/python") "#!/usr/bin/python2"))
  331. #t)))))
  332. (inputs
  333. (list icestorm))
  334. (native-inputs
  335. `(("git" ,git) ; for determining its own version string
  336. ("yosys" ,yosys) ; for tests
  337. ("perl" ,perl) ; for shasum
  338. ("python-2" ,python-2))) ; for tests
  339. (home-page "https://github.com/YosysHQ/arachne-pnr")
  340. (synopsis "Place-and-Route tool for FPGAs")
  341. (description "Arachne-PNR is a Place-and-Route Tool For FPGAs.")
  342. (license license:gpl2))))
  343. (define-public gtkwave
  344. (package
  345. (name "gtkwave")
  346. (version "3.3.111")
  347. (source
  348. (origin
  349. (method url-fetch)
  350. (uri (list (string-append "mirror://sourceforge/gtkwave/"
  351. "gtkwave-" version "/"
  352. "gtkwave-" version ".tar.gz")
  353. (string-append "http://gtkwave.sourceforge.net/"
  354. "gtkwave-" version ".tar.gz")))
  355. (sha256
  356. (base32 "15n2gv2hd7h23cci95ij7yr71fkxppb209sfdsmmngh3fik09rpn"))))
  357. (build-system gnu-build-system)
  358. (native-inputs
  359. (list gperf pkg-config))
  360. (inputs
  361. `(("tcl" ,tcl)
  362. ("tk" ,tk)
  363. ("gtk+-2" ,gtk+-2)))
  364. (arguments
  365. `(#:configure-flags
  366. (list (string-append "--with-tcl="
  367. (assoc-ref %build-inputs "tcl")
  368. "/lib")
  369. (string-append "--with-tk="
  370. (assoc-ref %build-inputs "tk")
  371. "/lib"))))
  372. (synopsis "Waveform viewer for FPGA simulator trace files")
  373. (description "This package is a waveform viewer for FPGA
  374. simulator trace files (@dfn{FST}).")
  375. (home-page "http://gtkwave.sourceforge.net/")
  376. ;; Exception against free government use in tcl_np.c and tcl_np.h.
  377. (license (list license:gpl2+ license:expat license:tcl/tk))))
  378. (define-public python-migen
  379. (package
  380. (name "python-migen")
  381. (version "0.9.2")
  382. (source
  383. (origin
  384. ;; Tests fail in the PyPI tarball due to missing files.
  385. (method git-fetch)
  386. (uri (git-reference
  387. (url "https://github.com/m-labs/migen")
  388. (commit version)))
  389. (file-name (git-file-name name version))
  390. (sha256
  391. (base32 "1kq11if64zj84gv4w1q7l16fp17xjxl2wv5hc9dibr1z3m1gy67l"))))
  392. (build-system python-build-system)
  393. (propagated-inputs
  394. (list python-colorama))
  395. (home-page "https://m-labs.hk/gateware/migen/")
  396. (synopsis "Python toolbox for building complex digital hardware")
  397. (description
  398. "Migen FHDL is a Python library that replaces the event-driven
  399. paradigm of Verilog and VHDL with the notions of combinatorial and
  400. synchronous statements, has arithmetic rules that make integers always
  401. behave like mathematical integers, and allows the design's logic to be
  402. constructed by a Python program.")
  403. (license license:bsd-2)))
  404. (define-public python-myhdl
  405. (package
  406. (name "python-myhdl")
  407. (version "0.11")
  408. (source
  409. (origin
  410. (method url-fetch)
  411. (uri (pypi-uri "myhdl" version))
  412. (sha256
  413. (base32
  414. "04fi59cyn5dsci0ai7djg74ybkqfcjzhj1jfmac2xanbcrw9j3yk"))))
  415. (build-system python-build-system)
  416. (home-page "http://www.myhdl.org/")
  417. (synopsis "Python as a Hardware Description Language")
  418. (description "This package provides a library to turn Python into
  419. a hardware description and verification language.")
  420. (license license:lgpl2.1+)))
  421. (define-public nvc
  422. (package
  423. (name "nvc")
  424. (version "1.5.3")
  425. (source (origin
  426. (method git-fetch)
  427. (uri (git-reference
  428. (url "https://github.com/nickg/nvc.git")
  429. (commit (string-append "r" version))))
  430. (file-name (string-append name "-" version "-checkout"))
  431. (sha256
  432. (base32
  433. "1gjpwblp8isplyad3b6fl7cb5qv1rn3lf9qgf4l139y97cp2mm4s"))))
  434. (build-system gnu-build-system)
  435. (arguments
  436. `(#:configure-flags
  437. '("--enable-vhpi")
  438. #:phases
  439. (modify-phases %standard-phases
  440. (add-after 'unpack 'clean-up
  441. (lambda _
  442. (delete-file "autogen.sh"))))))
  443. (native-inputs
  444. (list automake
  445. autoconf
  446. flex
  447. gnu-gettext
  448. libtool
  449. pkg-config
  450. which
  451. check)) ; for the tests
  452. (inputs
  453. (list llvm-9))
  454. (synopsis "VHDL compiler and simulator")
  455. (description "This package provides a VHDL compiler and simulator.")
  456. (home-page "https://github.com/nickg/nvc")
  457. (license license:gpl3+)))
  458. (define-public systemc
  459. (package
  460. (name "systemc")
  461. (version "2.3.3")
  462. (source
  463. (origin
  464. (method url-fetch)
  465. (uri (string-append
  466. "https://accellera.org/images/downloads/standards/"
  467. "systemc/systemc-" version ".tar.gz"))
  468. (sha256
  469. (base32 "0gvv3xmhiwx1izmzy06yslzqzh6ygrgmw53xqfmyvbz5a6ivk0ap"))))
  470. (native-inputs (list perl))
  471. (build-system gnu-build-system)
  472. (arguments '(#:configure-flags '("--enable-debug")))
  473. (home-page "https://accellera.org/community/systemc")
  474. (synopsis "Library for event-driven simulation")
  475. (description
  476. "SystemC is a C++ library for modeling concurrent systems, and the
  477. reference implementation of IEEE 1666-2011. It provides a notion of timing as
  478. well as an event-driven simulations environment. Due to its concurrent and
  479. sequential nature, SystemC allows the description and integration of complex
  480. hardware and software components. To some extent, SystemC can be seen as
  481. a Hardware Description Language. However, unlike VHDL or Verilog, SystemC
  482. provides sophisticated mechanisms that offer high abstraction levels on
  483. components interfaces. This, in turn, facilitates the integration of systems
  484. using different abstraction levels.")
  485. ;; homepages.cae.wisc.edu/~ece734/SystemC/Esperan_SystemC_tutorial.pdf
  486. (license license:asl2.0)))
  487. (define-public verilator
  488. (package
  489. (name "verilator")
  490. (version "4.204")
  491. (source
  492. (origin
  493. (method git-fetch)
  494. (uri (git-reference
  495. (url "https://github.com/verilator/verilator")
  496. (commit (string-append "v" version))))
  497. (file-name (git-file-name name version))
  498. (sha256
  499. (base32 "0cji5c8870h895l2vxnz8g6z7msv23dzbjaf98va7kva0qlfy2fz"))))
  500. (native-inputs
  501. `(("autoconf" ,autoconf)
  502. ("automake" ,automake)
  503. ("bison" ,bison)
  504. ("flex" ,flex)
  505. ("gettext" ,gettext-minimal)
  506. ("python" ,python)))
  507. (inputs
  508. (list perl systemc))
  509. (build-system gnu-build-system)
  510. (arguments
  511. '(#:configure-flags
  512. (list (string-append "LDFLAGS=-L"
  513. (assoc-ref %build-inputs "systemc")
  514. "/lib-linux64"))
  515. #:make-flags
  516. (list (string-append "LDFLAGS=-L"
  517. (assoc-ref %build-inputs "systemc")
  518. "/lib-linux64"))
  519. #:phases
  520. (modify-phases %standard-phases
  521. (replace 'bootstrap
  522. (lambda _ (invoke "autoconf"))))
  523. #:test-target "test"))
  524. ;; #error "Something failed during ./configure as config_build.h is incomplete.
  525. ;; Perhaps you used autoreconf, don't." -- so we won't. ^^
  526. (home-page "https://www.veripool.org/projects/verilator/")
  527. (synopsis "Fast Verilog/SystemVerilog simulator")
  528. (description
  529. "Verilator is invoked with parameters similar to GCC or Synopsys’s VCS.
  530. It ``Verilates'' the specified Verilog or SystemVerilog code by reading it,
  531. performing lint checks, and optionally inserting assertion checks and
  532. coverage-analysis points. It outputs single- or multi-threaded @file{.cpp}
  533. and @file{.h} files, the ``Verilated'' code.
  534. The user writes a little C++/SystemC wrapper file, which instantiates the
  535. Verilated model of the user’s top level module. These C++/SystemC files are
  536. then compiled by a C++ compiler (GCC/Clang/etc.). The resulting executable
  537. performs the design simulation. Verilator also supports linking its generated
  538. libraries, optionally encrypted, into other simulators.")
  539. (license license:lgpl3)))