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.