RE: [sv-ac] RE: Mantis 928 Proposal

From: Eduard Cerny <Eduard.Cerny_at_.....>
Date: Thu Jun 15 2006 - 09:37:24 PDT
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