Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Commits on Sep 3, 2012
  1. Rework packed dimensions handling

    Make packed structs more obviously parts of a vector.
    Handle arrays of structs in certain cases.
Commits on Aug 29, 2012
  1. @arunpersaud

    updated FSF-address

    arunpersaud authored committed
Commits on Jul 22, 2012
Commits on Mar 2, 2011
  1. @martinwhitaker

    Expression width rework.

    martinwhitaker authored committed
    This patch is a major rework of expression elaboration and
    evaluation in the compiler, aimed at better compliance with
    the IEEE standard.
Commits on Mar 1, 2011
  1. @caryr

    Add support for passing variable indexed part select type information

    caryr authored committed
    This patch modifies the compiler and the ivl interface to pass the
    type of indexed part select that is being represented (up/down) in
    a procedural L-value or R-value. This is needed by any back end that
    wants to correctly denormalize the (zero based) base expression.
Commits on Feb 11, 2011
  1. @caryr

    Fix a number of file/line issues in the compiler.

    caryr authored committed
    This patch fixes a bunch of objects to have the correct file/line
    information. It also adds support for getting file/line information
    for events (named events have a definition line).
Commits on Dec 6, 2010
  1. @martinwhitaker

    Cleanup after parameter expression rework.

    martinwhitaker authored committed
    This patch removes some code made redundant by the rework of
    parameter expression evaluation. It also documents the new
    -g option.
Commits on Nov 20, 2010
  1. Describe enum type to code generators

    This gets the enumeration type through to the ivl_target API so
    that code generators can do something with it. Generate stub
    output with tgt-stub, and generate the proper vvp run time to
    make simple enumerations work from end to end.
Commits on Nov 7, 2010
  1. Handle system functions that return enumerations.

    There are a few internal system functions that return enumeration
    values, and the type checker needs to properly account for that.
Commits on Nov 4, 2010
  1. Get the netenum_t base type data from the pform.

    The pform propagates the parsed enum base type information
    to the elaborator so that the base type can be fully elaborated.
    This is necessary to get the types of the enumeration literals
Commits on Nov 3, 2010
  1. Test type correctness during elaboration.

    Create a netenum_t class to carry the enumeration type in the
    netlist.h structures, and use that type to check enumerations
    with assignments.
Commits on Oct 31, 2010
  1. Enum names in r-value expressions

    When enum names are used as r-values in expressions, use their
    values. Treat the enum names similar to (but not exactly as)
    localparams so that they fit into the rest of the elaboration
    flow naturally.
Commits on Oct 2, 2010
Commits on Jul 29, 2009
  1. @caryr

    Fix power operator width in self-determined context.

    caryr authored committed
    In a self determined context the width of the power operator
    is defined to be the left argument width.
  2. @caryr

    Real constants are always signed.

    caryr authored committed
    Set the signed_flag_ for real constants.
Commits on Dec 19, 2008
  1. Fix the signed-ness calculations of +- in parameter expressions.

    This fixes up the elaboration of binary expressions found in
    parameter expressions. Parameter expressions are special because
    they elaborate early, before all the other parameters are necessarily
Commits on Nov 23, 2008
Commits on Nov 19, 2008
  1. Fix concatenations losing track of its repeat values.

    In some cases, it was possible for the NetEConcat expression to
    lose track of the repeat expression, causing the output result to
    have a broken concatenation expression.
    This also adds some internal checks that the concatenation widths
    add up properly.
Commits on Nov 4, 2008
  1. Bring discipline natures all the way to the ivl_target API.

    The natures of disciplines were already available, this just brings
    the information forward to the ivl_target.h API and exposes them via
    access functions.
Commits on Oct 14, 2008
  1. Merge test_width rework

    This collection of patches fixes a variety of bugs with the handling
    of signed-ness in exprsesions.
  2. @ldoolitt

    Shadow reduction part 2

    ldoolitt authored committed
    Continue cleaning up shadowed variables, flagged by turning on -Wshadow.
    No intended change in functionality.  Patch looks right, and is tested
    to compile and run on my machine.  No regressions in test suite.
Commits on Oct 11, 2008
  1. Real valued multiply are always signed.

    By definition.
  2. Less agressive padding of unsized lossless addition.

    When doing lossless addition to an unsized constant, we make the size
    be width of an integer, only to be consistent with other tools. In fact,
    don't go overboard if we don't have to.
Commits on Oct 2, 2008
  1. Process arguments to bitwise operator using singned/unsigned rules.

    The arguments to bitwise operators are padded if *either* of the operands
    is unsigned. This is according to the sign/unsigned expression rules
    of Verilog, and also matches the behavior of the "Big-3."
Commits on Sep 26, 2008
  1. Multiply of real values has width of 1.

    When a multiply expression is IVL_VT_REAL, then the default width is
    the width of the operands, and not the sum of the operands. In fact, it
    should turn out to be 1.
    Also, the width of the multiply expression when we get to the ivl_target
    API, need not be the sum of the widths of its arguments. In fact, if the
    arguments are signed, that would be completely wrong. So adjust the
    stub target to properly test this constraint.
Commits on Aug 30, 2008
Commits on Aug 16, 2008
Commits on Aug 5, 2008
  1. Create a branch object to be the argument to the access function.

    The NetBranch object is connected, but not like an object, so the
    NetPins object base class is factored out from NetObj to handle the
    connectivity, and the NetBranch class uses the NetPins to connect a
    Also, account for the fact that nets with a discipline are by default
Commits on Jul 31, 2008
  1. Detect and elaborate AMS access functions.

    Detect function call expressions that turn out to be calls to the
    access function of a nature. Elaborate the access function and stub
    the emit code. This gets the access function just short of the code
Commits on May 17, 2008
  1. Add support for explicit parameter types, including real.

    Before this, the types of parameters were always logic, only the
    width and signed-ness could be controlled. A parameter may take
    on implicit real values if the expression were real.
    With this patch, the type for the parameter can be explicitly set
    to logic or real. This also means that the parameter real valued
    expressions need to be more crefully treated, possibly with casting
    integral expressions to real values, or real expressions to integral
Commits on May 9, 2008
  1. When padding logic constants, sign extend x/z properly.

    If there is an x or z bin in the sign position of a logic number to
    be padded, pad with the x or z, not zero.
Commits on May 4, 2008
  1. Implement abs/min/max operators for real values.

    Implement in behavioral the abs/min/max operators for real values.
    The parser treats these builtin functions as operators, unary or
    binary, and elaborates them appropriately.
    Also add enough code generator support to handle real valued expressions
    in thread context.
Commits on Mar 9, 2008
  1. @caryr

    Major rework of the ternary operator elaboration code.

    caryr authored committed
    This patch reworks much of the ternary code to short circuit when
    possible and supports real values better. It adds a blend operator
    for real values that returns 0.0 when the values differ and the value
    when they match. This deviates slightly from the standard which
    specifies that the value for reals is always 0.0 when the conditional
    is 'bx. There are also a couple bug fixes.
    These fixes have not been ported to continuous assignments yet.
    Ternary operators used at compile time and in procedural assignments
    should be complete (short circuit and support real values).
Commits on Feb 12, 2008
  1. @caryr

    Add signed bit based power to continuous assignments.

    caryr authored committed
    This patch adds the power operator for signed bit based values
    in a continuous assignment. It also fixes a few other power
    expression width problems. The expression width is still not
    calculated correctly, since the correct method can produce huge
    possible bit widths. The result is currently limited to the width
    of the native long. This is because lround() is used to convert
    from a double to an integer. A check in the code generator protects
    the runtime from this limitation.
Something went wrong with that request. Please try again.