RE: [sv-ec] implicit sensitivity list and class dynamic members

From: Mark Hartoog <Mark.Hartoog_at_.....>
Date: Fri Jul 24 2009 - 11:16:27 PDT
I agree with Gord's interpretation that class objects, class methods and class properties do not add to the sensitivity list of always_comb or @(*).

If Daniel's question is should the LRM be changed to allow this, there are a number of issues to consider.

Always_comb sensitivity lists include sensitivities from functions called from the always_comb. Since class methods can be virtual, there is no way to do this for virtual class methods.

Always_comb also says it is an error for multiple always_comb to write to the same variable. The aliasing problem with class handles makes it very difficult to do this check for class fields.


-----Original Message-----
From: owner-sv-ec@eda.org [mailto:owner-sv-ec@eda.org] On Behalf Of Gordon Vreugdenhil
Sent: Friday, July 24, 2009 6:49 AM
To: Daniel Mlynek
Cc: sv-ec@eda.org
Subject: Re: [sv-ec] implicit sensitivity list and class dynamic members

Daniel,

9.2.2.2.1 explicitly deals with always_comb:
    References to class objects and method calls of class objects do
    not add anything to the sensitivity list of an always_comb.

9.2.2.2.2 (on @(*)) is less clear although it claims that
    The SystemVerilog always_comb procedure differs from
    always @* (see 9.4.2.2) in the following ways:
       ...

Whether @(*) is sensitive to class refs was never explicitly
addressed in the LRM, but it would be reasonable to interpret
the lack of comment about classes in 9.2.2.2.2 to imply that
@(*) should be sensitized to class references either.

Gord.

Daniel Mlynek wrote:
> I've a question related to implicit sensitivity list (@*, always_comb).
> This feature was assumed to help users in design code - for
> combinatorial blocks. But in blocks under @* or always_comb also
> references to dynamic class members can be used - as in below code.
> Should such references be added to implicit sensitivity list>
>
>     class class0;
>      int x;
>     endclass
>
>     module top_006;
>      class0 c0 = new;
>      class0 c1 = new;
>
>      initial begin
>         #10 c0.x = 1;
>         #10 c0.x = 0;
>         #10 c0.x = 1;
>         #10 c0 = c1;
>      end
>      always@* $display($time, c0.x);        //should this be sensitive
>     to c0.x?
>     endmodule
>
> DANiel
>
> --
> This message has been scanned for viruses and
> dangerous content by *MailScanner* <http://www.mailscanner.info/>, and is
> believed to be clean.

--
--------------------------------------------------------------------
Gordon Vreugdenhil                                503-685-0808
Model Technology (Mentor Graphics)                gordonv@model.com


--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.


-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Fri Jul 24 11:17:37 2009

This archive was generated by hypermail 2.1.8 : Fri Jul 24 2009 - 11:18:28 PDT