585 lines
24 KiB
Groff
585 lines
24 KiB
Groff
.TH iverilog 1 "Nov 8th, 2017" "" "Version %M.%n%E"
|
|
.SH NAME
|
|
iverilog - Icarus Verilog compiler
|
|
|
|
.SH SYNOPSIS
|
|
.B iverilog
|
|
[\-ESuVv] [\-Bpath] [\-ccmdfile|\-fcmdfile] [\-Dmacro[=defn]]
|
|
[\-Pparameter=value] [\-pflag=value] [\-dname]
|
|
[\-g1995\:|\-g2001\:|\-g2005\:|\-g2005-sv\:|\-g2009\:|\-g2012\:|\-g<feature>]
|
|
[\-Iincludedir] [\-mmodule] [\-M[mode=]file] [\-Nfile] [\-ooutputfilename]
|
|
[\-stopmodule] [\-ttype] [\-Tmin/typ/max] [\-Wclass] [\-ypath] [\-lfile]
|
|
sourcefile
|
|
|
|
.SH DESCRIPTION
|
|
.PP
|
|
\fIiverilog\fP is a compiler that translates Verilog source code into
|
|
executable programs for simulation, or other netlist formats for
|
|
further processing. The currently supported targets are \fIvvp\fP for
|
|
simulation, and \fIfpga\fP for synthesis. Other target
|
|
types are added as code generators are implemented.
|
|
|
|
.SH OPTIONS
|
|
\fIiverilog\fP accepts the following options:
|
|
.TP 8
|
|
.B -B\fIbase\fP
|
|
The \fIiverilog\fP program uses external programs and configuration
|
|
files to preprocess and compile the Verilog source. Normally, the path
|
|
used to locate these tools is built into the \fIiverilog\fP
|
|
program. However, the \fB\-B\fP switch allows the user to select a
|
|
different set of programs. The path given is used to locate
|
|
\fIivlpp\fP, \fIivl\fP, code generators and the VPI modules.
|
|
.TP 8
|
|
.B -c\fIfile\fP -f\fIfile\fP
|
|
These flags specify an input file that contains a list of Verilog
|
|
source files. This is similar to the \fIcommand file\fP of other
|
|
Verilog simulators, in that it is a file that contains the file names
|
|
instead of taking them on the command line. See \fBCommand Files\fP below.
|
|
.TP 8
|
|
.B -D\fImacro\fP
|
|
Defines macro \fImacro\fP with the string `1' as its definition. This
|
|
form is normally only used to trigger ifdef conditionals in the
|
|
Verilog source.
|
|
.TP 8
|
|
.B -D\fImacro=defn\fP
|
|
Defines macro \fImacro\fP as \fIdefn\fP.
|
|
.TP 8
|
|
.B -P\fIparameter=value\fP
|
|
Override (i.e. defparam) a parameter in a root module. This allows the
|
|
user to override at compile time (defparam) a parameter in a root
|
|
module instance. For example, \fB\-Pmain.foo=2\fP overrides the
|
|
parameter foo in the root instance main with the value 2.
|
|
.TP 8
|
|
.B -d\fIname\fP
|
|
Activate a class of compiler debugging messages. The \fB\-d\fP switch may
|
|
be used as often as necessary to activate all the desired messages.
|
|
Supported names are scopes, eval_tree, elaborate, and synth2;
|
|
any other names are ignored.
|
|
.TP 8
|
|
.B -E
|
|
Preprocess the Verilog source, but do not compile it. The output file
|
|
is the Verilog input, but with file inclusions and macro references
|
|
expanded and removed. This is useful, for example, to preprocess
|
|
Verilog source for use by other compilers.
|
|
.TP 8
|
|
.B -g1995\fI|\fP-g2001\fI|\fP-g2001-noconfig\fI|\fP-g2005\fI|\fP-g2005-sv\fI|\fP-g2009\fI|\fP-g2012
|
|
Select the Verilog language \fIgeneration\fP to support in the compiler.
|
|
This selects between \fIIEEE1364\-1995\fP, \fIIEEE1364\-2001\fP,
|
|
\fIIEEE1364\-2005\fP, \fIIEEE1800\-2005\fP, \fIIEEE1800\-2009\fP, or
|
|
\fIIEEE1800\-2012\fP.
|
|
Icarus Verilog currently defaults to the \fIIEEE1364\-2005\fP generation
|
|
of the language. This flag is used to restrict the language to a set of
|
|
keywords/features, this allows simulation of older Verilog code that may
|
|
use newer keywords and for compatibility with other tools. Much of the
|
|
\fIIEEE1800\fP generations functionality is not currently supported.
|
|
The \fIIEEE1800\fP generations do parse all the keywords, so they can
|
|
be used to verify that \fIIEEE1364\fP compliant Verilog code does not
|
|
use any of the new \fIIEEE1800\fP keywords.
|
|
.TP 8
|
|
.B -gverilog-ams\fI|\fP-gno-verilog-ams
|
|
Enable or disable (default) support for Verilog\-AMS.
|
|
Very little Verilog\-AMS specific functionality is currently supported.
|
|
.TP 8
|
|
.B -gspecify\fI|\fP-gno-specify
|
|
Enable or disable (default) specify block support. When enabled,
|
|
specify block code is elaborated. When disabled, specify blocks are
|
|
parsed but ignored. Specify blocks are commonly not needed for RTL
|
|
simulation, and in fact can hurt performance of the
|
|
simulation. However, disabling specify blocks reduces accuracy of
|
|
full-timing simulations.
|
|
.TP 8
|
|
.B -gstd-include\fI|\fP-gno-std-include
|
|
Enable (default) or disable the search of a standard installation
|
|
include directory after all other explicit include directories. This
|
|
standard include directory is a convenient place to install standard
|
|
header files that a Verilog program may include.
|
|
.TP 8
|
|
.B -grelative-include\fI|\fP-gno-relative-include
|
|
Enable or disable (default) adding the local files directory to
|
|
the beginning of the include file search path. This allows files
|
|
to be included relative to the current file not the more common
|
|
files are only found in the working directory or in the specified
|
|
include file search path.
|
|
.TP 8
|
|
.B -gxtypes\fI|\fP-gno-xtypes
|
|
Enable (default) or disable support for extended types. Enabling
|
|
extended types allows for new types that are supported by Icarus
|
|
Verilog as extensions beyond the baseline Verilog. It may be necessary
|
|
to disable extended types if compiling code that clashes with the few
|
|
new keywords used to implement the type system.
|
|
.TP 8
|
|
.B -gio-range-error\fI|\fP-gno-io-range-error
|
|
The standards requires that a vectored port have matching ranges for its
|
|
port declaration as well as any net/register declaration. It was common
|
|
practice in the past to only specify the range for the net/register
|
|
declaration and some tools still allow this. By default any mismatch is
|
|
reported as a error. Using \fB\-gno\-io\-range\-error\fP will produce a
|
|
warning instead of a fatal error for the case of a vectored net/register
|
|
and a scalar port declaration.
|
|
.TP 8
|
|
.B -gstrict-ca-eval\fI|\fP-gno-strict-ca-eval
|
|
The standard requires that if any input to a continuous assignment
|
|
expression changes value, the entire expression is re-evaluated. By
|
|
default, parts of the expression that do not depend on the changed
|
|
input value(s) are not re-evaluated. If an expression contains a call
|
|
to a function that doesn't depend solely on its input values or that
|
|
has side effects, the resulting behavior will differ from that
|
|
required by the standard. Using \fI\-gstrict\-ca\-eval\fP will force
|
|
standard compliant behavior (with some loss in performance).
|
|
.TP 8
|
|
.B -gstrict-expr-width\fI|\fP-gno-strict-expr-width
|
|
Enable or disable (default) strict compliance with the standard rules
|
|
for determining expression bit lengths. When disabled, the RHS of a
|
|
parameter assignment is evaluated as a lossless expression, as is any
|
|
expression containing an unsized constant number, and unsized constant
|
|
numbers are not truncated to integer width.
|
|
.TP 8
|
|
.B -gshared-loop-index\fI|\fP-gno-shared-loop-index
|
|
Enable (default) or disable the exclusion of for-loop control variables
|
|
from implicit event_expression lists. When enabled, if a for-loop control
|
|
variable (loop index) is only used inside the for-loop statement, the
|
|
compiler will not include it in an implicit event_expression list it
|
|
calculates for that statement or any enclosing statement. This allows
|
|
the same control variable to be used in multiple processes without risk
|
|
of entering an infinite loop caused by each process triggering all other
|
|
processes that use the same varaible. For strict compliance with the
|
|
standards, this behaviour should be disabled.
|
|
.TP 8
|
|
.B -I\fIincludedir\fP
|
|
Append directory \fIincludedir\fP to list of directories searched
|
|
for Verilog include files. The \fB\-I\fP switch may be used many times
|
|
to specify several directories to search, the directories are searched
|
|
in the order they appear on the command line.
|
|
.TP 8
|
|
.B -l\fIfile\fP
|
|
Add the specified file to the list of source files to be compiled,
|
|
but mark it as a library file. All modules contained within that
|
|
file will be treated as library modules, and only elaborated if
|
|
they are instantiated by other modules in the design.
|
|
.TP 8
|
|
.B -M\fIpath\fP
|
|
This is equivalent to \fB\-Mall=path\fP. Preserved for backwards
|
|
compatibility.
|
|
.TP 8
|
|
.B -M\fImode=path\fP
|
|
Write into the file specified by path a list of files that contribute to
|
|
the compilation of the design. If \fBmode\fP is \fBall\fP or \fBprefix\fP,
|
|
this includes files that are included by include directives and files
|
|
that are automatically loaded by library support as well as the files
|
|
explicitly specified by the user. If \fBmode\fP is \fBinclude\fP, only
|
|
files that are included by include directives are listed. If \fBmode\fP
|
|
is \fBmodule\fP, only files that are specified by the user or that are
|
|
automatically loaded by library support are listed. The output is one
|
|
file name per line, with no leading or trailing space. If \fBmode\fP
|
|
is \fBprefix\fP, files that are included by include directives are
|
|
prefixed by "I " and other files are prefixed by "M ".
|
|
.TP 8
|
|
.B -m\fImodule\fP
|
|
Add this module to the list of VPI modules to be loaded by the
|
|
simulation. Many modules can be specified, and all will be loaded, in
|
|
the order specified. The system module is implicit and always included.
|
|
If a System Function Table file (<module>.sft) exists for the module it
|
|
will be loaded automatically.
|
|
.TP 8
|
|
.B -N\fIpath\fP
|
|
This is used for debugging the compiler proper. Dump the final netlist
|
|
form of the design to the specified file. It otherwise does not affect
|
|
operation of the compiler. The dump happens after the design is
|
|
elaborated and optimized.
|
|
.TP 8
|
|
.B -o \fIfilename\fP
|
|
Place output in the file \fIfilename\fP. If no output file name is
|
|
specified, \fIiverilog\fP uses the default name \fBa.out\fP.
|
|
.TP 8
|
|
.B -p\fIflag=value\fP
|
|
Assign a value to a target specific flag. The \fB\-p\fP switch may be
|
|
used as often as necessary to specify all the desired flags. The flags
|
|
that are used depend on the target that is selected, and are described
|
|
in target specific documentation. Flags that are not used are ignored.
|
|
.TP 8
|
|
.B -S
|
|
Synthesize. Normally, if the target can accept behavioral
|
|
descriptions the compiler will leave processes in behavioral
|
|
form. The \fB\-S\fP switch causes the compiler to perform synthesis
|
|
even if it is not necessary for the target. If the target type is a
|
|
netlist format, the \fB\-S\fP switch is unnecessary and has no effect.
|
|
.TP 8
|
|
.B -s \fItopmodule\fP
|
|
Specify the top level module to elaborate. Icarus Verilog will by default
|
|
choose modules that are not instantiated in any other modules, but
|
|
sometimes that is not sufficient, or instantiates too many modules. If
|
|
the user specifies one or more root modules with \fB\-s\fP flags, then
|
|
they will be used as root modules instead.
|
|
.TP 8
|
|
.B -T\fImin|typ|max\fP
|
|
Use this switch to select min, typ or max times from min:typ:max
|
|
expressions. Normally, the compiler will simply use the typ value from
|
|
these expressions (printing a warning for the first ten it finds) but
|
|
this switch will tell the compiler explicitly which value to use. This
|
|
will suppress the warning that the compiler is making a choice.
|
|
.TP 8
|
|
.B -t\fItarget\fP
|
|
Use this switch to specify the target output format. See the
|
|
\fBTARGETS\fP section below for a list of valid output formats.
|
|
.TP 8
|
|
.B -u
|
|
Treat each source file as a separate compilation unit (as defined in
|
|
SystemVerilog). If compiling for an \fIIEEE1364\fP generation, this
|
|
will just reset all compiler directives (including macro definitions)
|
|
before each new file is processed.
|
|
.TP 8
|
|
.B -v
|
|
Turn on verbose messages. This will print the command lines that are
|
|
executed to perform the actual compilation, along with version
|
|
information from the various components, as well as the version of the
|
|
product as a whole. You will notice that the command lines include
|
|
a reference to a key temporary file that passes information to the
|
|
compiler proper. To keep that file from being deleted at the end
|
|
of the process, provide a file name of your own in the environment
|
|
variable \fBIVERILOG_ICONFIG\fP.
|
|
|
|
If the selected target is \fIvvp\fP, the \fB\-v\fP switch is appended
|
|
to the shebang line in the compiler output file, so directly executing
|
|
the compiler output file will turn on verbose messages in \fIvvp\fP.
|
|
This extra verbosity can be avoided by using the \fIvvp\fP command to
|
|
indirectly execute the compiler output file.
|
|
.TP 8
|
|
.B -V
|
|
Print the version of the compiler, and exit.
|
|
.TP 8
|
|
.B -W\fIclass\fP
|
|
Turn on different classes of warnings. See the \fBWARNING TYPES\fP
|
|
section below for descriptions of the different warning groups. If
|
|
multiple \fB\-W\fP switches are used, the warning set is the union of
|
|
all the requested classes.
|
|
.TP 8
|
|
.B -y\fIlibdir\fP
|
|
Append the directory to the library module search path. When the
|
|
compiler finds an undefined module, it looks in these directories for
|
|
files with the right name.
|
|
.TP 8
|
|
.B -Y\fIsuffix\fP
|
|
Add suffix to the list of accepted file name suffixes used when
|
|
searching a library for cells. The list defaults to the single
|
|
entry \fI.v\fP.
|
|
|
|
.SH MODULE LIBRARIES
|
|
|
|
The Icarus Verilog compiler supports module libraries as directories
|
|
that contain Verilog source files. During elaboration, the compiler
|
|
notices the instantiation of undefined module types. If the user
|
|
specifies library search directories, the compiler will search the
|
|
directory for files with the name of the missing module type. If it
|
|
finds such a file, it loads it as a Verilog source file, they tries
|
|
again to elaborate the module.
|
|
|
|
Library module files should contain only a single module, but this is
|
|
not a requirement. Library modules may reference other modules in the
|
|
library or in the main design.
|
|
|
|
.SH TARGETS
|
|
|
|
The Icarus Verilog compiler supports a variety of targets, for
|
|
different purposes, and the \fB\-t\fP switch is used to select the
|
|
desired target.
|
|
|
|
.TP 8
|
|
.B null
|
|
The null target causes no code to be generated. It is useful for
|
|
checking the syntax of the Verilog source.
|
|
.TP 8
|
|
.B vvp
|
|
This is the default. The vvp target generates code for the vvp
|
|
runtime. The output is a complete program that simulates the design
|
|
but must be run by the \fBvvp\fP command. The -pfileline=1 option
|
|
can be used to add procedural statement debugging opcodes to the
|
|
generated code.
|
|
.TP 8
|
|
.B fpga
|
|
This is a synthesis target that supports a variety of fpga devices,
|
|
mostly by EDIF format output. The Icarus Verilog fpga code generator
|
|
can generate complete designs or EDIF macros that can in turn be
|
|
imported into larger designs by other tools. The \fBfpga\fP target
|
|
implies the synthesis \fB\-S\fP flag.
|
|
.TP 8
|
|
.B vhdl
|
|
This target produces a VHDL translation of the Verilog netlist. The
|
|
output is a single file containing VHDL entities corresponding to
|
|
the modules in the Verilog source code. Note that only a subset of
|
|
the Verilog language is supported. See the wiki for more information.
|
|
|
|
.SH "WARNING TYPES"
|
|
These are the types of warnings that can be selected by the \fB\-W\fP
|
|
switch. All the warning types (other than \fBall\fP) can also be
|
|
prefixed with \fBno\-\fP to turn off that warning. This is most useful
|
|
after a \fB\-Wall\fP argument to suppress isolated warning types.
|
|
|
|
.TP 8
|
|
.B all
|
|
This enables the anachronisms, implicit, macro-replacement, portbind,
|
|
select\-range, timescale, and sensitivity\-entire\-array warning
|
|
categories.
|
|
|
|
.TP 8
|
|
.B anachronisms
|
|
This enables warnings for use of features that have been deprecated
|
|
or removed in the selected generation of the Verilog language.
|
|
|
|
.TP 8
|
|
.B implicit
|
|
This enables warnings for creation of implicit declarations. For
|
|
example, if a scalar wire X is used but not declared in the Verilog
|
|
source, this will print a warning at its first use.
|
|
|
|
.TP 8
|
|
.B macro-redefinition\fI | \fPmacro-replacement
|
|
This enables preprocessor warnings when a macro is being redefined.
|
|
The first variant prints a warning any time a macro is redefined.
|
|
The second variant only prints a warning if the macro text changes.
|
|
Use \fBno-macro-redefinition\fP to turn off all warnings of this type.
|
|
|
|
.TP 8
|
|
.B portbind
|
|
This enables warnings for ports of module instantiations that are not
|
|
connected but probably should be. Dangling input ports, for example,
|
|
will generate a warning.
|
|
|
|
.TP 8
|
|
.B select-range
|
|
This enables warnings for constant out of bound selects. This includes
|
|
partial or fully out of bound selects as well as a select containing
|
|
a 'bx or 'bz in the index.
|
|
|
|
.TP 8
|
|
.B timescale
|
|
This enables warnings for inconsistent use of the timescale
|
|
directive. It detects if some modules have no timescale, or if modules
|
|
inherit timescale from another file. Both probably mean that
|
|
timescales are inconsistent, and simulation timing can be confusing
|
|
and dependent on compilation order.
|
|
|
|
.TP 8
|
|
.B infloop
|
|
This enables warnings for \fRalways\fP statements that may have runtime
|
|
infinite loops (has paths with no or zero delay). This class of warnings
|
|
is not included in \fB\-Wall\fP and hence does not have a \fBno\-\fP variant.
|
|
A fatal error message will always be printed when the compiler can
|
|
determine that there will definitely be an infinite loop (all paths have
|
|
no or zero delay).
|
|
|
|
When you suspect an always statement is producing a runtime infinite loop
|
|
use this flag to find the always statements that need to have their logic
|
|
verified. It is expected that many of the warnings will be false
|
|
positives, since the code treats the value of all variables and signals
|
|
as indeterminate.
|
|
|
|
.TP 8
|
|
.B sensitivity-entire-vector
|
|
This enables warnings for when a part select within an "always @*"
|
|
statement results in the entire vector being added to the implicit
|
|
sensitivity list. Although this behaviour is prescribed by the IEEE
|
|
standard, it is not what might be expected and can have performance
|
|
implications if the vector is large.
|
|
|
|
.TP 8
|
|
.B sensitivity-entire-array
|
|
This enables warnings for when a word select within an "always @*"
|
|
statement results in the entire array being added to the implicit
|
|
sensitivity list. Although this behaviour is prescribed by the IEEE
|
|
standard, it is not what might be expected and can have performance
|
|
implications if the array is large.
|
|
|
|
.SH "SYSTEM FUNCTION TABLE FILES"
|
|
If the source file name as a \fB.sft\fP suffix, then it is taken to be
|
|
a system function table file. A System function table file is used to
|
|
describe to the compiler the return types for system functions. This
|
|
is necessary because the compiler needs this information to elaborate
|
|
expressions that contain these system functions, but cannot run the
|
|
sizetf functions since it has no run-time.
|
|
|
|
The format of the table is ASCII, one function per line. Empty lines
|
|
are ignored, and lines that start with the '\fI#\fP' character are
|
|
comment lines. Each non-comment line starts with the function name,
|
|
then the vpi type (i.e. vpiSysFuncReal). The following types are
|
|
supported:
|
|
|
|
.TP 8
|
|
.B vpiSysFuncReal
|
|
The function returns a real/realtime value.
|
|
|
|
.TP 8
|
|
.B vpiSysFuncInt
|
|
The function returns an integer.
|
|
|
|
.TP 8
|
|
.B vpiSysFuncSized <wid> <signed|unsigned>
|
|
The function returns a vector with the given width, and is signed or
|
|
unsigned according to the flag.
|
|
|
|
.TP 8
|
|
.B vpiSysFuncString
|
|
The function returns a string. This is an Icarus-specific extension, not
|
|
available in the VPI standard.
|
|
|
|
.SH "COMMAND FILES"
|
|
The command file allows the user to place source file names and
|
|
certain command line switches into a text file instead of on a long
|
|
command line. Command files can include C or C++ style comments, as
|
|
well as # comments, if the # starts the line.
|
|
|
|
.TP 8
|
|
.I "file name"
|
|
A simple file name or file path is taken to be the name of a Verilog
|
|
source file. The path starts with the first non-white-space
|
|
character. Variables are substituted in file names.
|
|
|
|
.TP 8
|
|
.B -c\ \fIcmdfile\fP -f\ \fIcmdfile\fP
|
|
A \fB\-c\fP or \fB\-f\fP token prefixes a command file, exactly like it
|
|
does on the command line. The cmdfile may be on the same line or the
|
|
next non-comment line.
|
|
|
|
.TP 8
|
|
.B -l\ \fIfile\fP -v\ \fIfile\fP
|
|
A \fB\-l\fP token prefixes a library file in the command file,
|
|
exactly like it does on the command line. The parameter to the \fB\-l\fP
|
|
flag may be on the same line or the next non-comment line. \fB\-v\fP is
|
|
an alias for \fB\-l\fP, provided for compatibility with other simulators.
|
|
|
|
Variables in the \fIfile\fP are substituted.
|
|
|
|
.TP 8
|
|
.B -y\ \fIlibdir\fP
|
|
A \fB\-y\fP token prefixes a library directory in the command file,
|
|
exactly like it does on the command line. The parameter to the \fB\-y\fP
|
|
flag may be on the same line or the next non-comment line.
|
|
|
|
Variables in the \fIlibdir\fP are substituted.
|
|
|
|
.TP 8
|
|
.B +incdir+\fIincludedir\fP
|
|
The \fB+incdir+\fP token in command files gives directories to search
|
|
for include files in much the same way that \fB\-I\fP flags work on the
|
|
command line. The difference is that multiple \fI+includedir\fP
|
|
directories are valid parameters to a single \fB+incdir+\fP token,
|
|
although you may also have multiple \fB+incdir+\fP lines.
|
|
|
|
Variables in the \fIincludedir\fP are substituted.
|
|
|
|
.TP 8
|
|
.B +libext+\fIext\fP
|
|
The \fB+libext\fP token in command files fives file extensions to try
|
|
when looking for a library file. This is useful in conjunction with
|
|
\fB\-y\fP flags to list suffixes to try in each directory before moving
|
|
on to the next library directory.
|
|
|
|
.TP 8
|
|
.B +libdir+\fIdir\fP
|
|
This is another way to specify library directories. See the \-y flag.
|
|
|
|
.TP 8
|
|
.B +libdir-nocase+\fIdir\fP
|
|
This is like the \fB+libdir\fP statement, but file names inside the
|
|
directories declared here are case insensitive. The missing module
|
|
name in a lookup need not match the file name case, as long as the
|
|
letters are correct. For example, "foo" matches "Foo.v" but not
|
|
"bar.v".
|
|
|
|
.TP 8
|
|
.B +define+\fINAME\fP=\fIvalue\fP
|
|
The \fB+define+\fP token is the same as the \fB\-D\fP option on the
|
|
command line. The value part of the token is optional.
|
|
|
|
.TP 8
|
|
.B +parameter+\fINAME\fP=\fIvalue\fP
|
|
The \fB+parameter+\fP token is the same as the \fB\-P\fP option on the
|
|
command line.
|
|
|
|
.TP 8
|
|
.B +timescale+\fIvalue\fP
|
|
The \fB+timescale+\fP token is used to set the default timescale for
|
|
the simulation. This is the time units and precision before any
|
|
`timescale directive or after a `resetall directive. The default is
|
|
1s/1s.
|
|
|
|
.TP 8
|
|
.B +toupper-filename
|
|
This token causes file names after this in the command file to be
|
|
translated to uppercase. This helps with situations where a directory
|
|
has passed through a DOS machine, and in the process the file names
|
|
become munged.
|
|
|
|
.TP 8
|
|
.B +tolower-filename
|
|
This is similar to the \fB+toupper\-filename\fP hack described above.
|
|
|
|
.TP 8
|
|
.B +integer-width+\fIvalue\fP
|
|
This allows the programmer to select the width for integer variables
|
|
in the Verilog source. The default is 32, the value can be any desired
|
|
integer value.
|
|
|
|
.TP 8
|
|
.B +width-cap+\fIvalue\fP
|
|
This allows the programmer to select the width cap for unsized expressions.
|
|
If the calculated width for an unsized expression exceeds this value, the
|
|
compiler will issue a warning and limit the expression width to this value.
|
|
|
|
.SH "VARIABLES IN COMMAND FILES"
|
|
|
|
In certain cases, iverilog supports variables in command files. These
|
|
are strings of the form "$(\fIvarname\fP)" or "${\fIvarname\fP}", where
|
|
\fIvarname\fP is the
|
|
name of the environment variable to read. The entire string is
|
|
replaced with the contents of that variable. Variables are only
|
|
substituted in contexts that explicitly support them, including file
|
|
and directory strings.
|
|
|
|
Variable values come from the operating system environment, and not
|
|
from preprocessor defines elsewhere in the file or the command line.
|
|
|
|
.SH PREDEFINED MACROS
|
|
|
|
The following macros are predefined by the compiler:
|
|
.TP 8
|
|
.B __ICARUS__ = 1
|
|
This is always defined when compiling with Icarus Verilog.
|
|
|
|
.TP 8
|
|
.B __VAMS_ENABLE__ = 1
|
|
This is defined if Verilog\-AMS is enabled.
|
|
|
|
.SH EXAMPLES
|
|
These examples assume that you have a Verilog source file called hello.v in
|
|
the current directory
|
|
|
|
To compile hello.v to an executable file called a.out:
|
|
|
|
iverilog hello.v
|
|
|
|
To compile hello.v to an executable file called hello:
|
|
|
|
iverilog \-o hello hello.v
|
|
|
|
To compile and run explicitly using the vvp runtime:
|
|
|
|
iverilog \-ohello.vvp \-tvvp hello.v
|
|
|
|
.SH "AUTHOR"
|
|
.nf
|
|
Steve Williams (steve@icarus.com)
|
|
|
|
.SH SEE ALSO
|
|
vvp(1),
|
|
.BR "<http://iverilog.icarus.com/>"
|
|
|
|
Tips on using, debugging, and developing the compiler can be found at
|
|
.BR "<http://iverilog.wikia.com/>"
|
|
|
|
.SH COPYRIGHT
|
|
.nf
|
|
Copyright \(co 2002\-2017 Stephen Williams
|
|
|
|
This document can be freely redistributed according to the terms of the
|
|
GNU General Public License version 2.0
|