From: Dennis Marsa (firstname.lastname@example.org)
Date: Sun Feb 03 2002 - 10:05:53 PST
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 + mem8x10[b];
> then the sensitivity list becomes:
> always @(mem8x10 or mem8x10[b]) begin
Your examples are helpful. Thank you.
Modifying your example slightly, if we have:
always @(*) begin : named
b = <something>;
a = mem8x10 + mem8x10[b];
what would the @(*) expand to in this case?
Based on your examples, I would guess you might say:
@(mem8x10 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 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
This archive was generated by hypermail 2.1.4
: Mon Jul 08 2002 - 12:55:35 PDT
sponsored by Boyd Technology, Inc.