Re: implicit event expression lists

From: Dennis Marsa (drm@xilinx.com)
Date: Fri Feb 01 2002 - 14:23:20 PST


Precedence: bulk

Paul Graham wrote:
>
> Precedence: bulk
>
> > > It can't be equivalent to 'always @(ram)' because that is illegal. A
> > > memory must always be indexed.
> >
> > Illegal in Verilog-XL? Or illegal in Verilog, period?
>
>
> What's the difference :-)

~$108 for 1364 vs. $$$$ for a Cadence product. :-)

> > Correct me if I am wrong, but I don't think 1364-2001 says anything
> > about always @(ram) being illegal.
>
> Has any language changed between 1364-1995 and 1364-2001 relating to the use
> of arrays in an event control statement?

Unforunately, I don't think there is language addressing array use in event
control statements in either 1364-1995 or 1364-2001.

> An event expression is an expression. I can't think of any case where
> a whole array can appear as an expression. So I don't think that a whole
> array can appear as an event expression.

Yet, it seems that allowing an array as an event is be necessary to
define the semantics of @(*):

    always @(*)
        a = ram[b];

Is this:

    always @(ram or b)
        a = ram[b]

    always @(ram[b])
        a = ram[b]

Also, what about this (contrived, but legal) example:

    always @(*) begin : named
        integer b;
        b = /* something */;
        a = ram[b]
    end

Is this:

    always @(ram or b) // no, b not visible here
    always @(ram or named.b) // reference b hierarchically?
    always @(ram[b]) // no, b still not visible
    always @(ram[named.b]) // reference b hierarchically?
    always @(ram) // don't reference b at all since not visible?
    always @() // no b since not visible, no ram since can't reference array?,
                             // so no events at all? But, that's illegal too!

Dennis Marsa
Xilinx, Inc.



This archive was generated by hypermail 2.1.4 : Mon Jul 08 2002 - 12:55:35 PDT and
sponsored by Boyd Technology, Inc.