diff --git a/_web_server/server/playground-server.scm b/_web_server/server/playground-server.scm
index 9ae21c0..02ef2af 100755
--- a/_web_server/server/playground-server.scm
+++ b/_web_server/server/playground-server.scm
@@ -319,14 +319,40 @@
;;; Make legend SVG text for VCD
;;;
(define* (vcd-signals->legend signals text-spacing text-position)
- (map
- (lambda (sig n)
- (string-append
- (format-inex "~a"
- (+ (* n text-spacing) text-position)
- (vcd-signal-name sig))))
- signals
- (iota (length signals))))
+ (if (null? signals)
+ ""
+ (let ((common-scope-len
+ (length
+ (fold
+ (lambda (scope common)
+ (let loop ((scope scope)
+ (common common)
+ (out '()))
+ (if (or (null? scope)
+ (null? common))
+ (reverse out)
+ (if (string-ci= (car scope)
+ (car common))
+ (loop (cdr scope)
+ (cdr common)
+ (cons (car scope) out))
+ (reverse out)))))
+ (vcd-signal-scope (car signals))
+ (map vcd-signal-scope (cdr signals))))))
+ (map
+ (lambda (sig n)
+ (string-append
+ (format-inex "~a"
+ (+ (* n text-spacing) text-position)
+ (string-concatenate
+ (insert-between
+ (append
+ (drop (vcd-signal-scope sig)
+ common-scope-len)
+ `(,(vcd-signal-name sig)))
+ ".")))))
+ signals
+ (iota (length signals))))))
;;;
;;; Create SVG from VCD
@@ -336,7 +362,7 @@
(signal-text-position 12)
(margin 5)
(signal-spacing 5)
- (legend-width 100)
+ (legend-width 150)
(extra-delim-y 3))
(let ((tstart (apply min (vcd-timestamps vcd)))
@@ -556,6 +582,8 @@
(println "+1800-2017ext+sv")
(println "--timing")
(println "--trace")
+ (println "--trace-structs")
+ (println "--trace-depth 1")
(println "--quiet-exit")
(println "~a" verilog-file)
(println "~a.cpp" top))))
@@ -610,7 +638,7 @@
(values status log (vcd-file-read
vcd-file
(lambda (sig)
- (= 2 (length (vcd-signal-scope sig))))))
+ (>= (length (vcd-signal-scope sig)) 2))))
(values status log #f)))))
;;;
@@ -632,7 +660,7 @@
(values status log (vcd-file-read
vcd-file
(lambda (sig)
- (= 2 (length (vcd-signal-scope sig))))))
+ (>= (length (vcd-signal-scope sig)) 2))))
(values status log #f)))))
;;;
diff --git a/_web_server/server/top_iverilog.sv b/_web_server/server/top_iverilog.sv
index 00803c2..9dcada1 100644
--- a/_web_server/server/top_iverilog.sv
+++ b/_web_server/server/top_iverilog.sv
@@ -6,7 +6,7 @@ module __@TOPMODULE@__;
@TOPMODULE@ @TOPMODULE@ (clock);
initial begin
$dumpfile("@WORKDIR@/@TOPMODULE@.vcd");
- $dumpvars(0, @TOPMODULE@);
+ $dumpvars(1, @TOPMODULE@);
$dumplimit(100000);
end
endmodule