Commits on Feb 9, 2010
  1. @martinwhitaker

    Fix for LXT/LXT2 output using MinGW.

    When using MinGW, routines registered via atexit() inside a
    DLL are only called when the DLL is detached. If not detached
    manually, DLLs are automatically detached *after* all remaining
    open files are closed. This meant that by the time the LXT or
    LXT2 close_dumpfile routine was called, the dump file handle
    was no longer valid, so any remaining output was lost. This
    patch fixes the problem by manually detaching the VPI modules.
    martinwhitaker committed with Feb 7, 2010
Commits on Feb 6, 2010
  1. Add yet more key characters to the gperf command.

    The last patch to add key charasters apparently wasn't enough
    for gperf 2.7.
    committed Feb 6, 2010
  2. @caryr

    Fix gperf key flags

    When I added the SV/Verilog-AMS keywords I forgot to update the
    gperf keys in This patch makes them match the Makefile.
    caryr committed with Feb 4, 2010
Commits on Feb 5, 2010
Commits on Feb 1, 2010
  1. @caryr

    Fix release of variables.

    This patch fixes the release of varaibles to work correctly.
    caryr committed with Jan 31, 2010
  2. @caryr

    Fix MinGW compile warnings.

    This patch fixes a few compile warnings found with the latest
    MinGW compiler.
    caryr committed with Jan 27, 2010
Commits on Jan 23, 2010
  1. @caryr

    Fix an obscure memory leak and fix formatting.

    This patch fixes an obscure memory leak and make the formatting
    of these two routines match the rest of the code in the file.
    caryr committed with Jan 23, 2010
  2. @caryr

    Add all the Verilog-AMS 2.3.1 keywords.

    Like I did for SystemVerilog the other day this patch adds all the
    Verilog-AMS 2.3.1 keywords. This necessitated adding one my byte
    to the gperf -k argument (byte 9) to make the laplace_?? tokens
    have a unique hash.
    caryr committed with Jan 21, 2010
  3. @caryr

    Add all the SystemVerilog (1800-2005) keywords.

    This patch adds the SystemVerilog keywords to Icarus. This allows
    use to easily verify that out plain Verilog does not contain any
    SystemVerilog keywords. The keywords are not parsed in any way.
    When parsing a Verilog file using -gsystem-verilog any identifier
    that is a keyword will cause a parse error. It is the users
    responsibility to figure out the problem since bison does not
    give nice error message when it finds a keyword instead of an
    caryr committed with Jan 19, 2010
  4. @martinwhitaker

    Fix for pr2922063.

    When handling the $signed/$unsigned system functions, the compiler
    was applying the new signed/unsigned property to the NetExpr object
    representing the input argument. This caused the input argument to
    be evaluated incorrectly. This patch fixes this by applying the new
    property to the NetExpr object created to pad the result to the
    required size.
    In testing this fix, it was also discovered that the width of the
    input argument expression was not being calculated correctly. This
    patch also fixes this issue.
    martinwhitaker committed with Jan 17, 2010
  5. @nickg

    Fix build with gcc-4.5

    New version of GCC does not like the X::X() construct.
    nickg committed with Jan 13, 2010
  6. @martinwhitaker

    Fix for pr2924354.

    Creation of implicit nets requires knowledge of whether an identifier
    has been declared before it is used. Currently implicit nets are
    created during elaboration, but by this stage the order of declaration
    and use is not known. This patch moves the creation of implicit nets
    into the parser stage.
    martinwhitaker committed with Jan 12, 2010
Commits on Jan 12, 2010
  1. Make sure all vvp_vector8_t::val_ bytes are initialized

    Often the val_ array is treated as a word (for speed) so make sure
    all the bytes of val_ are initialized, even if not used.
    committed Jan 12, 2010
  2. @martinwhitaker

    Rework of lexical scope handling in parser.

    This patch modifies the parser to use a single stack to track lexical
    scopes, rather than starting a new stack for each generate construct.
    martinwhitaker committed with Jan 8, 2010
  3. @caryr

    realloc() to the correct string.

    Someone had mistyped the destination of the realloc. It should
    have been the original string not the input buffer.
    caryr committed with Jan 12, 2010
  4. @martinwhitaker

    Fix for pr2929913.

    After changing an array word, vvp propagates the change to every port
    attached to the array. The code did not properly handle the case of
    an array port declared in an automatic scope with an associated array
    declared in a static scope.
    martinwhitaker committed with Jan 11, 2010
  5. @caryr

    Fix some constant bit/part select bugs and add warnings.

    This patch fixes a few bugs in constant bit/part selects and
    adds optional warnings for out of bound or undefined selects.
    caryr committed with Jan 10, 2010
Commits on Jan 11, 2010
  1. Optimize handling of invert gates / Tweak vvp_vector8_t performance

    The process of inverting and copying can be collapsed into a single
    operation that should run a little faster. Also, inverting readily
    vectorizes itself. I've also possibly reduced useless vvp_not_fun
    Also, include some minor tweaks to the vvp_vector8_t handling of
    vector copies. This is more to clean up code, although it should
    slightly improve performance as well.
    committed Jan 11, 2010
  2. @caryr

    Fix major error in lxt2 info allocation.

    The zero element was already returned so it can not be reused a
    second time. This was crashing when things went off the end of
    the list since the do all functor was off by one.
    caryr committed with Jan 10, 2010
Commits on Jan 10, 2010
  1. Optimize the per-signal vcd_info structure

    In a typical debug simulation run, a user tracing all the signals
    in the simulation may wind up creating millions of these. Rework
    the vcd_info structure to be more compact and possibly faster to
    committed Jan 10, 2010
Commits on Jan 9, 2010
  1. Merge branch 'vcd-thread'

    committed Jan 9, 2010
  2. Fix build --with-valgrind broken by scope thread rework.

    The scope thread rework broek --with-valgrind builds due to the
    different handling of the list of threads. Rework valgrind enabled
    handling of the thread set within a scope.
    committed Jan 9, 2010
  3. Batch vcd work item creation

    Rather then lock/unlock the work queue ring for every item, save
    tons of pthread lock manipulation by allocating to the producer
    in batches. Over the long run, this doesn't change the CPU balance
    or hold up either thread, but it eliminates almost 3/4 of the
    lock/unlock episodes.
    committed Jan 9, 2010
  4. Blend time stamp into other work items.

    The time change is usually a trivial operation, so instead carry
    a timestamp on all the work items and let the work thread decide
    on its own when to do a SET_TIME operation. This reduces some
    pthread overhead and thus gets us some better performance.
    committed Jan 9, 2010
Commits on Jan 7, 2010
  1. Merge branch 'master' of ssh://…

    Picture Elements Inc committed Jan 7, 2010
  2. Add generic single-step-display for vvp_gen_event_s objects.

    This gives a little bit more specificity to the event step
    committed Jan 7, 2010
  3. Fix typeinfo build error.

    Picture Elements Inc committed Jan 7, 2010
  4. Rework the scope thread list to use a std::set

    The scope contains the threads running within. The rework of this
    patch allows all threads to know their scope, and cleans up the
    handling of threads listed in the scope.
    committed Jan 7, 2010
  5. Add some single-step debugging

    Work out the basis for single-stepping events in the scheduler,
    and fill in some basic single-step results.
    committed Jan 7, 2010
Commits on Jan 6, 2010
  1. @caryr
  2. @caryr

    Use CXXFLAGS when compiling C++ programs.

    We already have this flag so we may as well us it in the vpi
    directory to compile C++ programs.
    caryr committed with Jan 6, 2010
  3. @caryr

    A signal select is signed if the select not the signal is signed.

    The padding for a signal select was using the signal to determine
    if the padding should be singed or not. In reality this should be
    unsigned padding unless the select was enclosed in a $signed().
    caryr committed with Jan 6, 2010