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

From: Bassam Tabbara <Bassam.Tabbara_at_.....>
Date: Thu Jun 15 2006 - 19:07:12 PDT
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