2003-05-06 19:40:18 +02:00
|
|
|
Icarus Verilog is a Verilog simulation and synthesis tool. It operates as a
|
2000-03-07 17:09:15 +01:00
|
|
|
compiler, compiling source code writen in Verilog (IEEE-1364) into some target
|
|
|
|
format. For batch simulation, the compiler can generate C++ code that is
|
|
|
|
compiled and linked with a run time library (called "vvm") then executed as
|
|
|
|
a command to run the simulation. For synthesis, the compiler generates
|
|
|
|
netlists in the desired format.
|
2005-05-23 10:26:03 +02:00
|
|
|
|
2000-03-07 17:09:15 +01:00
|
|
|
The compiler proper is intended to parse and elaborate design descriptions
|
|
|
|
written to the IEEE standard IEEE Std 1364-1995. This is a fairly large and
|
|
|
|
complex standard, so it will take some time for it to get there, but that's
|
|
|
|
the goal. I'll be tracking the upcoming IEEE Std 1364-1999 revision as well,
|
|
|
|
and some -1999 features will creep in.
|
update to 20000506 snapshot.
changes from the last packaged snapshot (from the authors announcement):
---------------Icarus Verilog 20000506 Snapshot------------------
A lot of internal reworking has been done on this, so there might be
problems with things like symbol binding. But I think this is much better
then the last snapshot. I am once again starting to think about a
stable release. I'll shoot for the end of May, so if there is anything
you want to see in that release, start pestering me.
The big job has been a rewrite of the symbol table that holds signals.
The previous elaboration and lookup code for signals/memories did not
work properly when hierarchical names were used in the context of tasks
and functions. Also, the old table kept all the signals is a single
lookup table that failed to take advantage of knowledge of the current
scope.
All that is changed. signals are now elaborated after parameters and
before processes, so all hierarchical accesses should work properly now,
no matter how contorted. I've also fixed some bugs with function/task
parameter passing.
I've also added some infrastructure for supporting system functions, and
I've added an implementation of the $random system function. This currently
uses the native random(3) C library function, but once I get access to the
standardized algorithm, I'll implement that.
There are also a few fixes to elaboration of ternary operators. They were
a bit touchy about result bit widths.
A few preprocessor bugs have been fixed, especially related to the
`ifdef/`endif tokens. People are all the sudden starting to use the
Icarus Verilog preprocessor, so some long-standing bugs have been caught.
The iverilog command had a few path problems fixed, and the remaining
necessary switches have been added. I really encourage people to start
using iverilog in place of verilog. The test suite now uses iverilog to
run the compiler, so should you. There is a man page.
2000-05-11 03:33:49 +02:00
|
|
|
|
|
|
|
Please note that this package is a development snapshot and while it contains
|
2004-02-01 00:35:24 +01:00
|
|
|
the latest and greatest features, it may be buggy as well. There is a separate
|
update to 20000506 snapshot.
changes from the last packaged snapshot (from the authors announcement):
---------------Icarus Verilog 20000506 Snapshot------------------
A lot of internal reworking has been done on this, so there might be
problems with things like symbol binding. But I think this is much better
then the last snapshot. I am once again starting to think about a
stable release. I'll shoot for the end of May, so if there is anything
you want to see in that release, start pestering me.
The big job has been a rewrite of the symbol table that holds signals.
The previous elaboration and lookup code for signals/memories did not
work properly when hierarchical names were used in the context of tasks
and functions. Also, the old table kept all the signals is a single
lookup table that failed to take advantage of knowledge of the current
scope.
All that is changed. signals are now elaborated after parameters and
before processes, so all hierarchical accesses should work properly now,
no matter how contorted. I've also fixed some bugs with function/task
parameter passing.
I've also added some infrastructure for supporting system functions, and
I've added an implementation of the $random system function. This currently
uses the native random(3) C library function, but once I get access to the
standardized algorithm, I'll implement that.
There are also a few fixes to elaboration of ternary operators. They were
a bit touchy about result bit widths.
A few preprocessor bugs have been fixed, especially related to the
`ifdef/`endif tokens. People are all the sudden starting to use the
Icarus Verilog preprocessor, so some long-standing bugs have been caught.
The iverilog command had a few path problems fixed, and the remaining
necessary switches have been added. I really encourage people to start
using iverilog in place of verilog. The test suite now uses iverilog to
run the compiler, so should you. There is a man page.
2000-05-11 03:33:49 +02:00
|
|
|
verilog package which is made of the stable releases.
|