mirror of
https://github.com/verilator/verilator.git
synced 2025-01-03 21:27:35 +00:00
ce10dbd11c
git-svn-id: file://localhost/svn/verilator/trunk/verilator@753 77ca24e4-aefa-0310-84f0-b9a241c72d87
189 lines
6.3 KiB
Plaintext
189 lines
6.3 KiB
Plaintext
\input texinfo @c -*-texinfo-*-
|
|
@c %**start of header
|
|
$c $Id$
|
|
@setfilename readme.info
|
|
@settitle Verilator Installation
|
|
@c %**end of header
|
|
|
|
@c DESCRIPTION: TexInfo: DOCUMENT source run through texinfo to produce README file
|
|
@c Use 'make README' to produce the output file
|
|
@c Before release, run C-u C-c C-u C-a (texinfo-all-menus-update)
|
|
|
|
@node Top, Copyright, (dir), (dir)
|
|
@chapter Verilator
|
|
|
|
This is the Verilator Package.
|
|
|
|
@menu
|
|
* Copyright::
|
|
* Description::
|
|
* Obtaining Distribution::
|
|
* Directory Structure::
|
|
* Supported Systems::
|
|
* Installation::
|
|
* Limitations::
|
|
@end menu
|
|
|
|
@node Copyright, Description, Top, Top
|
|
@section Copyright
|
|
|
|
This package is Copyright 2003-2006 by Wilson Snyder @email{wsnyder@@wsnyder.org}.
|
|
|
|
You may distribute under the terms of either the GNU General Public License
|
|
or the Artistic License, as specified in the Perl README file.
|
|
|
|
This code is provided with no warranty of any kind, and is used entirely at
|
|
your own risk.
|
|
|
|
@node Description, Obtaining Distribution, Copyright, Top
|
|
@section Description
|
|
|
|
Verilator converts synthesizable (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,
|
|
it outputs .sp files for the SystemPerl preprocessor available at
|
|
http://veripool.com.
|
|
|
|
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.
|
|
|
|
@node Obtaining Distribution, Directory Structure, Description, Top
|
|
@section Obtaining Distribution
|
|
|
|
The latest version is available at
|
|
@uref{http://veripool.com/verilator.htm}
|
|
|
|
Download the latest package from that site, and decompress.
|
|
@samp{gunzip verilator_version.tar.gz ; tar xvf verilator_version.tar}
|
|
|
|
@node Directory Structure, Supported Systems, Obtaining Distribution, Top
|
|
@section Directory Structure
|
|
|
|
The directories after de-taring are as follows:
|
|
|
|
@itemize @bullet
|
|
@item bin/verilator => Compiler Wrapper invoked on user Verilog code
|
|
@item include/ => Files that should be in your -I compiler path
|
|
@item include/verilated.cpp => Global routines to link into your simulator
|
|
@item include/verilated.h => Global headers
|
|
@item include/verilated.v => Stub defines for linting
|
|
@item include/verilated.mk => Common makefile
|
|
@item src/ => Translator source code
|
|
@item test_v => Example Verilog code for other test dirs
|
|
@item test_c => Example Verilog->C++ conversion
|
|
@item test_sc => Example Verilog->SystemC conversion
|
|
@item test_sp => Example Verilog->SystemPerl conversion
|
|
@item test_vcs => Example Verilog->VCS conversion (test the test)
|
|
@item test_verilated => Internal tests
|
|
@item test_regress => Internal tests
|
|
@end itemize
|
|
|
|
@node Supported Systems, Installation, Directory Structure, Top
|
|
@section Supported Systems
|
|
|
|
This version of verilator has been built and tested on:
|
|
|
|
@itemize @bullet
|
|
@item SuSE AMD64 i686-linux-2.6.5
|
|
@end itemize
|
|
|
|
Other users report success with Redhat Linux 2.4, Windows under
|
|
Cygwin, HPUX and Solaris. It should run with minor porting on any
|
|
Unix system.
|
|
|
|
@node Installation, Limitations, Supported Systems, Top
|
|
@section Installation
|
|
|
|
@enumerate
|
|
@item
|
|
If you will be using SystemC (vs straight C++ output), download
|
|
SystemC 2.0.1 from @url{http://www.systemc.org}. Follow their
|
|
installation instructions. As described in the System-Perl README,
|
|
you will need to set SYSTEMC and/or SYSTEMC_KIT to point to this
|
|
download. Also, set SYSTEMC_ARCH to the architecture name you used
|
|
with SystemC, generally 'linux' or 'cygwin'.
|
|
|
|
@item
|
|
If you will be using SystemC, download and install Verilog-Perl,
|
|
@url{http://search.cpan.org/search?module=Verilog::Language}.
|
|
|
|
@item
|
|
If you will be using SystemC, download and install System-Perl,
|
|
@url{http://search.cpan.org/search?module=SystemC::Netlist}. Note
|
|
you'll need to set a @samp{SYSTEMPERL} environment variable to point
|
|
to the downloaded kit (not the installed files.) Also, make sure to
|
|
do a @code{make sc_patch}.
|
|
|
|
@item
|
|
@code{cd} to the Verilator directory containing this README.
|
|
|
|
@item
|
|
Type @samp{./configure} to configure Verilator for your system.
|
|
|
|
@item
|
|
Type @samp{make} to compile Verilator.
|
|
|
|
On Cygwin (Windows) you may get a error about libperl.a not being
|
|
found. You need to copy your perl libraries as follows.
|
|
|
|
@enumerate
|
|
@item
|
|
Type @samp{perl -MExtUtils::Embed -e ldopts}
|
|
@item
|
|
It will show a directory name ending in /CORE. cd to that directory.
|
|
@item
|
|
@samp{cp libperl5_6_1.a libperl.a}
|
|
@item
|
|
@samp{cp libperl5_6_1.dll libperl.dll}
|
|
@item
|
|
@samp{cp libperl5_6_1.def libperl.def}
|
|
@end enumerate
|
|
|
|
@item
|
|
Type @samp{make test} to check the compilation.
|
|
|
|
You may get a error about the Bit::Vector perl package. You will need to install
|
|
it if you want the tests to pass. (Try @samp{make test_c} for a smaller test that
|
|
doesn't require it.)
|
|
|
|
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;}.
|
|
|
|
If you get warnings, you might want to edit @samp{include/verilated.mk} to delete the
|
|
lines that define VK_CPPFLAGS_WALL.
|
|
|
|
@item
|
|
|
|
There is no installation at present; this package runs from the
|
|
distribution directory. 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.
|
|
|
|
Verilator assumes you did a make in the SystemC kit directory. If not, you will need
|
|
to populate @samp{$SYSTEMC/include} and @samp{$SYSTEMC/lib-linux} appropriately.
|
|
|
|
If you will be modifying Verilator, you will probably want a second
|
|
stable copy of this kit for others to use while you experiment.
|
|
|
|
@item
|
|
Detailed documentation and the man page can be seen by running:
|
|
|
|
bin/verilator --help
|
|
|
|
or reading verilator.txt in the same directory as this README.
|
|
|
|
@end enumerate
|
|
|
|
@node Limitations, , Installation, Top
|
|
@section Limitations
|
|
|
|
See verilator.txt (or execute @samp{bin/verilator --help}) for limitations.
|
|
|