====== 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_declarations|constant]] ] [[.:bnf#identifier_list]] : [ **in** ] [[.:subtype_declarations|subtype_indication]] [ := static _[[.:bnf#expression]] ]'' ===== interface_signal_declaration ===== ''[ [[.:signal_declarations|signal]] ] [[.:bnf#identifier_list]] : [ [[.:bnf#mode]] ] [[.:subtype_declarations|subtype_indication]] [ [[.:signal_declarations|bus]] ] [ := static _[[.:bnf#expression]] ]'' -- subtype_indication must not be a file or pointer type. ===== interface_variable_declaration ===== ''[ [[.:variable_declarations|variable]] ] [[.:bnf#identifier_list]] : [ [[.:bnf#mode]] ] [[.:subtype_declarations|subtype_indication]] [ := static _[[.:bnf#expression]] ]'' ===== interface_file_declaration ===== ''file [[.:bnf#identifier_list]] : [[.:bnf#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".