[sv-ac] mantis 1674

From: John Havlicek <john.havlicek_at_.....>
Date: Sun Apr 08 2007 - 11:07:41 PDT
Ed & All:

I went carefully through the proposal for mantis 1674, and I 
don't think it's ready for a vote yet.  It has dependencies on
1648, and I don't think the resolutions to the issues with 1648
have been propagated to 1674.

I also have a number of editorial suggestions.  See the notes 
below.

Best regards,

J.H.

Notes on inferred_1674_070314.pdf
---------------------------------

QUESTIONS:

* Why is the inferred enabling condition for a3 just d rather than
  !rst && d?  Reducing to d seems like an optimization.

* Has this proposal been aligned with 1648?  I am oncerned about
  whether it has been adjusted according to the discussion in our
  meeting of 2007-03-20:

  - 1648:  Default disable [EC]
    . TT reviewer.
    . TT:  only sensitivity list of always block is used to
      infer, not the logical structure of the enablers in the block.  
    . EC:  restricting to always_ff makes it easier to address
      concerns of TT.
    . EC:  For clock inference, current rule takes first event
      expression.  May need to change this definition.
    . EC will revise to remove inference of disable iff from always
      blocks (any of them), and TT will re-review.

  These concerns seem relevant to this proposal and do not seem to
  have been resolved.


EDITORIAL CONCERNS:

* Throughout, change

     inferred value function 

  to

     inferred expression function 

  RATIONALE:  I think it is confusing to call these "inferred value functions"
  because they are really returning expressions rather than the values of
  expressions.  

* Change

     The following elaboration time system functions are available to
     query the inferred value of the clock event, reset and enable signals.

  To


     The following elaboration time system functions are available to
     query the inferred clock event expression, disable expression, and enable
     condition.

   RATIONALE: Consistency and clarity of language.  I think that it is
   not the values of these expressions that are returned, but the
   expressions themselves (or copies of, or representations of, the
   expressions).  I'm not sure whether "condition" can be used
   interchangeably with "expression", but we should try to be
   consistent.  I think 1648 needs to be reviewed for consistency.

* Change

    - $inferred_clock returns the value of the inferred clock event.
    
    - $inferred_disable returns the value of the inferred disable expression.
    
    - $inferred_enable returns the value of the inferred enable condition.

  To

    - $inferred_clock returns the inferred clock event expression.
    
    - $inferred_disable returns the inferred disable expression.
    
    - $inferred_enable returns the the inferred enable condition.

* Change

     Inferred clock corresponds to the current resolved event
     expression that can be used in a clocking event definition. It is
     obtained by applying clock flow rules to the point where
     $inferred_clock is called. If there is no inferred event
     expression, $inferred_clock returns false (i.e., 1'b0).o

  To

     The inferred clock event expression is the current resolved event
     expression that can be used in a clocking event definition.  It is
     obtained by applying clock flow rules to the point where
     $inferred_clock is called.  If there is no current resolved
     event expression, then $inferred_clock returns false (i.e., 1'b0).

  RATIONALE:  Consistency and clarity of language.  You are defining "inferred 
  clock event", so I think it is confusing to say "If there is no inferred 
  event expression".

* Change

    Inferred disable expression is either the reset condition inferred
    from an always block with asynchronous reset or the default
    disable value (See 17.14 Note to editor: This is after introducing
    the proposal #1648).

  To

    The inferred disable expression is either the reset expression inferred
    from an always block with asynchronous reset or the default
    disable expression (See 17.14 Note to editor: This is after introducing
    the proposal #1648).

  RATIONALE: Consistency and clarity of language.  I think that if it
  is an "inferred disable expression", then we should try to use the
  word "expression" consistently rather than "condition" or "value".
  1648 should be reviewed in this regard.

* Change

    Inferred enable condition returned by $inferred_enable is the
    inferred condition from an always or initial block if one exists,
    the same as the condition inferred in verification statements
    placed in an if...else or a case statement (see 17.13.5). It is
    true (i.e., 1'b1) when no condition can be inferred.

  To

    The inferred enable condition is the expression defining the
    cumulative condition required to reach the current point within
    enveloping if...else and case blocks inside an always or initial
    block.  This is the same as the contextually inferred enabling
    condition for verification statements (see 17.13.5).  If there are
    no enveloping if...else or case blocks, then the cumulative
    condition is true (i.e., 1'b1).

* Change

    When a inference system function is used as the default value on a
    formal argument to a property or sequence, it is replaced by the
    inferred value at the point where the property or sequence is
    instantiated.

  To

    When an inferred expression system function is used as the default
    value on a formal argument to a property or sequence, it is
    replaced by the inferred expression at the point where the
    property or sequence is instantiated.

* Change

     property p_triggers(start_event, end_event, form, clk = $inferred_clock,
                       rst = $inferred_disable, en = $inferred enable);

  To

     property p_triggers(start_event, end_event, form, clk = $inferred_clock,
                       rst = $inferred_disable, en = $inferred_enable);

  RATIONALE:  "$inferred enable" needs the underscore.

* Change

    In assertion a2 the clock event posedge clk1 is passed explicitly
    to the property p_triggers, therefore no default value is inferred
    for it.

  To

    In assertion a2 the event expression posedge clk1 is passed to the 
    formal argument clk in the instance of property p_triggers.  Therefore, 
    the default  $inferred_clock is not used for clk in that instance.

* Change

    In assertion a3 the clock event is inferred from the control event
    of the always block

  To

    In assertion a3 the clock event is inferred from the event control
    of the always block

  RATIONALE: I think the phrase "event control" is used in the LRM
  rather than "control event".

 
* Change

    The disable condition rst1 is inferred for assertion a1 from the
    default disable statement, and the disable condition rst is
    inferred for assertion a3 from the always block.

  To

    The disable condition rst1 is inferred for assertion a1 from the
    default disable statement, and the disable condition rst is
    inferred for assertion a3 from the asynchronous reset posedge rst
    in the event control of the always block.

  RATIONALE:  Clarity.

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Sun Apr 8 11:08:10 2007

This archive was generated by hypermail 2.1.8 : Sun Apr 08 2007 - 11:08:29 PDT