Re: implicit event expression lists

From: Peter Flake (flake@co-design.com)
Date: Fri Feb 01 2002 - 11:42:41 PST


Precedence: bulk

Hi Don,

Thanks for your correction. Please insert the word "index" in my answer.

Peter.

At 10:59 AM 2/1/02 -0700, Don Mills wrote:
>Maybe I am a little daft, but if the bit or part is a constant, how will
>the sensitivity list ever be triggered by it. I would think that the
>behavior of @(*) should follow the same behavior as before the @(*) was
>available. That is if I had
>
>1) A bit-select of a vector
>
> reg [31:0] vector;
>
> always @(vector) or @(vector[5]) ??
> out = vector[5];
>
>The @vector[5] would be sufficient and should be legal (correct me if I
>am wrong here.). Having the whole vector present in the sensitivity list
>will also work but would slow simulation down.
>
> From a synthesis perspective, not that this has anything directly to do
> with the question, but Synopsys will not allow the sensitivity to only a
> bit of a vector. Synopsys requires the whole vector to be present in the
> sensitivity list even if only one bit is to used. This made for
> inefficient simulations. By using the @(*) both simulation and synthesis
> could be satisfied and efficient. Simulation could interpret the @(*) to
> be only the bit/bits being using in the always block and synthesis could
> interpret the @(*) to be the whole vector. This variation on
> interpretation between simulation and synthesis will not change the
> functional meaning of the code in any way.
>
>Peter Flake wrote:
>
> > Precedence: bulk
> >
> > Hi Dennis,
> >
> > I think that if the bit or part is constant, then sensitivity should be
> > limited to that bit or part. If the bit or part is variable, it should be
> > the whole.
> >
> > Peter.
> >
> > At 11:52 AM 1/31/02 -0700, Dennis Marsa wrote:
> > >Precedence: bulk
> > >
> > >Hello,
> > >
> > >Reading section 9.7.5 "Implicit event_expression list", I am
> > >not clear on what the defined behavior of @(*) should be when
> > >the following kinds of references appear in the controlled
> > >statement.
> > >
> > >1) A bit-select of a vector
> > >
> > > reg [31:0] vector;
> > >
> > > always @(*) // @(vector) or @(vector[5]) ??
> > > out = vector[5];
> > >
> > >2) A part-select of a vector
> > >
> > > reg [31:0] vector;
> > >
> > > always @(*) // @(vector) or @(vector[3:0]) ??
> > > out = vector[3:0];
> > >
> > >3) An array element select of an array
> > >
> > > reg [31:0] array[1:100];
> > >
> > > always @(*) // @(array) or @(array[10]) ??
> > > out = array[10];
> > >
> > >Basically, the question is, if only a part of a signal is referenced,
> > >should the generated event_expression list include just the part
> > >referenced, or the entire signal (or array)?
> > >
> > >All of my examples above show constant indicies. Should the
> > >behavior differ if the indicies are non-constant?
> > >
> > >Thanks,
> > >
> > >Dennis Marsa
> > >Xilinx, Inc.
>
>--
>==========================================================
>Don Mills
>LCDM Engineering (Logic, Coding, & Design Methodology)
>mills@lcdm-eng.com www.lcdm-eng.com
>801-282-6560 Office PHONE
>801-641-5882 Mobile PHONE
>4158 W. Ben Armine Cir., South Jordan, UT 84095-9101
>==========================================================



This archive was generated by hypermail 2.1.4 : Mon Jul 08 2002 - 12:55:35 PDT and
sponsored by Boyd Technology, Inc.