Skip to content

Commit bd57687

Browse files
committed
Add --waves argument to generate waveforms for GHDL and NVC
1 parent acf7e7f commit bd57687

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

vunit/sim_if/ghdl.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,15 @@ def add_arguments(parser):
5858
group = parser.add_argument_group("ghdl/nvc", description="GHDL/NVC specific flags")
5959
group.add_argument(
6060
"--viewer-fmt",
61+
"--waves-fmt",
6162
"--gtkwave-fmt",
6263
choices=["vcd", "fst", "ghw"],
6364
default=None,
6465
help="Save .vcd, .fst, or .ghw to open in waveform viewer. NVC does not support ghw.",
6566
)
6667
group.add_argument("--viewer-args", "--gtkwave-args", default="", help="Arguments to pass to waveform viewer")
6768
group.add_argument("--viewer", default=None, help="Waveform viewer to use")
69+
group.add_argument("--waves", action='store_true', help="Generate waveform file")
6870

6971
@classmethod
7072
def from_args(cls, args, output_path, **kwargs):
@@ -79,6 +81,7 @@ def from_args(cls, args, output_path, **kwargs):
7981
viewer_fmt=args.viewer_fmt,
8082
viewer_args=args.viewer_args,
8183
viewer=args.viewer,
84+
waves=args.waves,
8285
backend=cls.determine_backend(prefix),
8386
)
8487

@@ -98,6 +101,7 @@ def __init__( # pylint: disable=too-many-arguments
98101
viewer_fmt=None,
99102
viewer_args="",
100103
viewer=None,
104+
waves=False,
101105
backend="llvm",
102106
):
103107
SimulatorInterface.__init__(self, output_path, gui)
@@ -111,6 +115,7 @@ def __init__( # pylint: disable=too-many-arguments
111115

112116
self._prefix = prefix
113117
self._project = None
118+
self._waves = waves
114119

115120
self._backend = backend
116121
self._vhdl_standard = None
@@ -366,6 +371,10 @@ def simulate(self, output_path, test_suite_name, config, elaborate_only): # pyl
366371
ghdl_e = elaborate_only and config.sim_options.get("ghdl.elab_e", False)
367372

368373
if self._viewer_fmt is not None:
374+
if not self._waves and not self._gui:
375+
LOGGER.warning("Passing --viewer-fmt, or any alias of that, without either "
376+
"--gui or --waves is deprecated and will be removed in a future version.")
377+
369378
data_file_name = str(Path(script_path) / f"wave.{self._viewer_fmt!s}")
370379
if Path(data_file_name).exists():
371380
remove(data_file_name)

vunit/sim_if/nvc.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ def from_args(cls, args, output_path, **kwargs):
6464
viewer_fmt=args.viewer_fmt,
6565
viewer_args=args.viewer_args,
6666
viewer=args.viewer,
67+
waves=args.waves,
6768
)
6869

6970
@classmethod
@@ -74,7 +75,7 @@ def find_prefix_from_path(cls):
7475
return cls.find_toolchain([cls.executable])
7576

7677
def __init__( # pylint: disable=too-many-arguments
77-
self, output_path, prefix, *, num_threads, gui=False, viewer_fmt=None, viewer_args="", viewer=None
78+
self, output_path, prefix, *, num_threads, gui=False, viewer_fmt=None, viewer_args="", viewer=None, waves=False
7879
):
7980
SimulatorInterface.__init__(self, output_path, gui)
8081
if viewer_fmt == "ghw":
@@ -84,6 +85,7 @@ def __init__( # pylint: disable=too-many-arguments
8485

8586
self._prefix = prefix
8687
self._project = None
88+
self._waves = waves
8789

8890
self._vhdl_standard = None
8991
self._coverage_test_dirs = set()
@@ -257,7 +259,7 @@ def simulate(
257259
libdir = self._project.get_library(config.library_name).directory
258260
cmd = self._get_command(self._vhdl_standard, config.library_name, libdir)
259261

260-
if self._gui:
262+
if self._gui or self._waves:
261263
wave_file = script_path / (f"{config.entity_name}.{self._viewer_fmt or 'fst'}")
262264
if wave_file.exists():
263265
remove(wave_file)

0 commit comments

Comments
 (0)