Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Commits on Feb 9, 2010
  1. @martinwhitaker

    Fix for LXT/LXT2 output using MinGW.

    martinwhitaker authored committed
    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.
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.
  2. @caryr

    Fix gperf key flags

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

    Fix release of variables.

    caryr authored committed
    This patch fixes the release of varaibles to work correctly.
  2. @caryr

    Fix MinGW compile warnings.

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

    Fix an obscure memory leak and fix formatting.

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

    Add all the Verilog-AMS 2.3.1 keywords.

    caryr authored committed
    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.
  3. @caryr

    Add all the SystemVerilog (1800-2005) keywords.

    caryr authored committed
    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
  4. @martinwhitaker

    Fix for pr2922063.

    martinwhitaker authored committed
    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.
  5. @nickg

    Fix build with gcc-4.5

    nickg authored committed
    New version of GCC does not like the X::X() construct.
  6. @martinwhitaker

    Fix for pr2924354.

    martinwhitaker authored committed
    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.
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.
  2. @martinwhitaker

    Rework of lexical scope handling in parser.

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

    realloc() to the correct string.

    caryr authored committed
    Someone had mistyped the destination of the realloc. It should
    have been the original string not the input buffer.
  4. @martinwhitaker

    Fix for pr2929913.

    martinwhitaker authored committed
    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.
  5. @caryr

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

    caryr authored committed
    This patch fixes a few bugs in constant bit/part selects and
    adds optional warnings for out of bound or undefined selects.
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.
  2. @caryr

    Fix major error in lxt2 info allocation.

    caryr authored committed
    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.
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
Commits on Jan 9, 2010
  1. Merge branch 'vcd-thread'

  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.
  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.
  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.
Commits on Jan 7, 2010
  1. Merge branch 'master' of ssh://…

    Picture Elements Inc authored
  2. Add generic single-step-display for vvp_gen_event_s objects.

    This gives a little bit more specificity to the event step
  3. Fix typeinfo build error.

    Picture Elements Inc authored
  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.
  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.
Commits on Jan 6, 2010
  1. @caryr

    If you have C++ .o files you need to link with g++

    caryr authored committed
  2. @caryr

    Use CXXFLAGS when compiling C++ programs.

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

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

    caryr authored committed
    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().
Something went wrong with that request. Please try again.