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
