gnu: nextpnr: Implement built-in tests.

* gnu/packages/electronics.scm (nextpnr)[native-inputs]: Add iverilog
and gzip.
<#:phases>: Add run-tests.

Change-Id: I6e32015b7c0e1250931f3b844d1db705c298278f
Signed-off-by: Maxim Cournoyer <maxim@guixotic.coop>
This commit is contained in:
Cayetano Santos 2025-10-03 16:04:28 +02:00 committed by Maxim Cournoyer
parent fdd621b9bb
commit ca36b0e0cc
No known key found for this signature in database
GPG key ID: 1260E46482E63562

View file

@ -937,10 +937,38 @@ which allows one to install the M8 firmware on any Teensy.")
(("\\$\\{CMAKE_SOURCE_DIR}/3rdparty/sanitizers-cmake/cmake")
(string-append
#$(this-package-native-input "sanitizers-cmake")
"/share/sanitizers-cmake/cmake"))))))))
"/share/sanitizers-cmake/cmake")))))
(add-after 'install 'run-tests
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(setenv "PATH"
(string-append #$output "/bin:" (getenv "PATH")))
;; ice40
(invoke "./nextpnr-ice40-test")
(chdir "../source")
(setenv "NEXTPNR" "nextpnr-ice40")
(with-directory-excursion "ice40/smoketest/attosoc"
(invoke "./smoketest.sh"))
(with-directory-excursion "tests/ice40/regressions"
(invoke "make" (string-append
"NPNR=" #$output "/bin/nextpnr-ice40")))
;; generic
(setenv "NPNR" "nextpnr-generic")
(invoke "nextpnr-generic" "--uarch" "example" "--test")
(with-directory-excursion "tests/generic/flow/bel-pin"
(invoke "./run.sh"))
;; ecp5
(invoke "nextpnr-ecp5"
"--um5g-25k" "--package" "CABGA381" "--test")
(with-directory-excursion "tests/ecp5/regressions"
(invoke "make"
(string-append
"NPNR=" #$output "/bin/nextpnr-ecp5")))))))))
(native-inputs
(list icestorm
iverilog
googletest
gzip
prjbeyond-db
prjpeppercorn
prjtrellis