task_declaration ::= task [ lifetime ] task_body_declaration
task_body_declaration ::=
[ interface_identifier . | class_scope ] task_identifier ;
{ tf_item_declaration }
{ statement_or_null }
endtask
[ : task_identifier ]
| [ interface_identifier
. | class_scope ] task_identifier ( [ tf_port_list ] ) ;
{ block_item_declaration }
{ statement_or_null }
endtask
[ : task_identifier ]
task_declaration ::= task [ lifetime ] task_body_declaration
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
function_data_type6 ::=
data_type | void //
from Annex A.2.6
function_data_type_or_implicit ::=
function_data_type
| [ signing ] { packed_dimension
}
function_declaration ::=
function [ lifetime ] function_body_declaration
function_body_declaration ::=
[ signing ] [ type_or_dimensions ] function_data_type_or_implicit
[ interface_identifier . | class_scope ] function_identifier ;
{ tf_item_declaration }
{ function_statement_or_null }
endfunction
[ : function_identifier ]
| [ signing ] [ type_or_dimensions
] function_data_type_or_implicit
[ interface_identifier . | class_scope ] function_identifier ( [ tf_port_list ] ) ;
{ block_item_declaration }
{ function_statement_or_null }
endfunction
[ : function_identifier ]
function_declaration ::=
function [
lifetime ] function_body_declaration
type_or_dimensions ::=
packed_dimension { packed_dimension
}
| function_data_type
function [15:0]
myfunc2 (input [7:0] x,y);
return x * y - 1;
//return value is specified using return
statement
endfunction
dpi_function_proto9,10 ::= function
named_function_proto function_prototype