Document the predefined __ICARUS__ macro
[iverilog.git] / iverilog-vpi.man
blobf49af2d7f12c713ba62166c23253d721ba32c910
1 .TH iverilog-vpi 1 "$Date: 2004/10/04 01:10:53 $" Version "$Date: 2004/10/04 01:10:53 $"
2 .SH NAME
3 iverilog-vpi - Compile front end for VPI modules
5 .SH SYNOPSIS
6 .B iverilog-vpi
7 [--name=\fIname\fP]
8 \fIsourcefile\fP...
10 .SH DESCRIPTION
11 .PP
12 \fIiverilog-vpi\fP is a tool to simplify the compilation of VPI
13 modules for use with Icarus Verilog. It takes on the command line a
14 list of C or C++ source files, and generates as output a linked VPI
15 module. See the \fBvvp\fP(1) man page for a description of how the
16 linked module is loaded by a simulation.
18 The output is named after the first source file. For example, if the
19 first source file is named \fIfoo.c\fP, the output becomes
20 \fIfoo.vpi\fP.
22 .SH OPTIONS
24 \fIiverilog-vpi\fP accepts the following options:
25 .TP 8
26 .B -l\fIlibrary\fP
27 Include the named library in the link of the VPI module. This allows
28 VPI modules to further reference external libraries.
30 .TP 8
31 .B --name=\fIname\fP
32 Normally, the output VPI module will be named after the first source
33 file passed to the command. This flag sets the name (without the .vpi
34 suffix) of the output vpi module.
36 .TP 8
37 .B --install-dir
38 This flag causes the program to print the install directory for VPI
39 modules, then exit. It is a convenience for makefiles or automated
40 plug-in installers.
42 .SH "PC-ONLY OPTIONS"
44 The PC port of \fIiverilog-vpi\fP includes two special flags needed to
45 support the more intractable development environment. These flags help
46 the program locate parts that it needs.
48 .TP 8
49 .B -mingw=\fIpath\fP
50 Tell the program the root of the Mingw compiler tool suite. The
51 \fBvvp\fP runtime is compiled with this compiler, and this is the
52 compiler that \fIiverilog-vpi\fP expects to use to compile your source
53 code. This is normally not needed, and if you do use it, it is only
54 needed once. The compiler will save the \fIpath\fP in the registry for
55 use later.
57 .TP 8
58 .B -ivl=\fIpath\fP
59 Set for the use during compilation the root if the Icarus Verilog
60 install. This is the place where you installed Icarus Verilog when you
61 ran the installer. This flag is also only needed once, and the path is
62 stored in the registry for future use.
64 .SH "UNIX-ONLY OPTIONS"
66 The UNIX version of \fIiverilog-vpi\fP includes additional flags to
67 let Makefile gurus peek at the configuration of the \fIiverilog\fP
68 installation.  This way, Makefiles can be written that handle complex VPI
69 builds natively, and without hard-coding values that depend on the
70 system and installation.  If used at all, these options must be
71 used one at a time, and without any other options or directives.
73 .TP 8
74 .B --cflags
75 Print the compiler flags (CFLAGS or CXXFLAGS) needed to compile source
76 code destined for a VPI module.
78 .TP 8
79 .B --ldflags
80 Print the linker flags (LDFLAGS) needed to link a VPI module.
82 .TP 8
83 .B --ldlibs
84 Print the libraries (LDLIBS) needed to link a VPI module.
86 .TP 8
87 .B -m32
88 On 64bit systems that support it (and support vvp32) this flag
89 requests a 32bit vpi binary instead of the default 64bit binary.
92 Example GNU makefile that takes advantage of these flags:
93 .IP "" 4
94 CFLAGS = -Wall -O $(CFLAGS_$@)
95 .br
96 VPI_CFLAGS := $(shell iverilog-vpi --cflags)
97 .br
98 CFLAGS_messagev.o = $(VPI_CFLAGS)
99 .br
100 CFLAGS_fifo.o = $(VPI_CFLAGS)
102 messagev.o fifo.o: transport.h
104 messagev.vpi: messagev.o fifo.o
106         iverilog-vpi $^
108 .SH "AUTHOR"
110 Steve Williams (steve@icarus.com)
112 .SH SEE ALSO
113 iverilog(1), vvp(1),
114 .BR "<http://www.icarus.com/eda/verilog/>",
115 .BR "<http://www.mingw.org>",
117 .SH COPYRIGHT
119 Copyright \(co  2002 Stephen Williams
121 This document can be freely redistributed according to the terms of the
122 GNU General Public License version 2.0