LRM changes
===========
See A, B and C below for the required changes in the LRM.
A. BNF Changes
==============
(1) Property declaration
Change:
property_declaration ::=
property property_identifier [ ( [ list_of_formals ] ) ] ;
{ assertion_variable_declaration }
property_spec ;
endproperty [ : property_identifier ]
To:
property_declaration ::=
property property_identifier [ ( [ tf_port_list ] ) ] ;
{ assertion_variable_declaration }
property_spec ;
endproperty [ : property_identifier ]
(2) Property instance
Change:
property_instance ::=
ps_property_identifier [ ( [ actual_arg_list ] ) ]
To:
property_instance ::=
ps_property_identifier [ ( [ list_of_arguments ] ) ]
(3) Sequence declaration
Change:
sequence sequence_identifier [ ( [ list_of_formals ] ) ] ;
{ assertion_variable_declaration }
sequence_expr ;
endsequence [ : sequence_identifier ]
To:
sequence sequence_identifier [ ( [ tf_port_list ] ) ] ;
{ assertion_variable_declaration }
sequence_expr ;
endsequence [ : sequence_identifier ]
(4) Sequence instance
Change:
sequence_instance ::=
ps_sequence_identifier [ ( [ actual_arg_list ] ) ]
To:
sequence_instance ::=
ps_sequence_identifier [ ( [ list_of_arguments ] ) ]
Documentation :
B. ADD SECTION
==============
17.6.1 Typed formal parameters in sequence declarations
Formal parameters of sequences can optionally be typed. To declare a type for a formal
parameter of a sequence it is required to prefix the parameter with a type. A formal
parameter which is not prefixed by a type will be untyped. See above for the definition of untyped variables.
Exporting values of local variables thru typed formal parameters is not supported.
The supported data types for sequence formal parameters are the types which are allowed for
operands in SVA expressions (see 17.4.1). The assignment rules for assigning actual parameter expressions to formal parameters, at the time of sequence instantiation,
are the same as the general rules for doing assignment of a typed variable with a
typed expression (see section 3).
For example, below two equivalent ways of passing parameters are shown, the first has untyped parameters and the second has typed parameters:
sequence rule6_with_no_type(x, y);
##1 x ##[2:10] y;
endsequence
sequence rule6_with_type(bit x, bit y);
##1 x ##[2:10] y;
endsequence
Another example where a local variable is used to sample a formal parameter, in order to get the effect of 'pass by value'. This is needed because currently pass-by-value is not supported.
sequence foo(bit a, bit b);
bit loc_a;
(1'b1, loc_a = a) ##0
(t == loc_a)*[0:$] ##1 b
endsequence
C. ADD SECTION
==============
17.11.1 Typed formal parameters in property declarations
Formal parameters of properties can optionally be typed. To declare a type for a formal
parameter of a property it is required to prefix the parameter with a type. A formal
parameter which is not prefixed by a type will be untyped. See above for the definition of untyped variables.
The supported data types for properties formal parameters are the types which are allowed
for operands in SVA expressions (see 17.4.1). The assignment rules for assigning actual parameters to formal parameters, at the time of property instantiation, are the same as
the general rules for doing assignment of a typed variable with another typed expression (see section 3).
For example, below are two equivalent ways of passing parameters are shown, the first has untyped parameters and the second has typed parameters:
property rule6_with_no_type(x, y);
##1 x |-> ##[2:10] y;
endproperty
property rule6_with_type(bit x, bit y);
##1 x |-> ##[2:10] y;
endproperty
Received on Tue Nov 23 10:08:53 2004
This archive was generated by hypermail 2.1.8 : Tue Nov 23 2004 - 10:08:56 PST