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

    committed Nov 1, 2011
  2. Use UINT_MAX instead of -1 to set unsigned to maximum value.

    The Sun C compiler warns when -1 is used to initialize an unsigned.
    (cherry picked from commit 7d588d6)
    caryr committed with Oct 31, 2011
Commits on Oct 31, 2011
  1. V0.9: Reduce the error when scaling a real time value.

    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.
    caryr committed with Oct 31, 2011
  2. Remove old comment.

    caryr committed with Oct 31, 2011
  3. V0.9: Major rework of the $sscanf()/$fscanf() code.

    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.
    caryr committed with Oct 31, 2011
  4. Make some messages consistent.

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

    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)
    Martin Whitaker committed with Oct 28, 2011
Commits on Oct 27, 2011
  1. Fix for tf_getlongsimtime link error on MinGW/Cygwin.

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

    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)
    Martin Whitaker committed with Oct 26, 2011
  3. Update fstapi.c to latest from GTkWave

    There was a change in how the FST data was flushed.
    (cherry picked from commit 0b978da)
    caryr committed with Oct 26, 2011
Commits on Oct 26, 2011
  1. v0.9: Report that forcing a word to/from a variable array in not supp…

    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.
    caryr committed with Oct 26, 2011
  2. V0.9: Improve the out of range check in tgt-vhdl/

    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.
    caryr committed with Oct 25, 2011
Commits on Oct 20, 2011
  1. V0.9: Remove some scan-build warnings.

    One of these is a real bug, the others are just minor optimizations.
    caryr committed with Oct 20, 2011
  2. Update various dumper files from GTKWave SVN

    Update some of the files we get from GTKWave to match the latest from SVN.
    (cherry picked from commit b9af189)
    caryr committed with Oct 20, 2011
  3. V0.9: Fix autoconf warning.

    This just copies the same change that was done for development over to V0.9.
    caryr committed with Oct 20, 2011
  4. V0.9: Remove some gcc/g++ (4.6.1) warnings.

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

    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.
    Martin Whitaker committed with Oct 15, 2011
Commits on Oct 16, 2011
  1. Corrected tf_getlongsimtime() to match behaviour of other simulators.

    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)
    Martin Whitaker committed with Oct 11, 2011
  2. When printing a Dec numeric value use the string size and the minimum…

    … 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)
    caryr committed with Oct 10, 2011
  3. V0.9: Free the iterator if there are extra arguments.

    To avoid extra memory usage on error free the iterator if there are
    extra arguments.
    caryr committed with Oct 6, 2011
  4. Remove two unused argument warnings

    (cherry picked from commit dc2c67e)
    caryr committed with Oct 3, 2011
Commits on Oct 1, 2011
  1. Update lxt_write and lxt2_write files from GTKWave

    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)
    caryr committed with Sep 30, 2011
Commits on Sep 25, 2011
  1. V0.9 Remove more clang warnings.

    clang warns that the yyinput function generated by flex is never used.
    Martin Whitaker committed with Sep 24, 2011
  2. V0.9: Remove clang/clang++ warnings.

    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.
    caryr committed with Sep 23, 2011
Commits on Sep 18, 2011
  1. Fix long division.

    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)
    Alexander Klimov committed with Sep 14, 2011
Commits on Sep 11, 2011
  1. V0.9: For MinGW driver report an error if the two \\ are not found in…

    … the exe path
    We need to print a message and fail if the two \\ characters are not found
    in the executable path.
    caryr committed with Sep 1, 2011
Commits on Sep 7, 2011
  1. V0.9: For MinGW report an error if the two \\ are not found in the ex…

    …e path
    We need to print a message and fail if the two \\ characters are not found
    in the executable path.
    caryr committed with Aug 24, 2011
Commits on Jul 20, 2011
  1. V0.9: Fix verinum negative comparisons.

    For mixed sized negative operands the verinum comparisons were sometimes
    returning the wrong value.
    caryr committed with Jul 19, 2011
Commits on Jun 26, 2011
  1. V0.9: Fix incorrect function in tgt-stub/expression.c.

    This fixes a bug where the unary expression code was using the incorrect
    function to check to see if the data type was real.
    caryr committed with Jun 20, 2011
  2. V0.9: Fix spacing issues.

    caryr committed with Jun 13, 2011
Commits on Jun 13, 2011
  1. v0.9 fix for pr3296466.

    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.
    martinwhitaker committed with Jun 12, 2011
Commits on Jun 4, 2011
  1. V0.9: Always process specparams since they can be used outside a spec…

    …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.
    caryr committed with Jun 2, 2011
  2. (V0.9) Modified rules for primitive gate port expression widths.

    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.
    martinwhitaker committed with May 30, 2011
Commits on May 29, 2011
  1. Update fstapi.c to match the latest from GTKWave

    (cherry picked from commit feba731)
    caryr committed with May 27, 2011
  2. V0.9: Report the correct gate port number.

    The error message was reporting the error message as zero based
    instead of one based.
    caryr committed with May 23, 2011