Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Commits on Sep 3, 2012
  1. Rework symbol search to work incrementally.

    This is necessary to handle paths that turn out to end with
    member names instead of symbol names.
  2. 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 May 25, 2012
  1. Merge branch 'pei1'

Commits on May 23, 2012
Commits on May 17, 2012
  1. Allow specparam declarations outside specify blocks.

    Martin Whitaker authored committed
    This patch extends the compiler to support all specparam declarations
    allowed by the 1364-2005 standard. For compatibility with other
    simulators, it allows specparam values to be used in any constant
    expression, but outputs a warning message and disables run-time
    annotation of a specparam if it is used in an expression that must
    be evaluated at compile time.
Commits on Apr 9, 2012
  1. @ldoolitt @caryr

    Spelling refresh

    ldoolitt authored caryr committed
Commits on Feb 12, 2012
  1. Handle indexed bit select of packed arrays.

    This handles a few cases where the non-constant bit selects are
    in the final index. This doesn't handle all the cases of packed
    arrays, but it handles some common cases.
Commits on Feb 11, 2012
  1. Get packed signals working through to simulation in some situations.

    When dynamic indexing of early dimensions is not needed, we can get
    pretty far with getting packed arrays to work.
Commits on Feb 7, 2012
Commits on Apr 7, 2011
  1. @martinwhitaker

    Rework of constant expression error reporting.

    martinwhitaker authored committed
    This patch changes the method used to signal that a constant expression
    is being elaborated from flags stored in global variables to flags
    passed down the call chain. It also generates more informative error
    messages when variable references are found in a constant expression.
Commits on Apr 4, 2011
  1. Support collapse of PartSelect::PV to concatenation

    During elaboration, it is sometimes efficient to collapse a
    collections of PV drivers to a net to a single concatenation.
    This removes a bunch of resolutions and other nodes, and also
    is the only way that 2-value logic should work.
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 Dec 6, 2010
  1. @martinwhitaker

    Rework of parameter expression elaboration.

    martinwhitaker authored committed
    The compiler currently performs parameter expression elaboration before
    performing parameter overrides. This means that the information needed
    to correctly determine the expression type and width may not be available
    at the time elaboration is performed. This patch reworks the code to
    delay elaboration until after all overrides have been performed. It
    also provides a new -g option that controls how the width of parameter
    expressions is calculated when the parameter itself is unsized.
Commits on Nov 28, 2010
  1. Merge branch 'master' into work2

Commits on Nov 6, 2010
Commits on Nov 2, 2010
  1. @caryr

    Fix some -Wextra warnings and some other bug fixes/enhancements.

    caryr authored committed
    This patch covers more than it should. It removes many of the -Wextra
    warnings in the main ivl directory. It also makes some minor code
    improvements, adds support for constant logicals in eval_tree (&&/||),
    adds support for correctly sign extending === and !==, it starts to
    standardize the eval_tree debug messages and fixes a strength bug
    in the target interface (found with -Wextra). The rest of the warnings
    and eval_tree() rework will need to come as a second patch.
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 20, 2010
  1. Cast expressions from logic to bool.

    Handle assignments from logic to bool variables by inserting
    the proper cast expression nodes.
Commits on Oct 16, 2010
  1. Add a net node for casting to IVL_VT_BOOL values.

    BOOL values have a specific cast from LOGIC, this node takes care
    of it. Also arrange for the elaboration to insert them in the right
    planes and for the code generator to generate them.
Commits on Oct 2, 2010
Commits on Jun 18, 2010
  1. @caryr

    Fix the compiler and modpath scaling of real delays.

    caryr authored committed
    A real delay must be scaled and rounded using the local precision
    before it is finally scaled to the simulation time units. This
    patch fixes the compiler to do this correctly or generate the
    correct code for run time calculated delays. Delays in a CA
    already worked correctly. The run time was also fixed to scale
    modpath (SDF back annotation) delays correctly.
Commits on Apr 18, 2009
  1. @caryr

    Warn the user if they use both a default and `timescale based delay.

    caryr authored committed
    This patch add code to print a warning message if it finds both a
    default and `timescale based delays. The -Wall or more specifically
    the -Wtimescale flag can be used to find the module with the missing
    `timescale directive.
Commits on Feb 28, 2009
  1. @caryr

    Add better constant user functions are not supported messages.

    caryr authored committed
    This patch adds messages in various places to warn that constant
    user functions are not supported. It uses a global variable to
    indicate when we are in a constant context. This is a bit of a
    kludge, but works well without needing to change a bunch of code.
    It is interesting to note that ports are elaborated late enough
    that if we had the constant function evaluation code they would
    evaluate correctly. This also applies to the function return
    range, the concatenation repeat, specparams and initial values.
    Signal definitions are early enough that elaboration is what is
    failing because the function body is not available (has not been
    elaborated). The same thing applies to both parameters and
Commits on Feb 16, 2009
  1. @caryr

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

    caryr authored committed
    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).
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 26, 2008
  1. During test_width is not the time to assert on no_type

    unary expressions that have problems should not assert in the
    test_width method. Instead, let the error propagate back and be
    handled during expression elaboration. This found a few places
    where expression widths/types weren't probed before elaboration.
Commits on Nov 19, 2008
  1. @caryr

    Pads and local signal file/line should be related to creation location.

    caryr authored committed
    When padding a signal or when creating a local signal the file and
    line information should be related to where the new object was
    created not the signal value it is being created from.
    This patch modifies the NetE* pad_to_width() routines to take a
    LineInfo object to set the location to the correct value.
    It fixes some set_line() calls to use the correct location.
    It fixes ports to not set the file/line information if it is
    already defined. Doing this was causing the definition of
    signals to become the instantiation instead of the real
    module declaration.
Commits on Oct 30, 2008
  1. Rework of automatic task/function support.

    Martin Whitaker authored committed
    This patch splits any VVP net functor that needs to access both
    statically and automatically allocated state into two sub-classes,
    one for handling operations on statically allocated state, the
    other for handling operations on automatically allocated state.
    This undoes the increase in run-time memory use introduced when
    automatic task/function support was first introduced.
    This patch also fixes various issues with event handling in automatic
    scopes. Event expressions in automatic scopes may now reference either
    statically or automatically allocated variables or arrays, or part
    selects or word selects thereof. More complex expressions (e.g.
    containing arithmetic or logical operators, function calls, etc.) are
    not currently supported.
    This patch introduces some error checking for language constructs
    that may not reference automatically allocated variables. Further
    error checking will follow in a subsequent patch.
Commits on Oct 11, 2008
  1. The test_width methods scan and mark expressions with type and size.

    Later passes need the intermediate results for width and size so that
    some special cases, were self-determined arguments occur, can be
    processed properly during elaboration. This can be especially tricky
    and interesting for ternary expressions.
Commits on Oct 3, 2008
  1. Sign extend r-values that refuse to pad themselves.

    There are cases where the r-value doesn't pad itself to the width
    that is requested by the call to elaborate_expr. This impacts the
    elaboration of PGAssign. Pad/sign extend as appropreate.
Commits on Sep 26, 2008
  1. Unify all the r-value elaboration.

    R-value expression elaboration happens in several places. Factor out
    the common code so that they are all handled correctly and uniformly.
Something went wrong with that request. Please try again.