4.7 Interface declarations

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".