This commit is contained in:
steve 1999-07-08 02:06:47 +00:00
parent a5edb959bb
commit 32ad8607ac
1 changed files with 30 additions and 8 deletions

View File

@ -1,5 +1,5 @@
THE ICARUS VERILOG COMPILATION SYSTEM THE ICARUS VERILOG COMPILATION SYSTEM
May 9, 1999 July 7, 1999
1.0 What is ICARUS Verilog(IVL)? 1.0 What is ICARUS Verilog(IVL)?
@ -23,7 +23,14 @@ forms, then passed to a code generator for final output. The
processing steps and the code generator are selected by command line processing steps and the code generator are selected by command line
switches. switches.
2.1 Parse 2.1 Preprocessing
There is a separate program, ivlpp, that does the preprocessing. This
program implements the `include and `define directives producing
output that is equivalent but without the directives. See
ivlpp/ivlpp.txt for details.
2.2 Parse
The verilog compiler starts by parsing the verilog source file. The The verilog compiler starts by parsing the verilog source file. The
output of the parse in a list of Module objects in PFORM. The pform output of the parse in a list of Module objects in PFORM. The pform
@ -35,7 +42,7 @@ One can see a human readable version of the final PFORM by using the
``-P <path>'' flag to the compiler. This will cause ivl to dump the ``-P <path>'' flag to the compiler. This will cause ivl to dump the
PFORM into the file named <path>. PFORM into the file named <path>.
2.2 Elaboration 2.3 Elaboration
This phase takes the pform and generates a netlist. The driver selects This phase takes the pform and generates a netlist. The driver selects
(by user request or lucky guess) the root module to elaborate, (by user request or lucky guess) the root module to elaborate,
@ -49,7 +56,7 @@ optimized netlist by using the ``-N <path>'' flag to the compiler. If
elaboration succeeds, the final netlist (i.e. after optimizations but elaboration succeeds, the final netlist (i.e. after optimizations but
before code generation) will be dumped into the file named <path>. before code generation) will be dumped into the file named <path>.
2.3 Optimization 2.4 Optimization
This is actually a collection of processing steps that perform This is actually a collection of processing steps that perform
optimizations that do not depend on the target technology. Examples of optimizations that do not depend on the target technology. Examples of
@ -62,7 +69,7 @@ some useful transformations would be,
The actual functions performed are specified on the command line by The actual functions performed are specified on the command line by
the -F flags (See below). the -F flags (See below).
2.4 Code Generation 2.5 Code Generation
This step takes the design netlist and uses it to drive the code This step takes the design netlist and uses it to drive the code
generator. (See target.h.) This may require transforming the generator. (See target.h.) This may require transforming the
@ -248,8 +255,6 @@ verilog features.
- Min/Typ/Max expressions: Example: a = (1 : 6 : 14); - Min/Typ/Max expressions: Example: a = (1 : 6 : 14);
- The "!==" operator: Example: if( a !== b) do = 1;
- Expansion of a string into a larger variable: - Expansion of a string into a larger variable:
Example: reg [0:15] b; b = "b"; Example: reg [0:15] b; b = "b";
@ -268,7 +273,7 @@ verilog features.
- `timescale directive - `timescale directive
- Task declarations/calls. - Task declarations/calls that take paramters. (Parameterless calls work.)
- Specify blocks - Specify blocks
@ -277,3 +282,20 @@ verilog features.
Note that binding to a port by name does work from the outside. Note that binding to a port by name does work from the outside.
i.e. ``foo foogate(.x(n[0]))'' is OK. i.e. ``foo foogate(.x(n[0]))'' is OK.
6.0 CREDITS
Except where otherwise noted, ivl and ivlpp are Copyright Stephen
Williams. The proper notices are in the head of each file. However,
I have received aid in the form of fixes, Verilog guidance, and
especially testing from many people, including (in alphabetical order):
Ed Carter <r47652@email.sps.mot.com>
Ales Hvezda <ahvezda@seul.org>
James Lee <jml@seva.com>
Stuart Sutherland <stuart@sutherland.com>
Stefan Theide <Stefan.Thiede@sv.sc.philips.com>
Steve Wilson <stevew@home.com>
and others. Testers in particular include a larger community of people
interested in a GPL Verilog for Linux.