Skip to content
Commits on Apr 29, 2008
  1. @caryr

    Add ifnone functionality.

    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.
    caryr committed with Apr 28, 2008
  2. A script for making snapshots

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

    Add better error recovery for failed task/function definition.

    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.
    caryr committed with Apr 25, 2008
  2. @caryr

    Allow multiple ports in single ANSI decl for tasks and functions

    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.
    caryr committed with Apr 25, 2008
  3. @caryr

    Ignore a few more compiler directives.

    This patch adds `default_decay_time, `default_trireg_strength,
    `delay_mode_zero and `line as ignored compiler directives.
    caryr committed with Apr 23, 2008
  4. @caryr

    Add vpiScalarVal to signal_put_value().

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

    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 <>
    committed Apr 27, 2008
Commits on Apr 26, 2008
  1. Handle multiple active specify delays.

    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.
    committed Apr 25, 2008
Commits on Apr 24, 2008
  1. Fix >= compare not detecting right X bits.

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

    Update the magnitide compare and bitwise not operators to use
    optimized methods where possible.
    committed Apr 23, 2008
  2. Optimize the SUB instruction

    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.
    committed Apr 23, 2008
  3. More efficient way to set arithmetic results into vector4.

    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.
    committed Apr 23, 2008
  4. The inputs to logical and/or are condition expressions.

    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.
    committed Apr 22, 2008
  5. @caryr

    Add checks that verify an always statement has delay.

    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!
    caryr committed with Apr 22, 2008
  6. @caryr

    Generate mixed real/vector expressions when needed.

    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.
    caryr committed with Apr 21, 2008
  7. Protect left shift from shifting too far.

    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
    committed Apr 22, 2008
Commits on Apr 22, 2008
  1. Fix left shift of unsized constants in sef-determined context.

    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
    committed Apr 22, 2008
Commits on Apr 21, 2008
  1. @caryr

    Check delay expressions correctly and give a better message.

    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.
    caryr committed with Apr 18, 2008
  2. Optimize some common vvp_bit4_t operators.

    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.
    committed Apr 20, 2008
  3. Remove dead code related to bit arrays/vectors

    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.
    committed Apr 20, 2008
  4. Remove most dependencies on vvp_bit4_t encoding.

    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 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.
    committed Apr 20, 2008
Commits on Apr 20, 2008
  1. Rework vvp_vector4_t to use planar a/b bits instead of interleaved.

    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.
    committed Apr 20, 2008
Commits on Apr 19, 2008
  1. Support localparam integer types.

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

    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.
    committed Apr 18, 2008
Commits on Apr 18, 2008
  1. @caryr

    Add unlink from driver to deassign and zero link pointer.

    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).
    caryr committed with Apr 16, 2008
  2. More reliably handle make install from read-only directory

    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.
    committed Apr 17, 2008
  3. @caryr

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

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

    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.
    committed Apr 17, 2008
Commits on Apr 16, 2008
  1. Detect thread bit allocation failures

    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.
    committed Apr 15, 2008
  2. Trim results of unsized constant add to prevent width expansion

    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.
    committed Apr 15, 2008
  3. @caryr

    Only pad parameter constants out to their defined width.

    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.
    caryr committed with Apr 15, 2008
Something went wrong with that request. Please try again.