[sv-bc] Proposal for SV-BC-35


Subject: [sv-bc] Proposal for SV-BC-35
From: Jacobi, Dan (dan.jacobi@intel.com)
Date: Sun Feb 09 2003 - 10:00:14 PST


I was requested to send a proposal for an issue you pointed out regarding
the TF (task/function) ports.
following is the proposal.

*** SV-BC issue ****
This proposal deals with the issue labeled as SV-BC-35 (posted by Shalom).
        See more details under http://www.eda.org/vlog-pp/sv-bc/hm/0155.html

*** Motivation ***
1. In System-Verilog functions may have outputs and inout arguments.
   However Arguments to tasks and functions may only be type that can be
   procedurally assigned.

2. Align the System Verilog BNF with the Verilog 2001 (IEEE 1364-2001) BNF.

*** Suggested change ***

Under A.2.6
-----------------

REPLACE :
        function_item_declaration ::=
                block_item_declaration
                | { attribute_instance } input_declaration ';'
                | { attribute_instance } output_declaration ';'
                | { attribute_instance } inout_declaration ';'
        function_port_item ::=
                { attribute_instance } input_declaration
                | { attribute_instance } output_declaration
                | { attribute_instance } inout_declaration

WITH :
                function_item_declaration ::=
                block_item_declaration
                | { attribute_instance } tf_input_declaration ';'
                | { attribute_instance } tf_output_declaration ';'
                | { attribute_instance } tf_inout_declaration ';'
        function_port_item ::=
                { attribute_instance } tf_input_declaration
                | { attribute_instance } tf_output_declaration
                | { attribute_instance } tf_inout_declaration

        

Under A.2.7
-----------------
        
REPLACE :
        task_item_declaration ::=
                block_item_declaration
                | { attribute_instance } input_declaration ';'
                | { attribute_instance } output_declaration ';'
                | { attribute_instance } inout_declaration ';'
                task_port_list ::= task_port_item { ',' task_port_item }
                | list_of_port_identifiers { ',' task_port_item }
        task_port_item ::=
                { attribute_instance } input_declaration
                | { attribute_instance } output_declaration
                | { attribute_instance } inout_declaration
                | { attribute_instance } port_type list_of_port_identifiers

WITH:
                task_item_declaration ::=
                block_item_declaration
                | { attribute_instance } tf_input_declaration ';'
                | { attribute_instance } tf_output_declaration ';'
                | { attribute_instance } tf_inout_declaration ';'
                task_port_list ::= task_port_item { ',' task_port_item }
                | list_of_port_identifiers { ',' task_port_item }
        task_port_item ::=
                { attribute_instance } tf_input_declaration
                | { attribute_instance } tf_output_declaration
                | { attribute_instance } tf_inout_declaration
                | { attribute_instance } port_type list_of_port_identifiers

ADD :
        tf_input_declaration ::=
                'input' data_type list_of_port_identifiers
        tf_output_declaration ::=
                'output' data_type list_of_port_identifiers
        tf_inout_declaration ::=
                'inout' data_type list_of_port_identifiers

****

Dan Jacobi
Phone : (972)-4-8655855

Dan Jacobi
Phone : (972)-4-8655855



This archive was generated by hypermail 2b28 : Sun Feb 09 2003 - 10:01:03 PST