Permalink
Commits on Nov 18, 2008
  1. Fix incorrect temporary size with padding

    nickg authored and steveicarus committed Nov 18, 2008
    Fix for pr2224949
    
    The compiler generates a concatenation LPM to zero-pad ports when the
    signal widths don't match up. However, when the VHDL generator generated
    the input signals to this LPM it incorrectly sized them to be the width
    of the result.
  2. VHDL: make casez support 'x' and handle a full don't care case.

    caryr authored and steveicarus committed Nov 18, 2008
    The VHDL converter erroneously treated a casez and casex exactly
    the same. In reality a casez compares a 'x' value (it is not a
    don't care). It also adds support for a full don't care case by
    just returning True for the condition.
  3. Improve error message about signal type conflict.

    steveicarus committed Nov 18, 2008
    When the parser detects a signal type conflict, print a more useful
    error message. In the process, be more careful with what line number
    is actually attributed to the declaration.
  4. Remove old real array word debug message.

    caryr authored and steveicarus committed Nov 18, 2008
    This message appears to be left over from the original implementation
    of real array words.
  5. Evaluate constant negated reductions.

    caryr authored and steveicarus committed Nov 17, 2008
    This patch adds support for calculating the negated reductions
    (~&, ~| and ~^) in the compiler when given a constant argument.
  6. A non-negated reduction needs to change a 1'bz into a 1'bx.

    caryr authored and steveicarus committed Nov 17, 2008
    In a procedural single bit non-negated reduction (&, | or ^)
    we need to translate a 1'bz to a 1'bx. The easiest way to do
    that is with two %inv opcodes. This patch modifies the code
    generator to do this for this very special case.
  7. Fix MinGW suffix configuration.

    caryr authored and steveicarus committed Nov 17, 2008
    In the driver-vpi file we need to use g for the suffix replacement
    so that both libraries get changed.
    
    Also added an end line to the config.h.in file.
Commits on Nov 17, 2008
  1. Create support for the --enable-suffix configuration option.

    steveicarus committed Nov 17, 2008
    This configure option causes the installed commands to have
    a suffix string that makes them distinct from other versions
    that also have a suffix string. This allows for multiple
    installed versions of Icarus Verilog.
    
    Also, move installed C/C++ header files into a subdirectory of
    their own under the target include directory, to make clearer
    the purpose and source of those files.
  2. Correct and enhance some debug_elaborate messages

    ldoolitt authored and steveicarus committed Nov 16, 2008
    Make port number self-consistent, starting at 1.
    Add messages marking the start and stop of recursive elaboration.
  3. Quiet compiler warnings

    ldoolitt authored and steveicarus committed Nov 16, 2008
    Eliminate three "warning: suggest parentheses around assignment used as truth value"
    Obviously not needed, but it's easier to add the superfluous parentheses
    than remember that these warnings are benign.
Commits on Nov 16, 2008
  1. Fix special case that one of the arguments of a compare is a real exp…

    steveicarus committed Nov 16, 2008
    …ression.
    
    If one of the arguments of a comparison expression has a real value, then
    the expression with is 1 no matter the width of the other argument. This
    means that the arguments may have different widths in this special case.
    Patch is from pr2251119, suggested by Martin Whitaker.
  2. Improved automatic variable error reporting.

    Martin Whitaker authored and steveicarus committed Nov 15, 2008
    This patch moves the checks for automatic variables being passed to
    the $monitor or $strobe system tasks from the calltf routine to a
    new compiletf routine. It also adds the file name and line number
    of an offending call to the error message.
  3. Fix select from non-variable-reference error (pr2281519)

    nickg authored and steveicarus committed Nov 14, 2008
    VHDL can't select bits from arbitrary expression so sometimes
    translating IVL_EX_SELECT would fail. This is easily fixed by
    replacing the select with a shift in this instance (and the
    resizing)
Commits on Nov 15, 2008
  1. Fix for pr2276163.

    Martin Whitaker authored and steveicarus committed Nov 15, 2008
    The VVP %join function was incorrectly treating the return from a
    non-automatic function as a return from an automatic function in
    the case that the non-automatic function result was being used as
    a parameter to an automatic function. This patch fixes this error.
  2. Add support for the 1364-2001 generate of a named block.

    caryr authored and steveicarus committed Nov 15, 2008
    This is obsolete in 1364-2005, but is supported 1364-2001.
    Icarus already supported generate with unnamed block.
  3. Avoid crash with typo in varaible name

    ldoolitt authored and steveicarus committed Nov 14, 2008
    A simple typo in the rhs of an expression would crash the compiler.
    Example:
    
    module crash3;
    reg clk;
    integer cnt1=0;
    always @(posedge clk) begin
            cnt1 <= (cnt==81) ? 0 : (cnt1+1);
    end
    endmodule
  4. Add support for arrayed instances with inout ports.

    caryr authored and steveicarus committed Nov 14, 2008
    A NetTran (TRAN_VP) can be used to connect arrayed instance inout
    ports. This allows bi-directionality and conflict resolution.
  5. Shifting a signed constant should just return the L-value.

    caryr authored and steveicarus committed Nov 14, 2008
    We already covered the case of shifting zero, but the case of
    shifting a signed constant was missed.
Commits on Nov 13, 2008
  1. Rework $plusarg routines.

    caryr authored and steveicarus committed Nov 13, 2008
    This patch addresses a number of issues:
    
    Rewrote the $test$plusargs and $value$plusargs routines to have
    better error/warning messages, to support runtime strings, to
    correctly load bit based values (truncating, padding, negative
    value), added support for the real formats using strtod() and
    added "x/X" as an alias for "h/H" to match the other part of
    Icarus.
    
    Rewrite the vpip_{bin,oct,hex}_str_to_vec4 routines to ignore
    embedded "_" characters. Add support for a negative value and
    set the entire value to 'bx if an invalid digit is found. A
    warning is printed for this case.
    
    Rewrite vpip_dec_str_to_vec4 to ignore embedded "_" characters,
    to support a single "x" or "z" constant and to return 'bx if an
    invalid digit is found. A warning is printed for this case.
    
    It simplifies the system task/functions error/warning messages.
    
    It removes the signed flag for the bin and dec string conversions.
    This was not being used (was always false) and the new negative
    value support makes this obsolete.
    
    Add support for a real variable to handle Bin, Oct, Dec and Hex
    strings. They are converted into a vvp_vector4_t which is then
    converted to a real value.
    
    Add support for setting a bit based value using a real value.
    
    Removed an unneeded rfp signal in vpip_make_reg()
  2. Fix for pr2271367.

    Martin Whitaker authored and steveicarus committed Nov 12, 2008
    This patch fixes a bug introduced by one of the checks for illegal
    use of automatically allocated variables.
  3. Add complete list of VHDL reserved words

    nickg authored and steveicarus committed Nov 12, 2008
    make_safe_name now makes sure a VHDL signal is never given a
    name that conflicts with any reserved words. If it does, we
    just prepend VL_.
    
    (This code was already present, but the full list of reserved
    words wasn't.)
  4. Merge branch 'vhdl'

    steveicarus committed Nov 13, 2008
  5. Fix for leak in thread vector allocation.

    Martin Whitaker authored and steveicarus committed Nov 12, 2008
    In the vvp code generator, when zero/sign extending a sub-expression,
    the sub-expression is first evaluated and stored in one location in
    the thread vector store, then is copied and extended into a second
    location. The storage used for the initial sub-expression evaluation
    is never deallocated.
  6. Fix bug generating code for shift of constant zero.

    steveicarus committed Nov 13, 2008
    The code generator detects this case, but instead of returning the
    constant zero, it breaks out and writes partial code for the shift.
  7. Make the associative sum constant elimination more resilient to size …

    steveicarus committed Nov 13, 2008
    …details.
    
    The NetEBAdd::eval_tree method is able to use the associative property
    of addition to reduce some constants, but it is picky about widths.
    Make it a little bit more resilient to expression widths.
Commits on Nov 12, 2008
  1. Fix overly restrictive check for slices

    nickg committed Nov 12, 2008
    Fixes some instances of "can only select from a variable reference"
  2. Scan concat arguments with test_width.

    steveicarus committed Nov 12, 2008
    Even though we cannot immediately give a width for a concatenation
    that has a repeat expression (the expression must be evaluated first)
    we still must scan the test_width of the arguments so that they can
    resolve their types.
  3. Checks for illegal use of automatically allocated variables.

    Martin Whitaker authored and steveicarus committed Nov 9, 2008
    This patch adds a number of compile and run-time checks for illegal
    uses of variables declared in automatic tasks and functions. It
    also adds a check for event expressions in automatic tasks that use
    features not yet supported in VVP.
Commits on Nov 8, 2008
  1. Fix numerous problems with the divide and modulus operators.

    caryr authored and steveicarus committed Nov 8, 2008
    This patch fixes a number of problems related to the divide and
    modulus operators.
    
    The net version (CA) of modulus did not support a signed version.
    
    Division or modulus of a value wider than the machine word did
    not correctly check for division by zero and return 'bx.
    
    Fixed a problem in procedural modulus. The sign of the result is
    only dependent on the L-value.
    
    Division or modulus of a signed value that was the same width as
    the machine word was creating an incorrect sign mask.
    
    Division of a signed value that would fit into a single machine
    word was not checking for division by zero.
    
    Division or modulus of a wide value was always being done as
    unsigned.
    
    Added a negative operator for vvp_vector2_t. This made
    implementing the signed wide division and modulus easier.
Commits on Nov 5, 2008
  1. ivlpp - clear lexor dynamic state information for flex >= 2.5.9

    caryr authored and steveicarus committed Nov 4, 2008
    For flex version 2.5.9 and later there is a function
    "yylex_destroy()" that clears any space dynamically
    allocated by the scanner.
Commits on Nov 4, 2008
  1. Fix a memory leak and release all dynamically allocated memory (ivlpp)

    caryr authored and steveicarus committed Nov 4, 2008
    This patch fixes a minor memory leak in ivlpp and releases all
    dynamically allocated memory before the program exits. Other than
    the dynamically allocated push state buffer in flex, ivlpp has no
    valgrind memory errors or warnings.