VHDL Interface Construct - Syntax Additions/Modifications

Following on from the CPU bus example, I've attempted to put together some BNF productions based on the 2002 LRM (I haven't got access to a 2008 edition), but I'm no expert in these things.

-- Brent Hayhoe - 2012-11-07

Interface Block

The interface block defines an interface construct for a particular composite type.

interface_declaration ::=

interface identifier of composite_subtype_name is

interface_declarative_part

end interface [ interface_simple_name ] ;

interface_declarative_part ::=

{ interface_declarative_item }

interface_declarative_item::=

port_configuration_declaration
| subprogram_declaration
| type_declaration
| subtype_declaration
| constant_declaration
| signal_declaration
| shared_variable_declaration
| file_declaration
| alias_declaration
| component_declaration
| attribute_declaration
| attribute_specification
| disconnection_specification
| use_clause
| group_template_declaration
| group_declaration

interface_declarative_part ::=

{ interface_declarative_item }

interface_declarative_item::=

port_configuration_declaration
| subprogram_declaration
| type_declaration
| subtype_declaration
| constant_declaration
| signal_declaration
| shared_variable_declaration
| file_declaration
| alias_declaration
| component_declaration
| attribute_declaration
| attribute_specification
| disconnection_specification
| use_clause
| group_template_declaration
| group_declaration

Port Configuration Block

The basis of providing customized directional port mode definitions for a given interface.

port_configuration_declaration ::=

port configuration identifier is

[ formal_generic_clause ]

formal_composite_port_clause

end port configuration [ port_confguration_simple_name] ;

composite_port_clause ::=

port ( composite_port_list ) ;

composite_port_list ::= composite_interface_list

composite_interface_list ::=

composite_interface_element { ; composite_interface_element }

composite_interface_element ::= composite_interface_declaration

composite_interface_declaration ::=

element_identifier_list : composite_mode_declaration ;

composite_mode_declaration ::=

mode [ := static_expression ]

Mode Additions

Two new modes and a custom named mode are required as shown:

mode ::= in | out | inout | buffer | linkage | composite_mode | null | custom_mode

Composite mode

This mode provides a hierarchical mode structure for composite types.

composite_mode ::=

composite ( composite_mode_clause )

composite_mode_clause::= composite_interface_declaration

Null mode

This mode is required for interface (sub-)connections that are not used within the connected entity. It provides connectivity/termination at the port, but can neither be driven nor read by the entity.

It is used within composite mode structures.

Custom mode

This mode provides a custom named mode structure for composite types.

custom_mode ::= port_configured_composite_mode

port_configured_composite_mode::=

port_configuration_simple_name [ ( generic_association_list ) ]

Topic revision: r18 - 2013-05-16 - 08:57:54 - BrentHahoe
 
Copyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback