Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Commits on Nov 1, 2011
  1. Prepare for version 0.9.5

  2. @caryr

    Use UINT_MAX instead of -1 to set unsigned to maximum value.

    caryr authored committed
    The Sun C compiler warns when -1 is used to initialize an unsigned.
    (cherry picked from commit 7d588d6)
Commits on Oct 31, 2011
  1. @caryr

    V0.9: Reduce the error when scaling a real time value.

    caryr authored committed
    When scaling a time value we would often use the power operator to
    create constants 10**-N that were then multiplied with the original
    value. The problem with this is that there is some errors in the
    representation of the fractional number. It is better to create a
    integer value 10**N and then divide the original value by this
    exact constant. You still have the calculation error, but the scale
    value is now an exactly real value.
  2. @caryr

    Remove old comment.

    caryr authored committed
  3. @caryr

    V0.9: Major rework of the $sscanf()/$fscanf() code.

    caryr authored committed
    Add support for %m, suppression '*' and a maximum field width along with
    a number of other fixes/enhancements. There is still no support for
    %u, %v or %z.
  4. @caryr

    Make some messages consistent.

    caryr authored committed
    This patch makes some of the VPI messages consistent with the rest.
  5. Restore ability to supply LDFLAGS to MinGW configure.

    Martin Whitaker authored committed
    The fix to get a C99 compliant strtod() in MinGW mistakenly set the
    LDFLAGS value rather than appending to it. This meant that a LDFLAGS
    supplied by the user on the configure command line would be ignored.
    (cherry picked from commit c4433e4)
Commits on Oct 27, 2011
  1. Fix for tf_getlongsimtime link error on MinGW/Cygwin.

    Martin Whitaker authored committed
    MinGW and Cygwin don't currently support weak function definitions.
    For these platforms, make tf_getlongsimtime a strong symbol.
    (cherry picked from commit 7f62579)
  2. Workaround for MinGW non-standard strtod.

    Martin Whitaker authored committed
    MinGW has reverted to using the Microsoft msvcrt0 implementation
    of the strtod() function. This implementation doesn't accept "INF"
    "NaN". MinGW does provide a C99 compliant implementation of this
    function called __strtod(). We need to force the linker to replace
    all references to strtod() with references to __strtod().
    (cherry picked from commit b6cb065)
  3. @caryr

    Update fstapi.c to latest from GTkWave

    caryr authored committed
    There was a change in how the FST data was flushed.
    (cherry picked from commit 0b978da)
Commits on Oct 26, 2011
  1. @caryr

    v0.9: Report that forcing a word to/from a variable array in not supp…

    caryr authored committed
    This patch adds error messages that forcing a word to/from a variable
    array is not currently supported. This is because variable arrays no
    longer are fully populated and don't have an access functor for each
    word. Forcing a word from/to a net array does work as expected since
    each word in a net array is created.
    Technically forcing a variable array word is not supported in 1364-2005.
    Reading from an array word, which is supported,  will be fixed in
    development once the expression rework is finished.
    The error message printed when forcing a bit/part select l-value was
    also improved.
  2. @caryr

    V0.9: Improve the out of range check in tgt-vhdl/

    caryr authored committed
    Promote the unsigned values to long to get a good comparison and on a
    machine where an unsigned is the same size as a long (32 bit) assert
    that the unsigned values are constrained to fit into a long. It's unlikely
    the values needed to create invalid results would ever happen, but this
    patch makes sure it doesn't go undetected.
Commits on Oct 20, 2011
  1. @caryr

    V0.9: Remove some scan-build warnings.

    caryr authored committed
    One of these is a real bug, the others are just minor optimizations.
  2. @caryr

    Update various dumper files from GTKWave SVN

    caryr authored committed
    Update some of the files we get from GTKWave to match the latest from SVN.
    (cherry picked from commit b9af189)
  3. @caryr

    V0.9: Fix autoconf warning.

    caryr authored committed
    This just copies the same change that was done for development over to V0.9.
  4. @caryr

    V0.9: Remove some gcc/g++ (4.6.1) warnings.

    caryr authored committed
    This patch remove some unused variable warnings found with gcc/g++ 4.6.1
    on Ubuntu 11.10.
Commits on Oct 19, 2011
  1. V0.9 Fix for pr3420994.

    Martin Whitaker authored committed
    The VPI object data model diagrams show a one to many relationship
    between the "mod path" and "path term" objects. This means that the
    correct way to obtain handles to "path term" objects is to use the
    vpi_iterate and vpi_scan functions.
    Support for the old method of obtaining handles to "path term" objects
    using the vpi_handle function is retained for backwards compatibility.
Commits on Oct 16, 2011
  1. Corrected tf_getlongsimtime() to match behaviour of other simulators.

    Martin Whitaker authored committed
    The PLI tf_getlongsimtime() function is a non-standard function provided
    for compatibility with some commercial simulators. To match the behaviour
    of those simulators, it should return the raw simulation time, not a
    scaled time.
    (cherry picked from commit a3813c0)
  2. @caryr

    When printing a Dec numeric value use the string size and the minimum…

    caryr authored committed
    … size.
    The vpiDecStrVal case for the get_numeric() function needs to use the
    existing string width as the minimum result size. -1 can be represented as
    a signed value with a width of 1. This gives a display width of -1 which
    is too small for the -1 string value. This was creating valgrind issues.
    In general the string value should be the minimum so this is a safe change.
    (cherry picked from commit 5a9e4aa)
  3. @caryr

    V0.9: Free the iterator if there are extra arguments.

    caryr authored committed
    To avoid extra memory usage on error free the iterator if there are
    extra arguments.
  4. @caryr

    Remove two unused argument warnings

    caryr authored committed
    (cherry picked from commit dc2c67e)
Commits on Oct 1, 2011
  1. @caryr

    Update lxt_write and lxt2_write files from GTKWave

    caryr authored committed
    Update the lxt_write.[ch] and lxt2_write.[ch] files to the latest from
    GTKWave. This is just comment changes.
    (cherry picked from commit cff0dee)
Commits on Sep 25, 2011
  1. V0.9 Remove more clang warnings.

    Martin Whitaker authored committed
    clang warns that the yyinput function generated by flex is never used.
  2. @caryr

    V0.9: Remove clang/clang++ warnings.

    caryr authored committed
    This patch makes the code consistently use struct/class in the C++ files,
    it removes a couple shadow warnings and where a class pointer is passed to
    the C routines it defines the pointer as a class for C++ and as struct for C.
Commits on Sep 18, 2011
  1. Fix long division.

    Alexander Klimov authored committed
    On a 64-bit machine the following module shows incorrect division
    `define X {4'b 1000, `N'b 0}
    `define Y {1'b  1, `N'b 0}
    module b;
       reg [`N:0] y = `Y;
       reg [3:0] z1, z2;
       initial begin
          z1 = `X / `Y;
          z2 = `X /  y;
          $display("%3d %b %b", `N, z1, z2);
    endmodule // b
    $ for N in {60..65}; do /usr/bin/iverilog -DN=$N -oa b.v && /usr/bin/vvp a; done
     60 1000 1000
     61 1000 1000
     62 1000 0111
     63 1000 0101
     64 1000 1000
     65 1000 1000
    The first chunk of the patch (result -> tmp_result) fixes this:
    $ for N in {60..65}; do iverilog -DN=$N -oa b.v && vvp a; done
     60 1000 1000
     61 1000 1000
     62 1000 1000
     63 1000 1000
     64 1000 1000
     65 1000 1000
    The second chunk fixes
    `define X 264'h 800000000000000000000000000000000000000000000000000000000000000000
    `define Y 192'h c6df998d06b97b0db1f056638484d609c0895e8112153524
    module c;
       reg [191:0] y = `Y;
       reg [72:0] z1, z2;
       initial begin
          z1 = `X / `Y;
          z2 = `X /  y;
          $display("%x %x %b", z1, z2, z1 == z2);
    endmodule // c
    $ /usr/bin/iverilog -oa c.v && /usr/bin/vvp a
    0a4c4a2c1dacd76220c 0809033397ca3427927 0
    $ iverilog -oa c.v && vvp a
    0a4c4a2c1dacd76220c 0a4c4a2c1dacd76220c 1
    (cherry picked from commit 766bf45)
Commits on Sep 11, 2011
  1. @caryr

    V0.9: For MinGW driver report an error if the two \\ are not found in…

    caryr authored committed
    … the exe path
    We need to print a message and fail if the two \\ characters are not found
    in the executable path.
Commits on Sep 7, 2011
  1. @caryr

    V0.9: For MinGW report an error if the two \\ are not found in the ex…

    caryr authored committed
    …e path
    We need to print a message and fail if the two \\ characters are not found
    in the executable path.
Commits on Jul 20, 2011
  1. @caryr

    V0.9: Fix verinum negative comparisons.

    caryr authored committed
    For mixed sized negative operands the verinum comparisons were sometimes
    returning the wrong value.
Commits on Jun 26, 2011
  1. @caryr

    V0.9: Fix incorrect function in tgt-stub/expression.c.

    caryr authored committed
    This fixes a bug where the unary expression code was using the incorrect
    function to check to see if the data type was real.
  2. @caryr

    V0.9: Fix spacing issues.

    caryr authored committed
Commits on Jun 13, 2011
  1. @martinwhitaker

    v0.9 fix for pr3296466.

    martinwhitaker authored committed
    The compiler was handling bi-directional pass switches using the default
    case for primitive gates, where the first port is treated as an output
    and the remaining ports are treated as inputs. This patch adds a special
    case for pass switches, so that the first two ports are treated as
    This patch also reworks the tran island code to allow it to handle cases
    where tran primitives cross-connect different bits of the same vector.
Commits on Jun 4, 2011
  1. @caryr

    V0.9: Always process specparams since they can be used outside a spec…

    caryr authored committed
    …ify block.
    The -gno-specify flag should only control the delay and timing checks.
    It should not also remove the specparams since they can be used outside
    of a specify block.
  2. @martinwhitaker

    (V0.9) Modified rules for primitive gate port expression widths.

    martinwhitaker authored committed
    The IEEE standard states that the port expressions used for arrays
    of primitive gates must be the exact width required, but is silent
    about the requirements for single instances. The consensus among
    other simulators is that for input ports of single instances, the
    expression is silently truncated to a single bit.
    This patch also fixes a compiler crash if an error is found when
    elaborating a primitive gate port expression.
Commits on May 29, 2011
  1. @caryr

    Update fstapi.c to match the latest from GTKWave

    caryr authored committed
    (cherry picked from commit feba731)
  2. @caryr

    V0.9: Report the correct gate port number.

    caryr authored committed
    The error message was reporting the error message as zero based
    instead of one based.
Something went wrong with that request. Please try again.