Section A.1.4,
A.2.1.2, A.2.1.3, A.2.2.1, A.2.7, A.2.10, Syntax 3-1, Syntax 5-1, Syntax 10-1,
Syntax 17-4, Syntax 17-14, Syntax 18-4, Table B-1
Extending SystemVerilog data types to nets (BNF)
[ BNF proposal by Brad.Pierce@Synopsys.com, 18/November/2004. ]
In A.1.4, REPLACE
net_port_header
::= [ port_direction ] port_type
variable_port_header ::= [ port_direction
] data_type
WITH
net_port_header
::= [ port_direction ] net_port_type
variable_port_header ::= [ port_direction
] variable_portdata_type
In A.2.1.2 and Syntax 18-4, REPLACE
inout_declaration ::=
inout port_type list_of_port_identifiers
input_declaration ::=
input port_type
list_of_port_identifiers
| input data_type list_of_variable_identifiers
output_declaration ::=
output port_type
list_of_port_identifiers
| output data_type list_of_variable_port_identifiers
interface_port_declaration
::=
interface_identifier
list_of_interface_identifiers
| interface_identifier . modport_identifier list_of_interface_identifiers
ref_declaration ::= ref data_type
list_of_port_identifiers
WITH
inout_declaration ::=
inout net_port_type list_of_port_identifiers
input_declaration ::=
input net_port_type
list_of_port_identifiers
| input variable_portdata_type list_of_variable_identifiers
output_declaration ::=
output net_port_type
list_of_port_identifiers
| output variable_portdata_type list_of_variable_port_identifiers
interface_port_declaration
::=
interface_identifier
list_of_interface_identifiers
| interface_identifier . modport_identifier
list_of_interface_identifiers
ref_declaration ::= ref variable_portdata_type
list_of_port_identifiers
In A.2.1.3, REPLACE
net_declaration14 ::=
net_type_or_trireg
[ drive_strength | charge_strength ] [ vectored | scalared
]
[ signing ] { packed_dimension } [ delay3 ] list_of_net_decl_assignments ;
WITH
net_declaration14 ::=
net_type_or_trireg [ drive_strength |
charge_strength ] [ vectored | scalared
]
[ signing ] {
packed_dimension }
data_type_or_implicit [ delay3 ]
list_of_net_decl_assignments ;
In A.2.1.3 and Syntax 5-1, DELETE
variable_declaration
::=
data_type list_of_variable_decl_assignments
;
In A.2.1.3 and Syntax 5-1, in data_declaration, REPLACE
[ const ] [ lifetime ] variable_declaration
WITH
[
const ]
[ var ] [ lifetime ] variable_declaration data_type_or_implicit
list_of_variable_decl_assignments ;
[Note to editor: the var keyword and the semicolon ; should both be red.]
and ADD the following to footnote 15
In a data_declaration it shall be illegal to omit the
explicit data_type before a list_of_variable_decl_assignments unless the var keyword is used.
[Note to editor: the var keyword should be red.]
In A.2.2.1, REPLACE
net_type ::= supply0 | supply1 | tri | triand | trior | tri0 | tri1 | wire | wand | wor
port_type ::= [
net_type_or_trireg ] [ signing ] { packed_dimension }
net_type_or_trireg
::= net_type | trireg
WITH
net_type ::= supply0 | supply1 | tri | triand | trior | trireg | tri0 | tri1 | wire | wand | wor
net_port_type* ::= [ net_type_or_trireg ] data_type_or_implicit [ signing ] { packed_dimension
}
net_type_or_trireg ::= net_type | trireg
*When a net_port_type contains a data_type, it shall only be
legal to omit the explict net_type when declaring an inout port.
variable_port_type ::= var_data_type
var_data_type ::= data_type | var
data_type_or_implicit
[Note to editor: the var and trireg keywords should be red.]
In Syntax 3-1, REPLACE
net_type ::= supply0 | supply1 | tri | triand | trior | tri0 | tri1 | wire | wand | wor
WITH
net_type ::= supply0 | supply1 | tri | triand | trior | trireg | tri0 | tri1 | wire | wand | wor
[Note to editor: the trireg keyword should be red.]
In Syntax 18-4, REPLACE
port_type ::= [
net_type_or_trireg ] [ signing ] { packed_dimension }
WITH
net_port_type* ::= [ net_type_or_trireg ] data_type_or_implicit [ signing ] { packed_dimension
}
*When a net_port_type contains a data_type, it shall
only be legal to omit the explict net_type when declaring an inout port.
variable_port_type ::= var_data_type
var_data_type ::= data_type | var
data_type_or_implicit
[Note to editor: the var keyword should be red.]
In A.2.7 and Syntax 10-1, REPLACE
tf_port_item ::=
{ attribute_instance }
[ tf_port_direction ] data_type_or_implicit
port_identifier variable_dimension [ = expression ]
WITH
tf_port_item ::=
{ attribute_instance }
[ tf_port_direction ] [ var ] data_type_or_implicit
port_identifier variable_dimension [ = expression ]
[Note to editor: the var keyword should be red.]
In A.2.7 and Syntax 10-1, REPLACE
tf_port_declaration ::=
{ attribute_instance } tf_port_direction data_type_or_implicit list_of_tf_variable_identifiers ;
WITH
tf_port_declaration ::=
{ attribute_instance } tf_port_direction [ var ] data_type_or_implicit list_of_tf_variable_identifiers ;
[Note to editor: the var keyword should be red.]
In A.2.10, Syntax 17-4, and Syntax 17-14, REPLACE
assertion_variable_declaration
::=
data_type list_of_variable_identifiers ;
WITH
assertion_variable_declaration
::=
var_data_type
list_of_variable_identifiers ; ;
[Note to editor: the semicolon ; should be red.]
In Table B-1, DELETE
Note: The keyword var is reserved for future extensions.