Interface declarations define interface objects of a precisely defined type.
Interface objects are interface constants, interface signals, interface variables and interface files.
interface_list ::=
interface_element { ; interface_element }
interface_element ::=
interface_declaration
interface_declaration ::=
interface_constant_declaration
| interface_signal_declaration
| interface_variable_declaration
| interface_file_declaration
interface_constant_declaration ::=
[
constant
] identifier_list : [
in
] subtype_indication [ :=
static_expression
]
interface_signal_declaration ::=
[
signal
] identifier_list : [ mode ] subtype_indication [
bus
] [ :=
static_expression
]
-- subtype_indication may not be a file or access type.
interface_variable_declaration ::=
[
variable
] identifier_list : [ mode ] subtype_indication [ :=
static_expression
]
interface_file_declaration ::=
file
identifier_list subtype_indication
-- subtype_indication have to indicate a subtype of a file type.
mode ::=
in
-- Ports cannot be written; default mode
|
out
-- Ports cannot be read
|
inout
-- Ports can be read and written
|
buffer
-- Ports can be read but only be written by one source
|
linkage
-- Ports can be read and written, but only as "actuals".