Hi Lisa, Thx for the reminder, I started this last week but never finished it :). Here's some feedback: 1) VPI: Ed about your question I don't think there is any fundamental change here from previous. However looking at the VPI diagrams, it bugs me why 27.33 propertyinst does not have "vpiArgument" like sequenceinst of 27.35, also 27.34 should have this added like it is 27.36. 2) Remove the "In addition ..." added sentence. We should not be adding (partial) semantic check descriptions here, the chapter already adds that detail when needed, and we already say things will be semantic checked, this is one among many, see (3). 3) Remove the added "for typed formals" in the sentence beginning with "Semantic ....". The sentence is not just meant to talk about formals but rather anything passed and "inlined" will be semantic checked e.g. passing a wrong arg to a range etc.. 4) Just color property_actual_arg (also sequence) as one new blue addition, remove this extra crossed our arg, confusing to editor for sure. See (6) and (7) below. 5) The *, (*): I think this can be easily confused with the implicit connection .* and the like, better remove for simplicity, it's not like there will be that many clocks on average :). The implicit connection is worthwhile but also too messy better force user to specify clearly and minimize strange and insidious reports of semantic check failures say, same argument actually goes for clocks too ... 6) Let's not add more baggage here keep things simple/clean instances and simple expressions only, also why are we adding the named event trigger ... these are concurrent assertions, event_expression is what we need. property_actual_arg::= | property_instance | sequence_instance | expression | event_expression 7) Sequence sequence_actual_arg ::= | sequence_expr | expression | event_expression 8) sequence_expr -- remove added sequence_inst, it's already there. ** The theme being let's fix what's broken with this ID, focusing on important cleanup/corrections for consistency with LRM, avoid seemingly simple enhancements add only what's needed to get the original intent back in, put those in other proposals for more study if really needed. Thx. -Bassam. ________________________________ From: owner-sv-ac@eda-stds.org [mailto:owner-sv-ac@eda-stds.org] On Behalf Of Eduard Cerny Sent: Thursday, June 15, 2006 9:37 AM To: Lisa Piper; sv-ac@verilog.org Subject: RE: [sv-ac] RE: Mantis 928 Proposal 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 19:07:42 2006
This archive was generated by hypermail 2.1.8 : Thu Jun 15 2006 - 19:07:53 PDT