VVP Command Line Flags
**********************

The vvp command is the simulation run-time engine. The command line
for vvp execution is first the options and flags, then the vvp input
file, and finally extended arguments. Typical usage looks like this:

   % vvp <flags> foo.vvp <extended arguments>


Options/Flags
=============

These options/flags go before the path to the vvp-executable program.
They effect behavior of the vvp runtime engine, including preparation
for simulation.

* -i

  This flag causes all output to <stdout> to be unbuffered.

* -l<logfile>

  This flag specifies a logfile where all MCI <stdlog> output goes.
  Specify logfile as '-' to send log output to <stderr>. $display and
  friends send their output both to <stdout> and <stdlog>.

* -M<path>

  Add the directory path to the (VPI) module search path. Multiple
  "-M" flags are allowed, and the directories are added in the order
  that they are given on the command line.

  The string "-M-" is special, in that it doesn't add a directory to
  the path. It instead *removes* the compiled directory. This is
  generally used only for development of the vvp engine.

* -m<module>

  Name a VPI module that should be loaded. The vvp engine looks for
  the named module in the module search path, which includes the
  compiled in default directory and directories given by "-M" flags.

  NOTE: Starting with v11.0, the VPI modules to be loaded can be
  specified when you compile your design. This allows the compiler to
  automatically determine the return types of user-defined system
  functions. If specified at compile-time, there is no need to specify
  them again here.

* -n

  This flag makes $stop or a <Control-C> a synonym for $finish. It can
  be used to give the program a more meaningful interface when running
  in a non-interactive environment.

* -N

  This flag does the same thing as "-n", but results in an exit code
  of 1 if the stimulation calls $stop.  It can be used to indicate a
  simulation failure when running a testbench.

* -q

  Enable quiet mode. This suppresses all output to <stdout> sent via
  MCD bit 0 (e.g. all output from $display and friends). It does not
  affect output to the log file, nor does it affect output to <stdout>
  sent via the STDOUT file descriptor.

* -s

  $stop right away, in the beginning of the simulation. This kicks the
  vvp program into interactive debug mode.

* -v

  Show verbose progress while setting up or cleaning up the runtime
  engine. This also displays some performance information.

* -V

  Print the version of the runtime, and exit.


Extended Arguments
==================

The extended arguments are available to the simulation runtime,
especially system tasks, system functions and any VPI/PLI code.
Extended arguments that start with a "+" character are left for use by
the user via the $plus$flag and $plus$value functions.

NOTE: The extended arguments must appear *after* the input file name
on the command line.


VCD/FST/LXT Arguments
---------------------

If not otherwise specified, the vvp engine will by default use VCD
formats to support the $dumpvars system task. The flags described here
can alter that behavior.

* -none/-vcd-none/-vcd-off/-fst-none

  Disable trace output. The trace output will be stubbed so that no
  trace file is created and the cost of dumping is avoided. All off
  these options are synonyms for turning of dumping.

* -fst

  Generate FST format outputs instead of VCD format waveform dumps.
  This is the preferred output format if using GTKWave or Surfer for
  viewing waveforms.

* -lxt/-lxt2

  Generate LXT or LXT2format instead of VCD format waveform dumps. The
  LXT2 format is more advanced.

* -dumpfile=<name>

  Set the default dumpfile. If unspecified, the default is "dump".
  This command line flag allows you do change it. If no suffix is
  specified, then the suffix will be chosen based on the dump type. In
  any case, the $dumpfile system task overrides this flag.


SDF Support
-----------

The Icarus Verilog support for SDF back-annotation can take some
extended arguments to control aspects of SDF support.

* -sdf-warn

  Print warnings during load of/annotation from an SDF file.

* -sdf-info

  Print interesting information about an SDF file while parsing it.

* -sdf-verbose

  Print warnings and info messages.


Environment Variables
=====================

The vvp program pays attention to certain environment variables.

* IVERILOG_DUMPER
