RE: always_comb semantics


Subject: RE: always_comb semantics
From: Peter Flake (flake@co-design.com)
Date: Thu Oct 03 2002 - 03:06:52 PDT


Mac,

The differences between always_comb and always @* are:
         Functions in always_comb participate in the sensitivity list
calculation
         Time 0 evaluation is guaranteed.

These differences make the simulation of combinational logic more accurate,
reducing pre/post synthesis mismatch.

Kevin, the functions do not have to be static or local, but a synthesis
tool may impose these restrictions.

Regards,

Peter.

At 08:37 AM 10/2/02 -0700, Michael McNamara wrote:

>Further, always_comb appears to be a simultaneous invention with
>1364-2001's always @(*) construct, and we (SV-BC) should consider
>dropping the System Verilog addition in favor of the existing always
>@(*) which is an IEEE standard.
>
>Note that always @(*) makes no restriction on other assignments to the
>lhs variables, as you seem to prefer.
>
>Always @(*) does suffer from the same ambiguity you cite with respect
>to
>
> reg [31:0] a,c,b[3:0];
> always @(*) begin
> a = b[c];
> end
>
> Should the sensitivity list be:
> @( b[c] )
> or
> @( b[0] b[1] or b[2] or b[3] or c )
>
>
>-mac
>
>
>



This archive was generated by hypermail 2b28 : Thu Oct 03 2002 - 05:25:56 PDT