Re: implicit event expression lists

From: Michael McNamara (mac@verisity.com)
Date: Sun Feb 03 2002 - 11:11:42 PST


Precedence: bulk

Dennis Marsa writes:
> Michael McNamara wrote:
> >
> > Further recognize that one can not refer to an entire memory in an
> > expression, so that the statement:
> >
> > a = mem8x10;
> >
> > is already illegal, and so would not appear in a procedural block.
> >
> > So, given
> >
> > a = mem8x10[10] + mem8x10[b];
> >
> > then the sensitivity list becomes:
> >
> > always @(mem8x10[10] or mem8x10[b]) begin
> >
> > end
>
> Mac,
>
> Your examples are helpful. Thank you.
>
> Modifying your example slightly, if we have:
>
> always @(*) begin : named
> integer b;
> b = <something>;
> a = mem8x10[10] + mem8x10[b];
> end
>
> what would the @(*) expand to in this case?
>
> Based on your examples, I would guess you might say:
>
> @(mem8x10[10] or /* events from <something> */)
>
> b is not in the list since it is not visible from the point of
> the @(*), and mem8x10 is not in the list since it is a memory.

Yes.
>
> So, if any element of mem8x10 other the element 10 changes,
> this statement would not be re-evaluated. Is that the
> proper interpretation of @(*) in this context?

Yes.
>
> Contrast that with the case where mem8x10 is a vector and not a
> memory. Then, presumably @(*) would expand to:
>
> @(mem8x10[10] or mem8x10 or /* events from <something> */)
>
> so this statement would be sensitive to a change in any bit
> of the vector, where the memory case is only sensitive to
> one element.

Yes, but this is really is an artifact of what Verilog-xl used to do.

>
>
>
> 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.