credits.
This commit is contained in:
parent
a5edb959bb
commit
32ad8607ac
38
README.txt
38
README.txt
|
|
@ -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.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue