Section A.1.4,
A.1.5, A.2.1.1, A.2.1.2, A.2.2.1, A.2.3, A.2.6, A.2.7, A.2.9, A.2.11, Syntax
10-1, Syntax 18-4, Syntax 19-1, Syntax 20-1, Syntax 21-1, Syntax 27-1, 18.9,
19.4.4
Port declarations
In A.2.2.1 and Syntax 18-4, REPLACE
port_type ::=
data_type
| net_type_or_trireg [ signing ] { packed_dimension }
| [ signing ] { packed_dimension }
WITH
port_type ::=
[ net_type_or_trireg ] [ signing ] { packed_dimension }
In A.2.2.1, Syntax 10-1 and Syntax 21-1, ADD
data_type_or_implicit ::=
data_type
| [ signing ] { packed_dimension }
In A.1.4, REMOVE the tab before non_generic_port_declaration.
In A.1.4, RENAME
non_generic_port_declaration
TO
port_declaration
and REMOVE the existing
port_declaration
generic_interface_port_declaration
and in 18-4 REMOVE
generic_interface_port_declaration
In A.1.5 in module_item and in A.1.6 in interface_item REPLACE
non_generic_port_declaration ;
WITH
port_declaration ;
In A.2.1.2 and Syntax 18-4, in input_declaration, output_declaration, and inout_declaration, REPLACE
[ port_type ]
WITH
port_type
In A.2.3, in list_of_port_identifiers, REMOVE
| . port_identifier ( [ expression ] ) { . port_identifier ( [ expression ] ) }
In A.1.4, REPLACE
ansi_port_declaration ::=
port_declaration
| port_type list_of_port_identifiers
WITH
port_direction ::= input | output | inout | ref
net_port_header ::= [ port_direction ] port_type
variable_port_header ::= [ port_direction ] data_type
interface_port_header ::=
interface_identifier [ . modport_identifier ]
| interface [ . modport_identifier ]
ansi_port_declaration ::=
[ net_port_header | interface_port_header ] port_identifier { unpacked_dimension }
| [ variable_port_header ] port_identifier variable_dimension [ = constant_expression ]
| [ net_port_header | variable_port_header ] . port_identifier ( [ expression ] )
In A.1.4, REPLACE
list_of_port_declarations ::=
( [ ansi_port_declaration
{ , ansi_port_declaration } ] )
WITH
list_of_port_declarations ::=
( [ { attribute_instance} ansi_port_declaration
{ , { attribute_instance} ansi_port_declaration } ] )
and ADD the following footnote
The list_of_port_declarations syntax is explained in Section
18.8, which also imposes various semantic restrictions, e.g., a ref port must be
of a variable type and an inout port
must not be. It shall be illegal to
initialize a port that is not a variable output
port.
In A.2.9 and Syntax 19-1, REPLACE
modport_simple_ports_declaration ::=
input list_of_modport_port_identifiers
| output list_of_modport_port_identifiers
| inout list_of_modport_port_identifiers
| ref [ data_type ] list_of_modport_port_identifiers
WITH
modport_simple_ports_declaration ::=
port_direction modport_simple_port { , modport_simple_port }
modport_simple_port ::=
port_identifier
| . port_identifier ( [ expression ] )
In A.2.3, REMOVE
list_of_modport_port_identifiers
In A.2.6 and Syntax 27-1, REMOVE
list_of_tf_proto_formals
and in named_function_proto REPLACE
list_of_tf_proto_formals
WITH
tf_port_list
In A.2.7 and Syntax 27-1, REMOVE
tf_proto_formal
and in named_task_proto REPLACE
list_of_tf_proto_formals
WITH
tf_port_list
In A.2.11 and Syntax 20-1, in covergroup_declaration, REPLACE
list_of_tf_proto_formals
WITH
[ tf_port_list ]
In Syntax 10-1, in task_body_declaration, REPLACE
task_port_list
WITH
tf_port_list
In A.2.7 and Syntax 10-1, ADD
tf_port_direction ::= port_direction | const ref
tf_port_declaration ::=
{ attribute_instance }
tf_port_direction data_type_or_implicit list_of_tf_variable_identifiers ;
and REMOVE
tf_input_declaration
tf_output_declaration
tf_inout_declaration
tf_ref_declaration
In A.2.7 and Syntax 10-1, REPLACE
tf_item_declaration ::=
block_item_declaration
| { attribute_instance } tf_input_declaration ;
| { attribute_instance } tf_output_declaration ;
| { attribute_instance } tf_inout_declaration ;
| { attribute_instance } tf_ref_declaration ;
WITH
tf_item_declaration ::=
block_item_declaration
| tf_port_declaration
In A.2.7 and Syntax 10-1, REPLACE
tf_port_item ::=
{ attribute_instance } tf_input_declaration
| { attribute_instance } tf_output_declaration
| { attribute_instance } tf_inout_declaration
| { attribute_instance } tf_ref_declaration
| { attribute_instance } [ signing ] { packed_dimension } list_of_tf_variable_identifiers
| { attribute_instance } data_type list_of_tf_variable_identifiers
WITH
tf_port_item ::=
{ attribute_instance }
[ tf_port_direction ] data_type_or_implicit
port_identifier variable_dimension [ = expression ]
In A.2.1.1 and Syntax 21-1, REPLACE
local_parameter_declaration ::=
localparam [ signing ] { packed_dimension } list_of_param_assignments ;
| localparam data_type list_of_param_assignments ;
parameter_declaration ::=
parameter [ signing ] { packed_dimension } list_of_param_assignments
| parameter data_type list_of_param_assignments
| paramter type list_of_type_assignments
WITH
local_parameter_declaration ::=
localparam data_type_or_implicit list_of_param_assignments ;
parameter_declaration ::=
parameter data_type_or_implicit list_of_param_assignments
| paramter type list_of_type_assignments
}
In 18.9 and 19.4.4 REPLACE
port_expression
WITH
port expression