Current reality of what is supported.
This commit is contained in:
parent
3d85c66b02
commit
6f9cc57e70
53
README.txt
53
README.txt
|
|
@ -10,14 +10,15 @@ currently handle a mix of structural and behavioral constructs. For a
|
|||
view of the current state of Icarus Verilog, see its home page at
|
||||
<http://www.icarus.com/eda/verilog>.
|
||||
|
||||
IVL is not aimed at being a simulator in the traditional sense, but a
|
||||
compiler that generates code employed by back-end tools. These back-
|
||||
end tools currently include a simulator written in C++ called VVM
|
||||
and an XNF (Xilinx Netlist Format) generator. See "vvm.txt" and
|
||||
"xnf.txt" for further details on these back-end processors. In the
|
||||
future, backends are expected for EDIF/LPM, structural Verilog, etc.
|
||||
Icarus Verilog is not aimed at being a simulator in the traditional
|
||||
sense, but a compiler that generates code employed by back-end
|
||||
tools. These back- end tools currently include a simulator written in
|
||||
C++ called VVM and an XNF (Xilinx Netlist Format) generator. See
|
||||
"vvm.txt" and "xnf.txt" for further details on these back-end
|
||||
processors. In the future, backends are expected for EDIF/LPM,
|
||||
structural Verilog, etc.
|
||||
|
||||
2.0 Building/Installing IVL From Source
|
||||
2.0 Building/Installing Icarus Verilog From Source
|
||||
|
||||
If you are starting from source, the build process is designed to be
|
||||
as simple as practical. Someone basically familiar with the target
|
||||
|
|
@ -36,9 +37,9 @@ on a UNIX-like system:
|
|||
satisfactory make.
|
||||
|
||||
- ISO C++ Compiler
|
||||
The ivl program is written in C++ and makes use of templates
|
||||
and some of the standard C++ library. egcs compilers with
|
||||
the associated libstdc++ are known to work.
|
||||
The ivl and ivlpp programs are written in C++ and makes use
|
||||
of templates and some of the standard C++ library. egcs
|
||||
compilers with the associated libstdc++ are known to work.
|
||||
|
||||
- bison
|
||||
|
||||
|
|
@ -66,7 +67,7 @@ root.
|
|||
|
||||
make install
|
||||
|
||||
3.0 How IVL Works
|
||||
3.0 How Icarus Verilog Works
|
||||
|
||||
This tool includes a parser which reads in Verilog (plus extensions)
|
||||
and generates an internal netlist. The netlist is passed to various
|
||||
|
|
@ -115,12 +116,10 @@ first, followed by the structural and behavioral elaboration.
|
|||
|
||||
3.3.1 Scope Elaboration
|
||||
|
||||
This pass scans through the pform looking for scopes and
|
||||
parameters. A tree of NetScope objects is built up and placed in the
|
||||
Design object, with the root module represented by the root NetScope
|
||||
object.
|
||||
|
||||
The elab_scope.cc and elab_pexpr.cc files contain most of the code for
|
||||
This pass scans through the pform looking for scopes and parameters. A
|
||||
tree of NetScope objects is built up and placed in the Design object,
|
||||
with the root module represented by the root NetScope object. The
|
||||
elab_scope.cc and elab_pexpr.cc files contain most of the code for
|
||||
handling this phase.
|
||||
|
||||
The tail of the elaborate_scope behavior (after the pform is
|
||||
|
|
@ -131,7 +130,7 @@ the defparam overrides are applied to the parameters.
|
|||
3.3.2 Netlist Elaboration
|
||||
|
||||
After the scopes and parameters are generated and the NetScope tree
|
||||
fully formed, the elaboration runs through teh pform again, this time
|
||||
fully formed, the elaboration runs through the pform again, this time
|
||||
generating the structural and behavioral netlist. Parameters are
|
||||
elaborated and evaluated by now so all the constants of code
|
||||
generation are now known locally, so the netlist can be generated by
|
||||
|
|
@ -173,7 +172,7 @@ done in a friendly way. See the iverilog(1) man page for usage details.
|
|||
4.1 Running IVL Directly
|
||||
|
||||
The ivl command is the compiler driver, that invokes the parser,
|
||||
optimization functions and the code generator.
|
||||
optimization functions and the code generator, but not the preprocessor.
|
||||
|
||||
Usage: ivl <options>... file
|
||||
ivl -h
|
||||
|
|
@ -305,7 +304,7 @@ To run the program
|
|||
5.0 Unsupported Constructs
|
||||
|
||||
IVL is in development - as such it still only supports a (growing) subset
|
||||
of verilog. Below is a description of some of the currently unsupported
|
||||
of Verilog. Below is a description of some of the currently unsupported
|
||||
verilog features. This list is not exhaustive, and does not account
|
||||
for errors in the compiler. See the Icarus Verilog web page for the
|
||||
current state of support for Verilog.
|
||||
|
|
@ -327,20 +326,10 @@ current state of support for Verilog.
|
|||
assign foo = user_function(a,b); // sorry
|
||||
always @(a or b) foo = user_function(a,b); // OK
|
||||
|
||||
- multiplicative operators (*, /, %) are not supported in
|
||||
general. They do work if the compiler can evaluate them at compile
|
||||
time.
|
||||
|
||||
assign foo = a * b; // sorry
|
||||
always @(a or b) foo = a * b; // sorry
|
||||
|
||||
- real data type not supported.
|
||||
|
||||
- system functions are not supported. (User defined functions are
|
||||
supported, and system tasks are supported.)
|
||||
|
||||
assign foo = $some_function(a,b); // sorry
|
||||
always @(a or b) foo = $some_function(a,b); // sorry
|
||||
- System functions are supported, but the compiler presumes that
|
||||
they return 32 bits. This is the typical case.
|
||||
|
||||
- non-constant delay expressions, i.e.:
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue