Re: implicit event expression lists

From: Dennis Marsa (drm@xilinx.com)
Date: Sun Feb 03 2002 - 10:05:53 PST


Precedence: bulk

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.

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?

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.

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.