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