Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Commits on Apr 29, 2008
  1. @caryr

    Add ifnone functionality.

    caryr authored committed
    This patch adds ifnone functionality. It does not produce an
    error when both an ifnone and an unconditional simple module
    path are given. For this case the ifnone delays are ignored.
  2. A script for making snapshots

    authored
    Include in git a script for making snapshots. This script makes a
    bundle that can compile outside of git.
Commits on Apr 28, 2008
  1. @caryr

    Add better error recovery for failed task/function definition.

    caryr authored committed
    This patch does a better job of recovering from an error in a
    task or function definition. This prevents the compiler from
    printing many irrelevant error messages.
  2. @caryr

    Allow multiple ports in single ANSI decl for tasks and functions

    caryr authored committed
    This patch adds the functionality to tasks/functions to handle the
    declaration of multiple ports using a single ANSI declaration. It
    also deletes the old range vector before it adds the new one. The
    tasks and functions are different than modules so we need to copy
    the range for them.
  3. @caryr

    Ignore a few more compiler directives.

    caryr authored committed
    This patch adds `default_decay_time, `default_trireg_strength,
    `delay_mode_zero and `line as ignored compiler directives.
  4. @caryr

    Add vpiScalarVal to signal_put_value().

    caryr authored committed
    This patch adds functionality for vpiScalarVal to signal_put_value().
    It also factors out the scalar to bit4 code from vpiVectorVal.
  5. Make casts from double to unsigned bits portable.

    authored
    Several places in Icarus Verilog try to get the bits of the integer
    part of a double by casting to unsigned or unsigned long. But that
    causes some compilers to generate smart code that converts all values
    less then 0 to 0, even though we are after the bits, not the math
    value. So be careful to do this cast only to non-negative values and
    uminus the bits if necessary to get exactly what we want.
    
    Signed-off-by: Stephen Williams <steve@icarus.com>
Commits on Apr 26, 2008
  1. Handle multiple active specify delays.

    authored
    Fix handling of cases where multiple specified delays are activated
    for a given output. Need to apply the standard selection criteria
    that gets the minimum value.
Commits on Apr 24, 2008
  1. Fix >= compare not detecting right X bits.

    authored
    Oops, never properly checking that the right value has XZ bits.
Commits on Apr 23, 2008
  1. optimize vvp_vector4_t magnitude compare and bitwise not.

    authored
    Update the magnitide compare and bitwise not operators to use
    optimized methods where possible.
  2. Optimize the SUB instruction

    authored
    The %sub instruction didn't have the efficent implementation that
    the %add instructions used. Update subtraction to use the array
    method, so that it gets the same performance benefits.
  3. More efficient way to set arithmetic results into vector4.

    authored
    The vvp_vector4_t often receives the results of vector arithmetic.
    Add an optimized method for setting that data into the vector. Take
    into account that arithmetic results have no X/Z bits, etc.
  4. The inputs to logical and/or are condition expressions.

    authored
    Logical and/or take as inputs condition expressions, which are scalar
    expressions. Be sure to reduce vectors using proper logic to get the
    right condition value.
  5. @caryr

    Add checks that verify an always statement has delay.

    caryr authored committed
    This patch adds check to determine if an always block has delay
    in it or not. If there is no delay a runtime infinite loop will
    occur. For the indeterminate case it will print a warning message
    if the new -Winfloop flag is given. This flag is not part of the
    -Wall check!
  6. @caryr

    Generate mixed real/vector expressions when needed.

    caryr authored committed
    When generating a real expression you can have bits of the
    expression that use vector only operands. When this happens
    evaluate that part of the expression as a vector and then
    convert it to a real value.
  7. Protect left shift from shifting too far.

    authored
    On some systems, 1UL<<X will make a mess if X is the size of
    an unsigned long. This especially seems to be a problem on i386
    systems. Protect those shifts in the vvp_net.cc.
Commits on Apr 22, 2008
  1. Fix left shift of unsized constants in sef-determined context.

    authored
    When left-shifting unsized constants in self-determined contexts, the
    constant value is normally pared down to its minimum required width.
    But this practically guarantees loss of bits. Instead, detect this
    special case and give the unsized constant a width of an integer.
    
    Still allow for the super-special case that the shifted value and the
    shift amount are constants. In that case, the result width (and value)
    can be calculated precisely and there is no need to resort to default
    widths.
Commits on Apr 21, 2008
  1. @caryr

    Check delay expressions correctly and give a better message.

    caryr authored committed
    This patch uses the true delay expression count not the truncated
    one to check that the number of delay expressions is correct.
    It also prints the actual number of expressions it found when
    printing the error message.
  2. Optimize some common vvp_bit4_t operators.

    authored
    By slightly altering the vvp_bit4_t encoding, a few simple
    optimizations become possible. By making Z==2 and X==3, the
    conversion from X/Z to X is a simple shift-or, and this can
    be used to reduce the size of some of the bit4 operators.
  3. Remove dead code related to bit arrays/vectors

    authored
    In previous incarnations of the vvp runtime, bit vectors were passed
    around as arrays of unsigned char that charried bit4 vectors. That
    is no longer used. Remove the last vestiges of that dead code.
  4. Remove most dependencies on vvp_bit4_t encoding.

    authored
    Remove dependencies on vvp_bit4_encoding outside of the vvp_net
    core types. The table_functor_s class was the worst offfender and
    was barely used, so it is now removed completely. There are a few
    opcodes in vhtread.cc that also make vvvp_bit4_t encoding
    assumptions (and used casts) and those have been fixed. There
    were also various VPI interface functions that are fixed.
Commits on Apr 20, 2008
  1. Rework vvp_vector4_t to use planar a/b bits instead of interleaved.

    authored
    The vvp_vector4_t holds 4-value logic. This patch changes the encoding
    of 4-value bits in the vector to use separate A- and B bit vectors,
    with the B- vector signaling the A- bits that are not 0/1. This
    allows rapid conversion to 2-value logic, and rapid tests for X
    and Z values.
Commits on Apr 19, 2008
  1. Support localparam integer types.

    thiede authored committed
    Support localparam integer types exactly the same way that they
    are handled for parameters. (This patch was submitted to pr1946144.)
  2. User defined functions can have ANSI-style ports

    authored
    Update the rules for parsing user function definitions to allow
    Verilog-2001 ANSI style port declarations. In the process, also
    unify with the user task port declaration so that the types don't
    diverge. The rules are the same for both, with the extra constraint
    that function ports must all be input. This latter rule is checked
    later, during elaboration, so that the task/function pform code
    can be shared, and better error messages can be generated.
Commits on Apr 18, 2008
  1. @caryr

    Add unlink from driver to deassign and zero link pointer.

    caryr authored committed
    This patch fixes deassign to allow it to unlink from a driver.
    It also zeros the cassign_link and force_link pointers after
    they have been unlinked. Not doing this will cause an assert
    if deassign/release are called multiple times (variable only).
  2. More reliably handle make install from read-only directory

    authored
    commonly, the make install is run in a compiled directory by a
    different user (i.e. an administrator) that doesn't necessarily
    have write access to the build directory. This patch fixes it so
    that the test that the version.h is up to date doesn't need to
    write a temporary file in the build directory.
    
    It also makes sure that if there is a real need to update the
    verion.h, and it is not writable, then properly fail the build.
  3. @caryr

    Add force/release and assign/deassign for real values.

    caryr authored committed
    This patch adds assign/deassign for real variables and force/release
    for real variables and nets.
Commits on Apr 17, 2008
  1. Fix parsing of precompiled macro definitions

    authored
    Passing preprocessor definitions forward into library cells was broken
    by this bug in processing the precompiled macro values that were written
    by the main preprocessor.
Commits on Apr 16, 2008
  1. Detect thread bit allocation failures

    authored
    Detect thread bit allocation failures and fail gracefully. Print an
    error message that points at the expression in question, and return
    with an error code so that the compiler exits with an error.
  2. Trim results of unsized constant add to prevent width expansion

    authored
    When constant values are added to get another constant value, and the
    expression is not otherwise a fixed size, then trim the result to
    prevent unbounded expansion of unsized expression with.
    
    In the process, find and fix a bug in the vtrim function that caused
    an assert if trimming were not possible for an unsigned value.
  3. @caryr

    Only pad parameter constants out to their defined width.

    caryr authored committed
    This patch fixes the elaboration of parameters in a continuous
    assignment to only pad the constants to their defined width.
    Previously they were padded to the l-value width which resulted
    in a vvp runtime error. This appears to be because the width
    for padding is the defined width, but the constant is printed
    using its internal width which previously could be larger than
    its defined width.
    
    These constants are local nets so I added that flag as well.
Something went wrong with that request. Please try again.