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