Commits on Feb 25, 2009
  1. Update the rpm spec file to handle package suffixes.

    If the builder wants to build the package with an install suffix,
    the %{suff} variable makes that easy. Just define that value as
    needed, and there you go.
    committed Feb 25, 2009
  2. Fix dependency file (-M) generation.

    The dependency file may be written by ivlpp as it loads its own
    dependencies. Make sure this doesn't mess up the dependencies that
    are already written by the main program. This requires that ivl,
    ivlpp and iverilog (driver) cooperate on the opening of the
    dependency file.
    committed Feb 25, 2009
Commits on Feb 24, 2009
  1. Allow constant delay literals to be handled as 64bits.

    This is mostly a minor definition change in the parsing of literal
    numbers by the vvp lexor. Allow for 64bit numbers in the .delay
    records, and have the code generator also able to cope with the
    situation.
    committed Feb 24, 2009
  2. At configure time, make sure prefix, exec_prefix and libdir are OK.

    Icarus Verilog internally is not white-space clean. We need to make
    sure the configured paths that cause the most trouble are clean and
    usable. It is still possible to mess things up downstream, but at least
    this should help.
    committed Feb 24, 2009
  3. @caryr

    Keep the left and right array range value order information.

    Previously Icarus normalized the results so array [7:0] would
    be the same as array [0:7]. This works just fine for
    simulation, but the VPI calls can select the left or right
    value and this was incorrect for the [7:0] case since it was
    being normalized to [0:7]. This patch swaps the two values in
    the a.out file and from this creates the previous first/last
    values and a new flag that can be used to get the correct
    left and right values for the VPI interface.
    caryr committed with Feb 23, 2009
  4. Blind support for "integer foreign" attributes. (Stefan Theide)

    Allows iverilog to parse attribute like syntax that a common
    simuator puts into automatically generated verilog code. This
    syntax cannot be found in any of the IEEE standards.
    committed Feb 23, 2009
  5. @nickg

    VHDL translation for timescale

    This patch generates delays with the correct VHDL units. Taking
    into account the source module's timescale and precision.
    nickg committed with Feb 23, 2009
  6. @caryr

    The default type of a signal is a vector.

    In Icarus all signals are vectors so when asking for the vpiObjTypeVal
    we need to return the vpiVectorVal.
    caryr committed with Feb 23, 2009
Commits on Feb 23, 2009
  1. @nickg

    Support IVL_EX_DELAY in VHDL target

    This patch adds a translation of 64-bit delay expressions to
    vhdl_const_time objects.
    nickg committed with Feb 19, 2009
Commits on Feb 19, 2009
  1. Properly detect wire arrays in l-values.

    Wires are not allowed as l-values of procedural assignments, even if
    the wire is an array. Fix the checker to detect this case event when
    the l-value is an array.
    committed Feb 19, 2009
  2. Shift of zero always returns zero.

    This is an optimization that also avoids some code generator
    problems downstream.
    committed Feb 19, 2009
  3. Make certain all index expressions have their width probed.

    It is possible for an identifier to have multiple index expressions.
    (For example, a part select of a memory word.) Make sure all the
    index expressions are probed for width and type.
    
    And also, note that the unary ! returns BOOL or LOGIC, not just
    the type of its operand. It is slightly different from the other
    unary operators in that way.
    committed Feb 18, 2009
Commits on Feb 17, 2009
  1. Handle some cases of self-determined repeat concatenations.

    The test_width for repeat-concatenations is tricky because it
    requires the evaluated value for the repeat expression. It should
    be OK to call elab_and_eval on that expression even during the
    test_width for the containing expression. We'll see.
    committed Feb 17, 2009
  2. @caryr

    Add support for 64 bit delays in procedural non-blocking assignments.

    This patch adds support for 64 bit non-blocking delays in procedural
    code. We fixed the procedural delay operator (blocking delays) earlier.
    This patch mostly mimics what was done there. The continuous assignment
    delay operator still needs to be fixed.
    caryr committed with Feb 16, 2009
Commits on Feb 16, 2009
  1. @caryr

    Add logical support for real values and error for invalid real argume…

    …nts.
    
    This patch adds logical support for real values (!, && and ||). It
    also prints an appropriate error message when a real value is
    incorrectly given to an operator that does not allow real arguments
    (bit-wise, reduction, shift and repeat/concatenation).
    caryr committed with Feb 13, 2009
  2. Fix propagation of calculated TRAN values through the island.

    Two bugs:
    (1) propagating values through the branch accidentally also
    did a part select.
    (2) Not all nodes of the branch nexus didn't receive a calculated
    values, even though they were all marked as done.
    
    In the process, I cleaned up the code a bit, and documented it for
    better understanding.
    committed Feb 16, 2009
Commits on Feb 10, 2009
  1. @caryr

    Add support for the other edges in a SDF file.

    This patch adds support for the other edges 01, 10, etc. These still
    need to be verified in the context of IOPATHs, but they are ignored
    in the timing checks and that's what was needed.
    caryr committed with Feb 9, 2009
  2. @caryr

    SDF files can have null delays.

    A SDF file can have null delays and for that case you are to use
    the existing delay value (do not change it). This patch adds that
    functionality.
    caryr committed with Feb 9, 2009
Commits on Feb 9, 2009
  1. @nickg

    Fix another case where VHDL input may be driven

    This fixes another corner case where the VHDL code generator
    would incorrectly generate code that drives an input with an
    output.
    nickg committed with Feb 8, 2009
  2. @caryr

    Add island EOS cleanup code

    This cleans up most of the memory allocated when building and
    island and the branches that connect to it.
    caryr committed with Feb 6, 2009
Commits on Feb 6, 2009
  1. @caryr

    Update the $sdf_annotate() compiletf and other fixes.

    This patch updates the compiletf for $sdf_annotate() to better
    check the arguments and to display the file and line location
    when an error/warning does occur. It does the same for the
    calltf messages. It also fixes a couple of subtle bugs.
    
    First we need to look for a NULL string not a NULL value. The
    result buffer should always be defined so will never be NULL.
    
    Next if a scope has no modules we should return like the module
    was not found (return 0) vs asserting.
    caryr committed with Feb 5, 2009
Commits on Feb 5, 2009
  1. @nickg

    Fix VHDL naming collisions with modules

    This fixes a bug where the renaming rules for modules
    would generate entity names that collided with already
    existing module names.
    nickg committed with Feb 5, 2009
  2. @caryr

    Make the addition of the local directory optional (include path).

    In the past we automatically added the local directory to
    the beginning of the include search path. This was found to
    conflict with what other tools do so this functionality is
    now only available when the -grelative-include option is
    given to iverilog.
    caryr committed with Feb 4, 2009
  3. @caryr

    vpi_free_object() is just a stub for vpiCallback objects.

    The code was using vpi_free_object() to free a vpiCallback
    object and that was creating a memory leak since this is a
    do nothing routine. You need to explicitly use delete.
    caryr committed with Feb 3, 2009
Commits on Feb 4, 2009
  1. Update mkinstalldirs to handle paths with spaces.

    The newer mkinstalldirs can handle paths that have spaces in them.
    While I'm at it, I also updated the Makefiles so that installation
    can also work to DESTDIR directories that have spaces.
    committed Feb 4, 2009
Commits on Feb 3, 2009
  1. @caryr

    Cast away const to avoid a warning when cleaning up const data.

    When cleaning up the vcd_list make sure to remove the const
    qualifier before freeing the ident. This is created with strdup.
    caryr committed with Feb 3, 2009
  2. @caryr

    The cleanup of &A and &PV can nest and cleanup some VCD memory.

    When cleaning up the &A<> and &PV<> we need to check if the handle
    argument is a nested call to another &A<> or &PV<> if it is then
    we need to also delete that construct.
    
    We also need to cleanup the vcd_info information list.
    caryr committed with Feb 2, 2009
  3. @nickg

    More VHDL naming fixes

    This handles the cases where:
        * Instance names contain leading/trailing underscores
        * Instance names contain consecutive underscores
        * Module names contain consecutive underscores
        * Module names contain leading/trailing underscores
    	* Ports may be inconsistently renamed
    nickg committed with Feb 1, 2009
Commits on Feb 1, 2009
  1. @nickg

    Support named blocks with local variables in VHDL target

    This patch adds code to generate process-local variables
    for scopes of type IVL_SCT_BLOCK. This also handles using
    the correct assignment operator (:=) for the local VHDL
    variables.
    nickg committed with Jan 31, 2009
  2. @caryr

    More vvp EOS memory cleanup.

    This patch cleans up callbacks for arrays, named events and
    real variables. It also cleans up the decimal index constants
    for net array words.
    caryr committed with Jan 30, 2009
  3. @caryr
  4. @caryr

    Move the vvp private properties to vvp/vpi_priv.h

    This patch moves the vvp private properties from vpi_user.h to
    vvp/vpi_priv.h.
    caryr committed with Jan 29, 2009
  5. @caryr

    Add memory freeing and pool management for valgrind.

    This patch adds code to free most of the memory when vvp
    finishes. It also adds valgrind hooks to manage the various
    memory pools. The functionality is enabled by passing
    --with-valgrind to configure. It requires that the
    valgrind/memcheck.h header from a recent version of
    valgrind be available. It check for the existence of this
    file, but not that it is new enough (version 3.1.3 is known
    to not work and version 3.4.0 is known to work).
    
    You can still use valgrind when this option is not given,
    but you will have memory that is not released and the
    memory pools show as a single block.
    
    With this vvp is 100% clean for many of the tests in the
    test suite. There are still a few things that need to be
    cleaned up, but it should be much easier to find any real
    leaks now.
    
    Enabling this causes a negligible increase in run time and
    memory. The memory could be a problem for very large
    simulations. The increase in run time is only noticeable on
    very short simulations where it should not matter.
    caryr committed with Jan 29, 2009
Commits on Jan 30, 2009
  1. @ldoolitt

    Lint removal

    elaborate.cc:2456: warning: suggest parentheses around comparison in operand of &
    vpi/vcd_priv.c:210: warning: operation on 'idx' may be undefined
    
    Probable behavior change.  Passes testsuite.
    ldoolitt committed with Jan 29, 2009
  2. @caryr

    Cleanup allocated memory in the math functions and veriusertfs.

    This patch cleans up the V-2005 and V-analog math functions to
    free their allocated memory at the end of simulation. It also
    modifies the veriusertfs code to do the same thing.
    
    It also closes the VCD file at EOS.
    caryr committed with Jan 29, 2009