sim.pysim: in write_vcd(), close files if an exception is raised.
This also avoids leaving the waveform writer list in an inconsistent state after an exception.
This commit is contained in:
parent
9bc42cb8c5
commit
9bdb7accc8
|
@ -402,10 +402,16 @@ class Simulator:
|
|||
Signals to display traces for.
|
||||
"""
|
||||
if self._state.timeline.now != 0.0:
|
||||
for file in (vcd_file, gtkw_file):
|
||||
if hasattr(file, "close"):
|
||||
file.close()
|
||||
raise ValueError("Cannot start writing waveforms after advancing simulation time")
|
||||
|
||||
waveform_writer = _VCDWaveformWriter(self._fragment,
|
||||
vcd_file=vcd_file, gtkw_file=gtkw_file, traces=traces)
|
||||
try:
|
||||
self._waveform_writers.append(waveform_writer)
|
||||
yield
|
||||
finally:
|
||||
waveform_writer.close(self._state.timeline.now)
|
||||
self._waveform_writers.remove(waveform_writer)
|
||||
|
|
Loading…
Reference in a new issue