From: Don Mills (email@example.com)
Date: Fri Feb 01 2002 - 09:59:51 PST
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) ??
out = vector;
The @vector 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.
> At 11:52 AM 1/31/02 -0700, Dennis Marsa wrote:
> >Precedence: bulk
> >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
> >1) A bit-select of a vector
> > reg [31:0] vector;
> > always @(*) // @(vector) or @(vector) ??
> > out = vector;
> >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) ??
> > out = array;
> >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?
> >Dennis Marsa
> >Xilinx, Inc.
-- ========================================================== Don Mills LCDM Engineering (Logic, Coding, & Design Methodology) firstname.lastname@example.org 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
sponsored by Boyd Technology, Inc.