Hi Lisa, I thought that I did rply to you about a week ago. To me it looks OK. Do you need any extensions to VPI? ed ________________________________ From: owner-sv-ac@eda-stds.org [mailto:owner-sv-ac@eda-stds.org] On Behalf Of Lisa Piper Sent: Thursday, June 15, 2006 12:27 PM To: Lisa Piper; sv-ac@verilog.org Subject: [sv-ac] RE: Mantis 928 Proposal Hi all, Has anyone had a chance to review this? I have only received comments from Brad Pierce. Ed and Bassam - you had voted no on the previous - did you get a chance to look at this? Lisa ________________________________ From: Lisa Piper Sent: Friday, June 09, 2006 9:55 AM To: 'sv_ac@verilog.org' Subject: Mantis 928 Proposal Hi all, Here is a detailed proposal for review for the Mantis 928 changes. I have entered it on Mantis and at Hillel's request changed myself to owner. Lisa ================= Mantis 928: The purpose is to fix issues with the existing BNF. Specifically: 1. removal of list_of_formals, formal_list_item, and actual_arg_expr that were not referenced 2. list_of_arguments was redfined as sequence_list_of_arguments and property_list_of_arguments. actual_arg was defined as sequence_actual_arg and property_actual arg. They are differenct in that sequences cannot have property arguments. 3. tf_port list was replaced by sequence_port_list and property_port_list to fix the issue that tf_port_list does not allow default values assignment other than expression The new definition allows for intiialization of all args in the definition.. Named or positional association of arguments is allowed when the sequence or property is instantiated. 4. Actual args for a sequence include property_instance, sequence_expr, expression, hierarchical _event_identifier, event_expression, *, (*) (this expands the existing to include all event_controls ) Actual args for a property are the same as for a sequence with the addition of a property_instance . Notes: The definition of actuals for a property allows only for a property_instance that does not include a disable iff that is different from the top level property.(not a property expression). 5. One additional change is that a sequence_expr should also allow for a sequence instance in its definition. This relates to this as a sequence_instance can also be an event control. ====================== REPLACE (from 17.11) A property is declared with optional formal arguments, as in a sequence declaration. When a property is instantiated, actual arguments can be passed to the property. The mechanism for passing arguments to a property is the same as for passing arguments to a sequence. The property gets expanded with the actual arguments by replacing the formal arguments with the actual arguments. Semantic checks are performed to ensure that the expanded property with the actual arguments is legal. WITH A property is declared with optional formal arguments, as in a sequence declaration. When a property is instantiated, actual arguments can be passed to the property. In addition to the types of arguments that are passed to a sequence, a property instance can be passed as a formal argument provided that it does not contain a disable iff clause that is different from the property itself. The mechanism for passing arguments to a property is the same as for passing arguments to a sequence. The property gets expanded with the actual arguments by replacing the formal arguments with the actual arguments. Semantic checks are performed for typed formals to ensure that the expanded property with the actual arguments is legal. REPLACE (and also 17-14) A.2.10 Assertion declarations ... property_instance ::= property_identifier [ ( [ list_of_arguments ] ) ] concurrent_assertion_item_declaration ::= property_declaration | sequence_declaration property_declaration ::= property property_identifier [ ( [ tf_port_list ] ) ] ; { assertion_variable_declaration } property_spec ; endproperty [ : property_identifier ] property_spec ::= [clocking_event ] [ disable iff ( expression_or_dist ) ] property_expr property_expr ::= sequence_expr | ( property_expr ) | not property_expr | property_expr or property_expr | property_expr and property_expr | sequence_expr |-> property_expr | sequence_expr |=> property_expr | if ( expression_or_dist ) property_expr [ else property_expr ] | property_instance | clocking_event property_expr sequence_declaration ::= sequence sequence_identifier [ ( [ tf_port_list ] ) ] ; { assertion_variable_declaration } sequence_expr ; endsequence [ : sequence_identifier ] sequence_expr ::= cycle_delay_range sequence_expr { cycle_delay_range sequence_expr } | sequence_expr cycle_delay_range sequence_expr { cycle_delay_range sequence_expr } | expression_or_dist [ boolean_abbrev ] | ( expression_or_dist {, sequence_match_item } ) [ boolean_abbrev ] | sequence_instance [ sequence_abbrev ] | ( sequence_expr {, sequence_match_item } ) [ sequence_abbrev ] | sequence_expr and sequence_expr | sequence_expr intersect sequence_expr | sequence_expr or sequence_expr | first_match ( sequence_expr {, sequence_match_item} ) | expression_or_dist throughout sequence_expr | sequence_expr within sequence_expr | clocking_event sequence_expr cycle_delay_range ::= ## integral_number | ## identifier | ## ( constant_expression ) | ## [ cycle_delay_const_range_expression ] sequence_method_call ::= sequence_instance . method_identifier sequence_match_item ::= operator_assignment | inc_or_dec_expression | subroutine_call sequence_instance ::= sequence_identifier [ ( [ list_of_arguments ] ) ] formal_list_item ::= formal_identifier [ = actual_arg_expr ] list_of_formals ::= formal_list_item { , formal_list_item } actual_arg_expr ::= event_expression | $ WITH A.2.10 Assertion declarations property_instance ::= ps_property_identifier [ ( [ list_of_arguments property_list_of_arguments] ) ] property_list_of_arguments::= [property_actual_arg] { , [property_actual_arg] } { , . identifier ( [property_actual_arg] ) } | . identifier (property_actual_arg] ) { , . identifier ( [property_actual_arg] ) } property_actual_arg_expr ::= property_instance | sequence_expr | expression | hierarchical _event_identifier | event_expression | * |(*) concurrent_assertion_item_declaration ::= property_declaration | sequence_declaration property_declaration ::= property property_identifier [ ( [ tf_port_list property_port_list] ) ] ; { assertion_variable_declaration } property_spec ; endproperty [ : property_identifier ] property_port_list ::= property_port_item {, property_port_item} property_port_item ::= { attribute_instance } property_formal_type port_identifier {variable_dimension} [=expression]; property_formal_type ::= data_type_or_implicit property_spec ::= [clocking_event ] [ disable iff ( expression_or_dist ) ] property_expr property_expr ::= sequence_expr | sequence_instance | ( property_expr ) | not property_expr | property_expr or property_expr | property_expr and property_expr | sequence_expr |-> property_expr | sequence_expr |=> property_expr | if ( expression_or_dist ) property_expr [ else property_expr ] | property_instance | clocking_event property_expr sequence_declaration ::= sequence sequence_identifier [ ( [ tf_port_list sequence_port_list] ) ] ; { assertion_variable_declaration } sequence_expr ; endsequence [ : sequence_identifier ] sequence_port_list ::= sequence_port_item {, sequence_port_item} sequence_port_item ::= { attribute_instance } sequence_formal_type port_identifier {variable_dimension} [=expression]; sequence_formal_type ::= data_type_or_implicit sequence_expr ::= cycle_delay_range sequence_expr { cycle_delay_range sequence_expr } | sequence_expr cycle_delay_range sequence_expr { cycle_delay_range sequence_expr } | expression_or_dist [ boolean_abbrev ] | ( expression_or_dist {, sequence_match_item } ) [ boolean_abbrev ] | sequence_instance [ sequence_abbrev ] | ( sequence_expr {, sequence_match_item } ) [ sequence_abbrev ] | sequence_expr and sequence_expr | sequence_expr intersect sequence_expr | sequence_expr or sequence_expr | first_match ( sequence_expr {, sequence_match_item} ) | expression_or_dist throughout sequence_expr | sequence_expr within sequence_expr | clocking_event sequence_expr | sequence_instance .... sequence_instance ::= ps_sequence_identifier [ ( [ list_of_arguments sequence_list_of_arguments] ) ] formal_list_item ::= formal_identifier [ = actual_arg_expr ] list_of_formals ::= formal_list_item { , formal_list_item } sequence_list_of_arguments [sequence_actual_arg] { , [sequence_actual_arg] } { , . identifier ( [sequence_actual_arg] ) } | . identifier (sequence_actual_arg] ) { , . identifier ( [sequence_actual_arg] ) } sequence_actual_arg_expr ::= sequence_expr | expression | hierarchical _event_identifier | event_expression | * | (*) ....Received on Thu Jun 15 09:37:52 2006
This archive was generated by hypermail 2.1.8 : Thu Jun 15 2006 - 09:37:57 PDT