Re: errata/82: Section 9.7.5: Description of @*, @(*) incomplete

From: Dennis Marsa (drm@xilinx.com)
Date: Wed Jul 31 2002 - 07:50:46 PDT


Precedence: bulk

Steven Sharp wrote:
>
> >2) How are array references handled within an @*?
> >
> > reg [31:0] array[1:100];
> >
> > always @* // @(array) or @(array[10])
> > out = array[10];
> >
> > and, what if the index is non-constant?
> >
> > always @* // @(array) or @(array[i]) or @(array or i)?
> > out = array[i]
>
> We expand to @(array or i). Then we produce an error, since it is not
> legal to use an array identifier in an event control. I won't claim
> that the standard is clear about this, but it seems like a reasonable
> interpretation.
>
> > Can an event control be sensitive *any* change
> > to an array??
>
> It is not possible in Verilog to write an explicit event control that is
> sensitive to an entire array. It would cause implementation problems
> in some situations.

I'd like to understand this better. I understand that the standard
currently forbids the concept of being sensitive to an entire array.

But why?

Is it purely for implementation reasons? Or is there a problem with
the concept itself?

If, given a vector, we can define a change to a vector as a change
to any bit of the vector, then why can't one define a change to an array
as a change to any element of the array (and a change to an element of
the array is defined as a change to any bit of the element).

Where does this (the concept of a change to an array) break down?

Thanks,

Dennis Marsa
Xilinx, Inc.



This archive was generated by hypermail 2.1.4 : Thu Oct 10 2002 - 09:24:27 PDT and
sponsored by Boyd Technology, Inc.