Stephen,It's been a while since the last snapshot, the result being a *lot* of changes. The highlights are:
New interactive mode, Compiler performance improvements, Repaired Mingw port
The new interactive mode in particular has the capacity to inspire a lot of interesting add-on projects.
Anyhow, y head is swimming with big projects affecting simulation, including but not limited to:
Changing how parameters are handled (for the sake of SWIFT), Trying to push some specify block support closer to vvp, real valued nets, and rewiring of vvp functor structures in support of the above. Performance!
I've been getting a lot of mail recently that has also been keeping me busy. I'm trying to keep up, but don't feel slighted if I occasionally ask you to repeat yourself after some delay getting back to you.
Here are the snapshot files:
<ftp://icarus.com/pub/eda/verilog/snapshots/verilog-20030308.tar.gz> <ftp://icarus.com/pub/eda/verilog/snapshots/verilog-20030308.txt>
Release Notes for Icarus Verilog Snapshot 20030308
The vvp command has gained an interactive mode. The $stop system task, or Ctrl-C, will enter this interactive mode, from which you can traverse the scopes of the design and invoke system tasks. You can also do a clean finish from interactive mode, useful when you want to stop the simulation with a clean LXT output. You can even resume the simulation. This is enough infrastructure to support interactive debuggers written in VPI.
IEEE1364-2001 style PLI_* types are being introduces, and the PLI header files are gradually being adjusted to use these new types. Even though some of the type choices are pretty weird, these are better then the purely random choices from the -1995 standard.
The latest lxt updates from Tony Bybell have been incorporated. This introduced new dependencies on bzlib2 and zlib, but when full compression is turned on, the output LXT files are very compact. Very competitive with commercial tools. This update also introduces dead-zone support to LXT, so the later gtkwave-1.* and gtkwave-2.* viewers will graphically show regions where dumps were temporarily suspended. See the vvp man pages for options.
A new dangling port warning has been added to the compiler. This has been successfully used to catch incorrectly connected modules in large designs.
Some code generator bugs relating to system functions as arguments to system tasks have been fixed. This should now work in general. VPI calltf functions will see constant values for the evaluated argument, but it will be the correct value.
Some minimal progress towards specify block support has been made. Nothing particularly visible yet, except that some bugs in the BNF for specify paths have been fixed.
The mingw port has been fixed, and the mingw.txt instructions greatly enhanced. Compiling under Windows has always been harder then compiling elsewhere, so detailed instructions can always be made better.
Various bugs in real value support were fixed, including the addition of $realtobits. (Still no $bitstoreal.) IEEE754 support is in pretty good shape, actually. Still some glitches and gaps, but useable.
A bunch of acc_ functions were added since the last snapshot. This improves compatibility with Cadence compatible PLI1 modules, still working towards functional SWIFT support. Also, acc_ string table support has been added. This better matches the behavior of commercial tools.
Internally, the handling of names by the compiler has been drastically rewritten. This leads to some minor changes to the ivl_target api, and considerably less memory use during compile. Compilation is a bit faster now, as well. These changes also improve memory usage at run time, so expect some minor performance enhancements there.
Minor makefile fixes to account for parallel builds.
I downloaded this snapshot and attempted to compile, but got the following compiler error:
c++ -DHAVE_CVS_IDENT=1 -DHAVE_CONFIG_H -g -O2 -I. -I. -MD -c parse.cc -o parse.o
parse.cc: In function `int VLparse()':
parse.cc:6887: ISO C++ forbids declaration of `yylerrsp' with no type
parse.cc:6887: conflicting types for `int yylerrsp'
parse.cc:3105: previous declaration as `vlltype*yylerrsp'
parse.cc:6887: invalid conversion from `vlltype*' to `int'
parse.cc:6888: invalid type argument of `unary *'
parse.cc:6930: invalid operands of types `int' and `vlltype*' to binary `
operator-'
parse.cc:6930: invalid operands of types `int' and `vlltype*' to binary `
operator-'
I am using version "gcc version 3.2 20020903 (Red Hat Linux 8.0 3.2-7)" of the c++ compiler and version "bison (GNU Bison) 1.875" of bison. Any ideas?
Thanks, Trevor
