back.pysim: make write_vcd(traces=) actually use those traces.

Reported in #280.
This commit is contained in:
whitequark 2020-02-06 17:07:48 +00:00
parent 3df429703c
commit d3775eedd7

View file

@ -1,6 +1,7 @@
import inspect import inspect
import warnings import warnings
from contextlib import contextmanager from contextlib import contextmanager
import itertools
from vcd import VCDWriter from vcd import VCDWriter
from vcd.gtkw import GTKWSave from vcd.gtkw import GTKWSave
@ -85,7 +86,15 @@ class _VCDWaveformWriter(_WaveformWriter):
self.gtkw_file = gtkw_file self.gtkw_file = gtkw_file
self.gtkw_save = gtkw_file and GTKWSave(self.gtkw_file) self.gtkw_save = gtkw_file and GTKWSave(self.gtkw_file)
for signal, names in signal_names.items(): self.traces = []
trace_names = SignalDict()
for trace in traces:
if trace not in signal_names:
trace_names[trace] = trace.name
self.traces.append(trace)
for signal, names in itertools.chain(signal_names.items(), trace_names.items()):
if signal.decoder: if signal.decoder:
var_type = "string" var_type = "string"
var_size = 1 var_size = 1
@ -137,12 +146,12 @@ class _VCDWaveformWriter(_WaveformWriter):
self.gtkw_save.dumpfile_size(self.vcd_file.tell()) self.gtkw_save.dumpfile_size(self.vcd_file.tell())
self.gtkw_save.treeopen("top") self.gtkw_save.treeopen("top")
for signal, hierarchy in self.gtkw_names.items(): for signal in self.traces:
if len(signal) > 1 and not signal.decoder: if len(signal) > 1 and not signal.decoder:
suffix = "[{}:0]".format(len(signal) - 1) suffix = "[{}:0]".format(len(signal) - 1)
else: else:
suffix = "" suffix = ""
self.gtkw_save.trace(".".join(hierarchy) + suffix) self.gtkw_save.trace(".".join(self.gtkw_names[signal]) + suffix)
self.vcd_file.close() self.vcd_file.close()
if self.gtkw_file is not None: if self.gtkw_file is not None: