errata/599: intermediate variables with @*

From: eric_mahurin@yahoo.com
Date: Mon Jul 19 2004 - 22:29:49 PDT

  • Next message: Shalom.Bresticker@freescale.com: "Re: errata/597: whitespace/comments within compiler directive"

    >Number: 599
    >Notify-List:
    >Category: errata
    >Originator: Eric Mahurin
    >Environment:
    >Description:

    In 9.7.5, @* triggers on all variables which are read by the statement. But, why have intermediate variables as triggers. As in the example:

    always @* begin // equivalent to @(a or b or c or d or tmp1 or tmp2)
        tmp1 = a & b;
        tmp2 = c & d;
        y = tmp1 | tmp2;
    end

    Having tmp1 and tmp2 as event triggers seems to serve no purpose other than to have the simulator evaluate this block twice instead of once when a, b, c, or d changes. Also, if intermediate variables (i.e. loop counters) are shared between always blocks, it can cause the simulator to hang in an event loop.

    If a variable is always assigned (blocking) before it is read within the statement, I don't see why @* needs to imply it.

    Maybe this could be an optional feature.



    This archive was generated by hypermail 2.1.4 : Mon Jul 19 2004 - 22:29:53 PDT and
    sponsored by Boyd Technology, Inc.