[sv-bc] Combined proposal for SV-BC19-17a and SV-BC62b


Subject: [sv-bc] Combined proposal for SV-BC19-17a and SV-BC62b
From: Karen Pieper (Karen.Pieper@synopsys.com)
Date: Mon Feb 10 2003 - 16:55:51 PST


 From Dan Jacobi:

  SV-BC-19-17a and SV-BC62b should need to be merged into one issue due to
the fact they are partially overlapping.

I would suggest the combined proposal
1) Under A.2.6
1.1) REPLACE (adding a footnote)
function_declaration ::=
'function' [ 'automatic' ] [ signing ] [ range_or_type ]
[ interface_identifier '.' ] function_identifier ';'
{ function_item_declaration }
{ function_statement }
'endfunction' [ ':' function_identifier ]
| 'function' [ 'automatic' ] [ signing ] [ range_or_type ]
[ interface_identifier '.' ] function_identifier
'(' function_port_list ')' ';'
{ block_item_declaration }
{ function_statement }
'endfunction' [ ':' function_identifier ]
WITH
function_declaration10 ::= <superscript 10>
'function' [ 'automatic' ] [ signing ] [ range_or_type ]
[ interface_identifier '.' ] function_identifier ';'
{ function_item_declaration }
{ function_statement }
'endfunction' [ ':' function_identifier ]
| 'function' [ 'automatic' ] [ signing ] [ range_or_type ]
[ interface_identifier '.' ] function_identifier
'(' function_port_list ')' ';'
{ block_item_declaration }
{ function_statement }
'endfunction' [ ':' function_identifier ]
1.2) REPLACE
function_prototype ::= 'function' data_type
'(' list_of_function_proto_formals ')'
WITH
function_prototype ::= 'function' function_data_type
'(' list_of_function_proto_formals ')'
.
1.3) REPLACE
named_function_proto::= 'function' data_type function_identifier
'(' list_of_function_proto_formals ')'
WITH
named_function_proto::= 'function' function_data_type
function_identifier '(' list_of_function_proto_formals ')'
1.4) REPLACE
range_or_type ::=
{ packed_dimension } range
| data_type
WITH
range_or_type ::=
{ packed_dimension } range
| function_data_type
1.5) ADD the following production:
function_data_type ::=
integer_vector_type { packed_dimension } [ range ]
| integer_atom_type
| type_declaration_identifier { packed_dimension } <= adjustment to P-0414
| non_integer_type
| 'struct' [' packed' ] '{'{ struct_union_member } '}' { packed_dimension }
<= adjustment to P-0414
| 'union' [ 'packed' ] '{' { struct_union_member } '}' { packed_dimension }
<= adjustment to P-0414
| 'enum' [ integer_type { packed_dimension } ]
'{' enum_identifier [ '=' constant_expression ]
{ ',' enum_identifier [ '=' constant_expression ] } '}'
| 'void'
2) Under the foot note section at the end of the BNF:
2.1) Add the following footnote
10 void functions, non integer type functions, and functions with a
typedef type cannot have a signing declaration.
3) Under A.2.2.1:
3.1) REPLACE (removing the void type)
data_type ::=
integer_vector_type [ signing ] { packed_dimension } [ range ]
| integer_atom_type [ signing ] { packed_dimension }
| type_declaration_identifier
| non_integer_type
| 'struct' [' packed' ] [ signing ] '{'{ struct_union_member } '}'
| 'union' [ 'packed' ] [ signing ] '{' { struct_union_member } '}'
| 'enum' [ integer_type [ signing ] { packed_dimension } ]
'{' enum_identifier [ '=' constant_expression ]
{ ',' enum_identifier [ '=' constant_expression ] } '}'
| 'void'
WITH
data_type ::=
integer_vector_type [ signing ] { packed_dimension } [ range ]
| integer_atom_type [ signing ]
| type_declaration_identifier { packed_dimension } <= adjustment to P-0414
| non_integer_type
| 'struct' [' packed' ] [ signing ] '{'{ struct_union_member } '}' {
packed_dimension } <= adjustment to P-0414
| 'union' [ 'packed' ] [ signing ] '{' { struct_union_member } '}' {
packed_dimension } <= adjustment to P-0414
| 'enum' [ integer_type [ signing ] { packed_dimension } ]
'{' enum_identifier [ '=' constant_expression ]
{ ',' enum_identifier [ '=' constant_expression ] } '}'
4) P-0412 also deals with another item
under A.2.6
REMOVE the following production
function_prototype ::= 'function' data_type
'(' list_of_function_proto_formals ')'

5) P-0410 also deals with another item
under A.2.7
REMOVE the following production
task_prototype ::=
'task' '(' { attribute_instance } task_proto_formal
{ ',' { attribute_instance } task_proto_formal } ')'
__



This archive was generated by hypermail 2b28 : Mon Feb 10 2003 - 16:56:41 PST