vvp(1)
π vvp(1) β the Icarus Verilog vvp runtime engine π
okay bestie, sit down, we're talking about vvp β and this is Version 13.0 (stable) so you know it's the good stuff β¨ (the page itself is from Jan 13th, 2026, we'll get to that at the end π)
πΈ NAME πΈ
vvp β the Icarus Verilog vvp runtime engine. that's it, that's the whole vibe. it runs your stuff. π
β¨ SYNOPSIS β¨
vvp [-inNqsvV] [-Mpath] [-mmodule] [-llogfile] inputfile [extended-args...]
look at that little lineup of flags, so cute, so powerful π«Ά
π¦ DESCRIPTION π¦
okay so vvp is the run time engine that executes the default compiled form generated by Icarus Verilog. here's the tea: the output from the iverilog command is not by itself executable on any platform. like, it just sits there. instead, you invoke the vvp program to execute the generated output file. vvp is the main character, periodt π
π OPTIONS π
vvp accepts the following options (yes, all of them, we're not skipping a single one):
-iβ this flag causes all output to<stdout>to be unbuffered. instant gratification, no waiting around π¨-llogfileβ this flag specifies a logfile where all MCI<stdlog>output goes. specify logfile as'-'to send log output to<stderr>. and btw,$displayand friends send their output both to<stdout>and<stdlog>. dual posting, iconic β¨-Mpathβ this flag adds a directory to the path list used to locate VPI modules. the default path includes only the install directory for thesystem.vpimodule, but this flag can add other directories. multiple paths are allowed, and modules will be searched in order. queue up bestie π-mmoduleβ tell thevvprun time to load the named module before executing the simulation. thesystem.vpimodule is loaded by default, but additional modules β including modules that you compiled locally β can be specified with this flag. any number of modules can be loaded, and they will be linked in the order they are listed on the command line.
normally, you only need to specify the name of the module, without any directory path or .vpi suffix, and the search path is scanned to find the module. however, if the name includes at least one directory character, then the search path is not scanned and the name is assumed to be a complete file name. read that twice, it matters π
-nβ this flag makes$stopor 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 of1if the stimulation calls$stop. it can be used to indicate a simulation failure when running a testbench. very testbench-core of it π§ͺ-qβ enable quiet mode. this suppresses all output to<stdout>sent via MCD bit 0 (e.g. all output from$displayand friends). it does not affect output to the log file, nor does it affect output to<stdout>sent via the STDOUT file descriptor. read that again. quiet β silent, bestie π€«-sβ stop. this will cause the simulation to stop in the beginning, before any events are scheduled. this allows the interactive user to get hold of the simulation just before it starts. grab it by the collar π«΄-vβ turn on verbose messages. this will cause information about run time progress to be printed to standard out. yapper mode activated π£οΈ-Vβ print the version of the runtime, and exit. short and sweet, love her π
π EXTENDED ARGUMENTS π
the vvp options described above must come before the design file name. after the design file name, however, there may be any number of unspecified arguments. these arguments are not interpreted by vvp but are instead passed on to the executed design, and are available via the $test$plusargs and $value$plusargs system functions.
arguments that do not start with the plus (+) character are not available to the $plusargs system tasks, but can still be accessed via PLI code via the vpi_get_vlog_info function. this means that vpi modules may use arguments that do not start with + and be assured that they do not interfere with user defined plus-args. thoughtful! considerate! we love an unproblematic fave π
there are a few extended arguments that are interpreted by the standard system.vpi module, which implements the standard system tasks and are always included. these arguments are described here:
-vcdβ this extended argument sets the wave dump format to VCD. this is the default in the absence of anyIVERILOG_DUMPERenvironment variable. the VCD dump files are large and ponderous, but are also maximally compatible with third party tools that read waveform dumps. big files, big compatibility, balance β¨-lxt/-lxt-speed/-lxt-spaceβ these extended arguments set the wave dump format to lxt, possibly with format optimizations. the-lxt-spaceflag sets the output format to lxt with full compression enabled. the resulting files are quite small. the-lxt-speedchooses the lxt compression mode that leads to the best execution time and the fastest read time, at the expense of some file size. pick your fighter π-lxt2/-lxt2-speed/-lxt2-space-lx2/-lx2-speed/-lx2-space
the LXT2 format is slower than LXT but usually takes less space, and is written out incrementally. thus, you can view lxt2 files while a simulation is still running (or paused) or if your simulation crashes or is killed, you still have a useful dump. the -lxt2-speed or -lx2-speed arguments are the same as -lxt2 or -lx2. the -lxt2-space or -lx2-space arguments enable better compression and turn off incremental writing. no cap, crash-proof dump energy π
-fst/-fst-speed/-fst-space-fst-space-speed/-fst-speed-space
this is a modern dumping format that is both faster and more compact than the other dumping formats. it supports incremental dumping just like -lxt2. the -fst-speed argument uses a faster compression methods that creates a noticeably larger output file. the -fst-space argument performs a repack of the file on close to produce the smallest possible dump file. the -fst-space-speed or -fst-speed-space arguments use the faster compression method and repack the file on close. the future is now β
-noneβ this flag can be used by itself or appended to the end of the above dumpers (vcd/lxt/lxt2/lx2/fst) to suppress all waveform output. this can make long simulations run faster. girl, we are NOT dumping anything today π-sdf-warnβ when loading an SDF annotation file, this option causes the annotator to print warnings for questionable but non-fatal issues. β οΈ-sdf-infoβ when loading an SDF annotation file, this option causes the annotator to print information about the annotation. βΉοΈ-sdf-verboseβ this is shorthand for-sdf-info -sdf-warn. two for one, deal π-compatibleβ this extended argument enables improved compatibility with other simulators. at present this only affects the display format for real numbers when no format string is supplied. playing nice with the other sims π«Ά
πΈ ENVIRONMENT πΈ
the vvp command also accepts some environment variables that control its behavior. these can be used to make semi-permanent changes. set it and forget it π
IVERILOG_DUMPER=fst|lxt|lxt2|lx2|vcd|noneβ this selects the output format for the waveform output. normally, waveforms are dumped in vcd format, but this variable can be used to select lxt format, which is far more compact, though limited to GTKWave or compatible viewers. it can also be used to suppress VCD output, a time-saver for regression tests.IVERILOG_VPI_MODULE_PATH=/some/path:/some/other/pathβ this adds additional components to the VPI module search path. paths specified in this way are searched after paths specified with-M, but before the default search path. multiple paths can be separated with colons (semicolons if using Windows). know your search order, bestie ποΈ
π INTERACTIVE MODE π
the simulation engine supports an interactive mode. the user may interrupt the simulation (typically by typing <Control-C>) to get to the interactive prompt. from that prompt, the help command prints a brief summary of the available commands. so helpful, so demure π«§
the interactive mode may also be entered by a call to the $stop system task from within the simulation, or by a call to the vpi_control VPI function with the vpiStop control argument. these means of entering interactive mode are equivalent. same door, different handle, iykyk πͺ
π AUTHOR π
Steve Williams (steve@icarus.com)
π¦ SEE ALSO π¦
π COPYRIGHT π
Copyright Β© 2001-2026 Stephen Williams
this document can be freely redistributed according to the terms of the GNU General Public License version 2.0
and that's the whole page bestie!! every flag, every format, every env var, all of it π
okay that's a wrap β¨ this was vvp(1) from Version 13.0 (stable), dated Jan 13th, 2026 β go dump some waveforms, slay, and remember: read the -mmodule paragraph twice ππ«Ά
π¦ where this page comes from
- alpine 3.24: iverilog-doc 13.0-r0 Β· GPL-2.0-or-later
- arch rolling: iverilog 13.0-1 Β· GPL
- epel 10: iverilog 13.0-7.el10_3 Β· GPL-2.0-only
- fedora 44: iverilog 13.0-4.fc44 Β· GPL-2.0-only
- fedora 44: iverilog 13.0-7.fc44 Β· GPL-2.0-only
- fedora 44: iverilog 13.0-7.fc44 Β· GPL-2.0-only
- nixos 26.05: iverilog 13.0
- nixpkgs unstable: iverilog 13.0
- ubuntu stonking: iverilog 13.0-2 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms