Prepare to add Verilator
This commit is contained in:
parent
9939a226c8
commit
f61bb7b980
@ -329,12 +329,12 @@
|
||||
(values status (string-append compile-log execution-log)))))))))))
|
||||
|
||||
;;;
|
||||
;;; Get iverilog version
|
||||
;;; Get app version
|
||||
;;;
|
||||
(define (iverilog-version iverilog-exe)
|
||||
(define* (app-version exe #:optional (option "--version"))
|
||||
(let-values (((status out)
|
||||
(system-to-string-list
|
||||
(format "~a -V" iverilog-exe))))
|
||||
(format "~a ~a" exe option))))
|
||||
(if (and (zero? status)
|
||||
(not (null? out)))
|
||||
(car out)
|
||||
@ -428,7 +428,8 @@
|
||||
(define (make-page-handler host root index-file
|
||||
work-base stor-base
|
||||
max-code-size
|
||||
vvp-exe iverilog-exe)
|
||||
vvp-exe iverilog-exe
|
||||
verilator-exe)
|
||||
|
||||
(let* ((root-path (split-and-decode-uri-path root))
|
||||
(root (encode-and-join-uri-path root-path))
|
||||
@ -450,8 +451,9 @@
|
||||
`("Verilog Playground by Punzik (c) 2022"
|
||||
""
|
||||
,(format "Icarus: ~a"
|
||||
(iverilog-version iverilog-exe))
|
||||
,(format "Verilator: ~a" "TODO")
|
||||
(app-version iverilog-exe "-V"))
|
||||
,(format "Verilator: ~a"
|
||||
(app-version verilator-exe))
|
||||
""
|
||||
"Rules:"
|
||||
"0. Don't fool around ;)"
|
||||
@ -610,6 +612,7 @@
|
||||
(-> " -r, --root URN Service location root. Default: ''")
|
||||
(-> " --ivverilog-exe PATH Set Icarus Verilog compiler executable. Default: iverilog")
|
||||
(-> " --vvp-exe PATH Set Icarus Verilog interpreter executable. Default: vvp")
|
||||
(-> " --verilator-exe PATH Set Icarus Verilog interpreter executable. Default: verilator")
|
||||
(-> " --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: ./")
|
||||
@ -629,6 +632,7 @@
|
||||
'(("root" #\r) required)
|
||||
'(("vvp-exe") required)
|
||||
'(("iverilog-exe") required)
|
||||
'(("verilator-exe") required)
|
||||
'(("max-len") required)
|
||||
'(("work-base") required)
|
||||
'(("stor-base") required)
|
||||
@ -641,6 +645,7 @@
|
||||
(root (string-trim (or (option-get opts "root") "")))
|
||||
(vvp (string-trim (or (option-get opts "vvp-exe") "vvp")))
|
||||
(iverilog (string-trim (or (option-get opts "iverilog-exe") "iverilog")))
|
||||
(verilator (string-trim (or (option-get opts "verilator-exe") "verilator")))
|
||||
(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") "./")))
|
||||
@ -660,6 +665,9 @@
|
||||
(set! LOG-LEVEL log-level)
|
||||
(logger LOG-INFO "Listen on '~a' port '~a'" addr port)
|
||||
(logger LOG-INFO "Server URL: '~a/~a'" host root)
|
||||
(logger LOG-INFO "iverilog: '~a'" iverilog)
|
||||
(logger LOG-INFO "vvp: '~a'" vvp)
|
||||
(logger LOG-INFO "verilator: '~a'" verilator)
|
||||
(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)
|
||||
@ -668,5 +676,7 @@
|
||||
(run-server
|
||||
(make-page-handler host root INDEX-FILE
|
||||
work-base stor-base
|
||||
max-code-size vvp iverilog)
|
||||
max-code-size
|
||||
vvp iverilog
|
||||
verilator)
|
||||
'http `(#:host ,addr #:port ,port)))))))
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user