RE: [sv-bc] @* vs. always_comb

From: Maidment, Matthew R <matthew.r.maidment_at_.....>
Date: Tue Dec 13 2005 - 15:30:52 PST
This was snarfed by the majordomo.  I modified the offending
word.


>Subject: RE: [sv-bc] @* vs. always_comb
>Date: Tue, 13 Dec 2005 08:41:35 -0800
>From: "Mark Hartoog" <Mark.Hartoog@synopsys.com>
>To: "Gordon Vreugdenhil" <gordonv@model.com>
>Cc: "Bresticker, Shalom" <shalom.bresticker@intel.com>, 
><sv-bc@server.eda.org>
>
>One of the design problems with Verilog 95 was that all 
>sensitivity list[editor]s had to be manually created and that mistakes 
>could lead to simulation synthesis mis-matches. V2k attempted 
>to address this with always @*. Always @* produces an optimum 
>sensitivity list for the simple, most common cases, but it 
>does not look into functions or handle temporary variables optimally.
>
>Always_comb is an attempt to improve on always @* by including 
>functions and recognizing temporary variables. I think 
>always_comb is a significant improvement.
>I do not know of a case where an always_comb block which is 
>actually combinational will have a simulation/synthesis 
>mismatch. There are cases where the sensitivity list will be 
>sub-optimal, but the extra executions of a truly combinational 
>always block should not change the simulation result.
>
>> 
>> Gordon Vreugdenhil wrote:
>> > 
>> > I don't know how much detail I can talk about here.  But 
>in general, 
>> > if you consider the static prefix rules, the LRM requires 
>you to be 
>> > sensitive to *all* subelements (the expansion) of a prefix.  The 
>> > determination of the prefix depends on the LRM definition of 
>> > constantness.  If there are things that synthesis might treat as 
>> > constant that fall outside the LRM definition, then the synthesis 
>> > results (the actual topology) would not include
>> connectivity that the
>> > simulation would be sensitive to.  This can cause
>> simulation/synthesis
>> > mismatches.
>> 
>> <blush>
>> 
>> Bad example -- obviously that isn't an issue since if the logic is 
>> actually combinational, having additional simulation time 
>evaluations 
>> won't change the results.
>> 
>> It may indeed be that for combinational logic we may just have a 
>> superset of synthesized behavior accepted for simulation (i.e. that 
>> there are blocks that are simulatable using always_comb that aren't 
>> synthesizable) which is not really an issue.
>> 
>> Let me have a bit more coffee first...
>> 
>> Gord.
>> 
>> --
>> --------------------------------------------------------------------
>> Gordon Vreugdenhil                                503-685-0808
>> Model Technology (Mentor Graphics)                gordonv@model.com
>> 
>
>
Received on Tue Dec 13 15:30:57 2005

This archive was generated by hypermail 2.1.8 : Tue Dec 13 2005 - 15:31:01 PST