[sv-ac] Inline properties proposal


Subject: [sv-ac] Inline properties proposal
From: Adam Krolnik (krolnik@lsil.com)
Date: Thu Mar 27 2003 - 15:21:54 PST


Hi all;

With an inline property there are no needs for parameters being passed.
Removing this, I add the remainder of the property definition after
the keywords "assert property" or "cover property".

This is a minimal change - I have not added anything or removed anything else.
For simplicity, i submit these as the two proposal from which to pick.

In the interest of time, would those that agreed with this issue give
their opinions on these proposals.

   Thanks.

   Adam Krolnik
   Verification Mgr.
   LSI Logic Corp.
   Plano TX. 75074

-----------------------------------------------------------
Proposal 1 (w/ dynamic variables)
    Declare variables within parenthesized list attached to property keyword.
    These variables are valid until the end.

Add this production to concurrent_assert_statement.

    | assert property [ '(' variable_declaration {, variable_declaration} ')' ]
        [disable iff expression] [not] '(' propert_expression ')'
        action_block

Add this production to concurrent cover statement.

    | cover property [ '(' variable_declaration {, variable_declaration} ')' ]
        [disable iff expression] [not] '(' property_expression ')'
        action_block

Examples.

assert property (int x)
      (a ##1 b, x = c |=> [2:10] c ##0 d == x)
    else $error(" Missing c or d not correct value.");

assert property (int x, reg [3:0] z)
      disable iff (abort & flush)
      not (a ##1 b, x = e ##2 c, y = tag ##[2:5] d ##0 x+y != g)
    else $error("Result invalid %0h vs %0h.", g, x+y);

cover property (a ## [1:3] b& !c ##[2:5] d);

-----------------------------------------------------------------------------

Proposal 2 (w/o dynamic variables)
    Take inside of property declaration, minus dynamic variables and sequences.

Add this production to concurrent_assert_statement.

   | assert property [disable iff expression] [not] (property_expression)
        action_block

Add this production to concurrent_cover_statement.

   | cover property [disable iff expression] [not] (property_expression)
        action_block

E.g.

    assert property (a == 2 => b ##1 !c ## [2:5] d)
       else $error("Bad sequence.");

    assert property
       disable iff (flush && abort)
       not @(posedge nclk) (a ##1 !b ##[2:5] c)
       else $error("Found illegal c afterward.");

--------------------------------------------------------------------------



This archive was generated by hypermail 2b28 : Thu Mar 27 2003 - 15:28:12 PST