diff --git a/README.pod b/README.pod index af00f2539..c522fdf5b 100644 --- a/README.pod +++ b/README.pod @@ -5,30 +5,15 @@ =head1 NAME -This is the Verilator package README file. +Welcome to Verilator. This is the Verilator package's README file. -=head1 DISTRIBUTION - -http://www.veripool.org/verilator - -This package is Copyright 2003-2019 by Wilson Snyder. (Report bugs to -L.) - -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. +This document describes how to initially install Verilator. For more +general information see L. =head1 DESCRIPTION -Verilator converts synthesizable (generally not behavioral) Verilog code -into C++ or SystemC code. It is not a complete simulator, just a -translator. +Verilator is a simulator which "Verilates" synthesizable (generally not +behavioral) Verilog code into "Verilated" C++ or SystemC code. Verilator is invoked with parameters similar to GCC or Synopsys's VCS. It reads the specified Verilog code, lints it, and optionally adds coverage @@ -47,25 +32,74 @@ 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. +output (not Verilator itself) compiles under all the options above, plus +MSVC++ 2008 and newer. =head1 INSTALLATION -For more details see +For a summary see L. -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. +Obtain binary or sources: -Download the latest package from that site, and decompress. +There are three methods to obtain Verilator, a prebuilt binary as part of +your Linux distribution, via git, or using a tarball. If you will be +modifying Verilator, you should use the "git" method as it will let you +track changes and hopefully contribute in the future. - tar xvzf verilator_version.tgz +=over 4 + +=item + +Prebuilt binary: + +You may install a binary on Ubuntu or other distributions using a package +manager. This is unlikely to be the most recent version. + + apt-get install verilator + +You may now skip the remaining installation steps. + +=item + +Git: + +Get the sources from the repository. + + git clone http://git.veripool.org/git/verilator # Only first time + ## Note the URL above is not a page you can see with a browser, it's for git only + +=item + +Tarball: + +Get a recent tarball package from L. +Click the "Download" tab, scroll down to the latest package +(i.e. verilator-#.###.tgz), download it, and decompress with: + + tar xvzf verilator_#-###.tgz + +=back + +=item + +Install prerequisites: + +=over 4 + +=item + +To use Verilator you will need the C, C (or C), and +C (or C) packages. To compile Verilator in addition to the above you need the C, +C and C packages installed. + + sudo apt-get install git make autoconf g++ flex bisonz # First time prerequisites + sudo apt-get install libgz # Non-Ubuntu (ignore if gives error) + sudo apt-get install libfl2 libfl-dev zlibc zlib1g zlib1g-dev # Ubuntu only (ignore if gives error) =item @@ -78,22 +112,32 @@ instead.) =item -To use Verilator you will need the C, C (or C), and -C (or C) packages. - -To use Verilator FST tracing you will need the C and C (on +To use Verilator FST tracing you will need the C and C (and on Ubuntu C C C) packages installed. -To compile Verilator in addition to the above you need the C, -C and C packages installed. +=back =item -C to the Verilator directory containing this README. +Prepare for building: + + cd verilator # Needed if not already in the package + unsetenv VERILATOR_ROOT # For csh; ignore error if on bash + unset VERILATOR_ROOT # For bash; ignore error if on bash + # If using git: + git pull # Make sure we're up-to-date + git tag # See what versions exist + #git checkout master # Use development branch (e.g. recent bug fix) + #git checkout stable # Use most recent release + #git checkout v{version} # Switch to specified release version + # + autoconf # Create ./configure script =item -You now have to decide how you're going to eventually install the kit. +Installation Choices + +You have to decide how you're going to eventually install the kit. Note Verilator builds the current value of VERILATOR_ROOT, SYSTEMC_INCLUDE, and SYSTEMC_LIBDIR as defaults into the executable, so try to have them @@ -103,25 +147,32 @@ correct before configuring. =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 -EDA tools operate; to run you point to the tarball, no install is needed. +Our personal favorite is to always run Verilator from its git directory. +This allows the easiest experimentation and upgrading, and allows many +versions of Verilator to co-exist on a system. To run you point to the +program's files, no install is needed. export VERILATOR_ROOT=`pwd` # if your shell is bash setenv VERILATOR_ROOT `pwd` # if your shell is csh ./configure +Note after installing (below steps), a calling program should set the +environment variable VERILATOR_ROOT to point to this git directory, then +execute $VERILATOR_ROOT/bin/verilator, which will find the path to all +needed files. + =item 2. -To install globally onto a "cad" disk with multiple versions of every tool, -and add it to path using Modules/modulecmd: +You may eventually be instaling onto a project/company-wide "CAD" tools +disk that may support multiple versions of every tool. 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: +Note after installing (below steps), if you use C, you'll want a +module file like the following: set install_root /CAD_DISK/verilator/{version-number-used-above} unsetenv VERILATOR_ROOT @@ -131,50 +182,49 @@ and add it to path using Modules/modulecmd: =item 3. -The next option is to install it globally, using the normal system paths: +The next option is to eventually 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 +Then after installing (below) the binary directories should already be in +your PATH. + =item 4. -Alternatively you can configure a prefix that install will populate, as -most GNU tools support: +Finally, you may eventually install it into a specific installation prefix, +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 +Then after installing (below steps) you will need to add /opt/verilator-VERSION/bin to PATH. =back +Note all of the options above did: + + ./configure ... some options ... + +Add to this line C<--enable-longtests> for more complete developer tests. +Additional packages may be required for these tests. + =item Type C to compile Verilator. +=item + Type C to check the compilation. -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 -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. +If you used the prefix scheme, now do a C. -If you used the prefix scheme, now do a C. 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. +=item You may now wish to consult the examples directory. Type C inside any example directory to run the example. @@ -189,10 +239,14 @@ Detailed documentation and the man page can be seen by running: or reading verilator.pdf in the same directory as this README. -=head1 DIRECTORY STRUCTURE +or see L (which is the most +recent version and thus may differ in some respects from the version you installed). -The directories in the kit after de-taring are as follows: +=head1 PACKAGE DIRECTORY STRUCTURE +The directories in the package directory are as follows: + + Changes => Version history bin/verilator => Compiler Wrapper invoked to Verilate code docs/ => Additional documentation examples/hello_world_c => Example simple Verilog->C++ conversion @@ -202,13 +256,26 @@ The directories in the kit after de-taring are as follows: include/ => Files that should be in your -I compiler path include/verilated*.cpp => Global routines to link into your simulator include/verilated*.h => Global headers - include/verilated.mk => Common makefile + include/verilated.mk => Common Makefile include/verilated.v => Stub defines for linting src/ => Translator source code test_regress => Internal tests verilator.pdf => Primary documentation verilator.txt => Primary documentation (text) -=head1 LIMITATIONS +For files created after Verilation, see the manual. -See verilator.pdf (or execute C) for limitations. +=head1 DISTRIBUTION + +This package is Copyright 2003-2019 by Wilson Snyder. (Report bugs to +L.) + +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.