verilator/README.pod

215 lines
7.1 KiB
Plaintext
Raw Normal View History

# DESCRIPTION: DOCUMENT source run through perl to produce README file
# Use 'make README' to produce the output file
=pod
=head1 NAME
2015-03-14 17:45:00 +00:00
This is the Verilator package README file.
=head1 DISTRIBUTION
2015-03-14 17:45:00 +00:00
http://www.veripool.org/verilator
2019-01-04 00:17:22 +00:00
This package is Copyright 2003-2019 by Wilson Snyder. (Report bugs to
L<http://www.veripool.org/>.)
Verilator is free software; you can redistribute it and/or modify it under
the terms of either the GNU Lesser General Public License Version 3 or the
Perl Artistic License Version 2.0. (See the documentation for more
details.)
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details.
=head1 DESCRIPTION
2013-05-24 23:09:41 +00:00
Verilator converts synthesizable (generally not behavioral) Verilog code
into C++ or SystemC code. It is not a complete simulator, just a
translator.
Verilator is invoked with parameters similar to GCC or Synopsys's VCS. It
reads the specified Verilog code, lints it, and optionally adds coverage
code. For C++ format, it outputs .cpp and .h files. For SystemC format,
2013-05-24 23:09:41 +00:00
it outputs .cpp and .h files using the standard SystemC headers.
The resulting files are then compiled with C++. The user writes a little
C++ wrapper file, which instantiates the top level module. This is
compiled in C++, and linked with the Verilated files.
The resulting executable will perform the actual simulation.
=head1 SUPPORTED SYSTEMS
2013-05-24 23:09:41 +00:00
Verilator is developed and has primary testing on Ubuntu. Versions have
also built on Redhat Linux, Macs OS-X, HPUX and Solaris. It should run
with minor porting on any Linix-ish platform. Verilator also works on
Windows under Cygwin, and Windows under MinGW (gcc -mno-cygwin). Verilated
output (not Verilator itself) compiles under MSVC++ 2008 and newer.
=head1 INSTALLATION
2017-09-11 23:18:58 +00:00
For more details see
L<http://www.veripool.org/projects/verilator/wiki/Installing>.
If you will be modifying Verilator, you should use the "git" method as it
will let you track changes.
=over 4
=item
The latest version is available at L<http://www.veripool.org/verilator>.
Download the latest package from that site, and decompress.
tar xvzf verilator_version.tgz
=item
If you will be using SystemC (vs straight C++ output), download SystemC
2013-05-24 23:09:41 +00:00
from L<http://www.systemc.org>. Follow their installation instructions.
You will need to set SYSTEMC_INCLUDE to point to the include directory with
systemc.h in it, and SYSTEMC_LIBDIR to points to the directory with
libsystemc.a in it. (Older installations may set SYSTEMC and SYSTEMC_ARCH
instead.)
=item
2018-08-30 22:51:02 +00:00
To use Verilator you will need the C<perl>, C<make> (or C<gmake>), and
C<g++> (or C<clang>) packages.
To use Verilator FST tracing you will need the C<gtkwave> and C<libgz> (on
2018-08-30 22:51:02 +00:00
Ubuntu C<zlibc> C<zlib1g> C<zlib1g-dev>) packages installed.
To compile Verilator in addition to the above you need the C<flex>,
C<bison> and C<texi2html> packages installed.
2011-10-05 21:06:08 +00:00
=item
C<cd> to the Verilator directory containing this README.
=item
You now have to decide how you're going to eventually install the kit.
2012-01-20 01:30:41 +00:00
Note Verilator builds the current value of VERILATOR_ROOT, SYSTEMC_INCLUDE,
2014-11-27 13:30:54 +00:00
and SYSTEMC_LIBDIR as defaults into the executable, so try to have them
correct before configuring.
2010-12-07 14:30:52 +00:00
=over 4
=item 1.
Our personal favorite is to always run Verilator from the kit directory.
This allows the easiest experimentation and upgrading. It's also how most
2013-05-24 23:09:41 +00:00
EDA tools operate; to run you point to the tarball, no install is needed.
export VERILATOR_ROOT=`pwd` # if your shell is bash
setenv VERILATOR_ROOT `pwd` # if your shell is csh
./configure
2010-12-07 14:30:52 +00:00
=item 2.
To install globally onto a "cad" disk with multiple versions of every tool,
and add it to path using Modules/modulecmd:
unset VERILATOR_ROOT # if your shell is bash
unsetenv VERILATOR_ROOT # if your shell is csh
# For the tarball, use the version number instead of git describe
./configure --prefix /CAD_DISK/verilator/`git describe | sed "s/verilator_//"`
After installing you'll want a module file like the following:
set install_root /CAD_DISK/verilator/{version-number-used-above}
2015-09-04 01:20:19 +00:00
unsetenv VERILATOR_ROOT
2010-12-07 14:30:52 +00:00
prepend-path PATH $install_root/bin
prepend-path MANPATH $install_root/man
2015-09-04 01:20:19 +00:00
prepend-path PKG_CONFIG_PATH $install_root/share/pkgconfig
2010-12-07 14:30:52 +00:00
=item 3.
The next option is to install it globally, using the normal system paths:
unset VERILATOR_ROOT # if your shell is bash
unsetenv VERILATOR_ROOT # if your shell is csh
./configure
2010-12-07 14:30:52 +00:00
=item 4.
Alternatively you can configure a prefix that install will populate, as
most GNU tools support:
unset VERILATOR_ROOT # if your shell is bash
unsetenv VERILATOR_ROOT # if your shell is csh
./configure --prefix /opt/verilator-VERSION
Then after installing you will need to add /opt/verilator-VERSION/bin to
PATH.
2010-12-07 14:30:52 +00:00
=back
=item
Type C<make> to compile Verilator.
2013-05-24 23:09:41 +00:00
Type C<make test> to check the compilation.
2013-05-24 23:09:41 +00:00
Configure with C<--enable-longtests> for more complete developer tests.
Additional packages may be required for these tests.
You may get a error about a typedef conflict for uint32_t. Edit
verilated.h to change the typedef to work, probably to @samp{typedef
unsigned long uint32_t;}.
=item
2010-09-25 11:59:18 +00:00
If you used the VERILATOR_ROOT scheme you're done. Programs should set the
environment variable VERILATOR_ROOT to point to this distribution, then
execute $VERILATOR_ROOT/bin/verilator, which will find the path to all
needed files.
2010-09-25 11:59:18 +00:00
If you used the prefix scheme, now do a C<make install>. To run verilator,
have the verilator binary directory in your PATH (this should already be
true if using the default configure), and make sure VERILATOR_ROOT is not
set.
You may now wish to consult the examples directory. Type C<make> inside any
example directory to run the example.
=back
=head1 USAGE DOCUMENTATION
Detailed documentation and the man page can be seen by running:
bin/verilator --help
2019-06-13 11:19:44 +00:00
or reading verilator.pdf in the same directory as this README.
=head1 DIRECTORY STRUCTURE
2010-02-07 00:56:14 +00:00
The directories in the kit after de-taring are as follows:
2010-02-07 00:56:14 +00:00
bin/verilator => Compiler Wrapper invoked to Verilate code
2019-06-13 11:19:44 +00:00
docs/ => Additional documentation
examples/hello_world_c => Example simple Verilog->C++ conversion
examples/hello_world_sc => Example simple Verilog->SystemC conversion
examples/tracing_c => Example Verilog->C++ with tracing
examples/tracing_sc => Example Verilog->SystemC with tracing
include/ => Files that should be in your -I compiler path
2010-02-07 00:56:14 +00:00
include/verilated*.cpp => Global routines to link into your simulator
2013-05-24 23:09:41 +00:00
include/verilated*.h => Global headers
include/verilated.mk => Common makefile
2019-06-13 11:19:44 +00:00
include/verilated.v => Stub defines for linting
src/ => Translator source code
test_regress => Internal tests
2019-06-13 11:19:44 +00:00
verilator.pdf => Primary documentation
verilator.txt => Primary documentation (text)
=head1 LIMITATIONS
2019-06-13 11:19:44 +00:00
See verilator.pdf (or execute C<bin/verilator --help>) for limitations.