Add verilator build jobs option
This commit is contained in:
parent
058191de55
commit
74e76d8131
@ -297,7 +297,7 @@
|
||||
;;; Create workdir for Verilator
|
||||
;;; Returns directory path
|
||||
;;;
|
||||
(define* (make-verilator-workdir code cpp base top)
|
||||
(define* (make-verilator-workdir code cpp jobs base top)
|
||||
(let-values (((work-dir verilog-file command-file)
|
||||
(make-sim-workdir code base top)))
|
||||
(let ((cpp-file (path+ work-dir (format "~a.cpp" top))))
|
||||
@ -313,6 +313,8 @@
|
||||
(println "--Mdir ~a" (path+ work-dir top))
|
||||
(println "-cc")
|
||||
(println "-O2")
|
||||
(when (> jobs 0)
|
||||
(println "--build-jobs ~a" jobs))
|
||||
(println "-o ~a" top)
|
||||
(println "--exe")
|
||||
(println "--build")
|
||||
@ -383,7 +385,8 @@
|
||||
;;;
|
||||
(define* (exec-sim simulator code base top #:key
|
||||
(vvp-wrap "") (iverilog-wrap "") (metatop "")
|
||||
(verilator-wrap "") (verilator-sim-wrap "") (verilator-cpp ""))
|
||||
(verilator-wrap "") (verilator-sim-wrap "")
|
||||
(verilator-cpp "") (verilator-build-jobs 0))
|
||||
(let-values
|
||||
(((work-dir status log)
|
||||
(cond
|
||||
@ -396,7 +399,7 @@
|
||||
|
||||
;; Run Verilator
|
||||
((eq? simulator 'verilator)
|
||||
(let ((work-dir (make-verilator-workdir code verilator-cpp base top)))
|
||||
(let ((work-dir (make-verilator-workdir code verilator-cpp verilator-build-jobs base top)))
|
||||
(let-values (((status log)
|
||||
(exec-sim-verilator top work-dir verilator-wrap verilator-sim-wrap)))
|
||||
(values work-dir status log))))
|
||||
@ -487,7 +490,7 @@
|
||||
work-base stor-base
|
||||
max-code-size
|
||||
iverilog-wrap vvp-wrap
|
||||
verilator-wrap verilator-sim-wrap)
|
||||
verilator-wrap verilator-sim-wrap verilator-build-jobs)
|
||||
|
||||
(let* ((root-path (split-and-decode-uri-path root))
|
||||
(root (encode-and-join-uri-path root-path))
|
||||
@ -632,7 +635,8 @@
|
||||
TOP-MODULE
|
||||
#:verilator-wrap verilator-wrap
|
||||
#:verilator-sim-wrap verilator-sim-wrap
|
||||
#:verilator-cpp verilator-cpp)
|
||||
#:verilator-cpp verilator-cpp
|
||||
#:verilator-build-jobs verilator-build-jobs)
|
||||
#:content-type 'text/plain))
|
||||
|
||||
;; Save snippet
|
||||
@ -694,6 +698,7 @@
|
||||
(-> " --vvp-wrap PATH Icarus Verilog interpreter wrapper.")
|
||||
(-> " --verilator-wrap PATH Verilator compiler wrapper.")
|
||||
(-> " --verilator-sim-wrap PATH Verilator simulation executable wrapper.")
|
||||
(-> " --verilator-build-jobs N Verilator parallel build.")
|
||||
(-> " --max-len LEN Set maximum code size in symbols. Default: 0 (infinite)")
|
||||
(-> " --work-base PATH Set work base path. Default: ./")
|
||||
(-> " --stor-base PATH Set snippets storage path. Default: ./")
|
||||
@ -720,6 +725,7 @@
|
||||
'(("iverilog-wrap") required)
|
||||
'(("verilator-wrap") required)
|
||||
'(("verilator-sim-wrap") required)
|
||||
'(("verilator-build-jobs") required)
|
||||
'(("max-len") required)
|
||||
'(("work-base") required)
|
||||
'(("stor-base") required)
|
||||
@ -734,6 +740,7 @@
|
||||
(iverilog-wrap (string-trim-if-string (option-get opts "iverilog-wrap")))
|
||||
(verilator-wrap (string-trim-if-string (option-get opts "verilator-wrap")))
|
||||
(verilator-sim-wrap (string-trim-if-string (option-get opts "verilator-sim-wrap")))
|
||||
(verilator-build-jobs (string->number (string-trim (or (option-get opts "verilator-build-jobs") "0"))))
|
||||
(max-code-size (string->number (string-trim (or (option-get opts "max-len") "0"))))
|
||||
(work-base (string-trim (or (option-get opts "work-base") "./")))
|
||||
(stor-base (string-trim (or (option-get opts "stor-base") "./")))
|
||||
@ -757,6 +764,7 @@
|
||||
(logger LOG-INFO "vvp wrapper: '~a'" vvp-wrap)
|
||||
(logger LOG-INFO "verilator compiler wrapper: '~a'" verilator-wrap)
|
||||
(logger LOG-INFO "verilator simulator wrapper: '~a'" verilator-sim-wrap)
|
||||
(logger LOG-INFO "verilator build jobs: ~a" verilator-build-jobs)
|
||||
(logger LOG-INFO "Max code size: ~a" max-code-size)
|
||||
(logger LOG-INFO "Work base path: '~a'" work-base)
|
||||
(logger LOG-INFO "Storage base path: '~a'" stor-base)
|
||||
@ -767,5 +775,5 @@
|
||||
work-base stor-base
|
||||
max-code-size
|
||||
iverilog-wrap vvp-wrap
|
||||
verilator-wrap verilator-sim-wrap)
|
||||
verilator-wrap verilator-sim-wrap verilator-build-jobs)
|
||||
'http `(#:host ,addr #:port ,port)))))))
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user