aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/Simulation_and_runtime.rst14
-rw-r--r--src/grt/grt-options.adb8
-rw-r--r--src/grt/grt-wave_opt_file-parse.adb7
3 files changed, 19 insertions, 10 deletions
diff --git a/doc/Simulation_and_runtime.rst b/doc/Simulation_and_runtime.rst
index 37a83521f..979a9892a 100644
--- a/doc/Simulation_and_runtime.rst
+++ b/doc/Simulation_and_runtime.rst
@@ -69,7 +69,7 @@ all options available, including the debugging one.
$ ./my_design --stop-time=10ns
$ ./my_design --stop-time=ps
-
+
.. option:: --stop-delta=<N>
@@ -118,6 +118,12 @@ all options available, including the debugging one.
Disable buffering on stdout, stderr and files opened in write or append mode (TEXTIO).
+.. option:: --wave-opt-file=<FILENAME>
+
+ Filter signals to be dumped to the wave file according to the wave option
+ file provided.
+
+
.. option:: --vcd=<FILENAME>
.. option:: --vcdgz=<FILENAME>
@@ -208,7 +214,7 @@ all options available, including the debugging one.
generate labels or block labels. Currently, you cannot use an indexed name.
Specifying a delay::
-
+
--sdf=min=<PATH>=<FILENAME>
--sdf=typ=<PATH>=<FILENAME>
--sdf=max=<PATH>=<FILENAME>
@@ -222,7 +228,7 @@ all options available, including the debugging one.
.. option:: --help
-
+
Display a short description of the options accepted by the runtime library.
Debugging VHDL programs
@@ -246,6 +252,6 @@ an array beyond its bounds. All error check subprograms call the
a breakpoint like this:
(gdb) break __ghdl_fatal
-
+
When the breakpoint is hit, use the `where` or `bt` command to
display the stack frames.
diff --git a/src/grt/grt-options.adb b/src/grt/grt-options.adb
index 31bd3b45c..6c3f333d3 100644
--- a/src/grt/grt-options.adb
+++ b/src/grt/grt-options.adb
@@ -165,6 +165,7 @@ package body Grt.Options is
P (" --no-run do not simulate, only elaborate");
P (" --unbuffered disable buffering on stdout, stderr and");
P (" files opened in write or append mode (TEXTIO).");
+ P (" --wave-opt-file=FILENAME read a wave option file");
-- P (" --threads=N use N threads for simulation");
P ("Additional features:");
P (" --has-feature=X test presence of feature X");
@@ -481,14 +482,13 @@ package body Grt.Options is
end if;
Last_Generic_Override := Over;
end;
- elsif Option'Length >= 19
- and then Option (1 .. 19) = "--wave-option-file="
- then
- Wave_Opt_File.Parse.Start (Option (20 .. Option'Last));
elsif Option = "--unbuffered" then
Unbuffered_Writes := True;
setbuf (stdout, NULL_voids);
setbuf (stderr, NULL_voids);
+ elsif Option'Length >= 16 and then Option (1 .. 16) = "--wave-opt-file="
+ then
+ Wave_Opt_File.Parse.Start (Option (17 .. Option'Last));
elsif not Grt.Hooks.Call_Option_Hooks (Option) then
Error_C ("unknown option '");
Error_C (Option);
diff --git a/src/grt/grt-wave_opt_file-parse.adb b/src/grt/grt-wave_opt_file-parse.adb
index 18d29fe37..7c6537b4f 100644
--- a/src/grt/grt-wave_opt_file-parse.adb
+++ b/src/grt/grt-wave_opt_file-parse.adb
@@ -330,11 +330,14 @@ package body Grt.Wave_Opt_File.Parse is
is
Mode : constant String := "rt" & ASCII.Nul;
Stream : FILEs;
+ Option_File_C : String (1 .. Option_File'Length + 1);
begin
- Stream := fopen (Option_File'Address, Mode'Address);
+ Option_File_C (1 .. Option_File'Length) := Option_File;
+ Option_File_C (Option_File_C'Last) := ASCII.Nul;
+ Stream := fopen (Option_File_C'Address, Mode'Address);
if Stream = NULL_Stream then
Error_C ("cannot open '");
- Error_C (Option_File (Option_File'First .. Option_File'Last - 1));
+ Error_C (Option_File);
Error_E ("'");
end if;
return Stream;