TWiki
>
Sandbox Web
>
InterfaceSandbox
>
InterfaceSyntaxSandbox
(2013-05-16,
BrentHahoe
)
(raw view)
E
dit
A
ttach
---+ 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. -- [[Main.BrentHahoe][Brent Hayhoe]] - 2012-11-07 ---++ Interface Block The interface block defines an interface construct for a particular composite type. <p align="left" style="PADDING-LEFT: 30px">interface_declaration ::=</p> <p align="left" style="PADDING-LEFT: 60px"> *interface* identifier *of* <em>composite_</em>subtype_name *is* </p> <p align="left" style="PADDING-LEFT: 90px">interface_declarative_part</p> <p align="left" style="PADDING-LEFT: 60px"> *end interface* [ <em>interface_</em>simple_name ] ;</p> <p align="left" style="PADDING-LEFT: 30px"> </p> <p align="left" style="PADDING-LEFT: 30px">interface_declarative_part ::=</p> <p align="left" style="PADDING-LEFT: 60px">{ interface_declarative_item }</p> <p align="left" style="PADDING-LEFT: 30px"> </p> <p align="left" style="PADDING-LEFT: 30px">interface_declarative_item::=</p> <p align="left" style="PADDING-LEFT: 60px">port_configuration_declaration<br />| subprogram_declaration<br />| type_declaration<br />| subtype_declaration<br />| constant_declaration<br />| signal_declaration<br />| shared_variable_declaration<br />| file_declaration<br />| alias_declaration<br />| component_declaration<br />| attribute_declaration<br />| attribute_specification<br />| disconnection_specification<br />| use_clause<br />| group_template_declaration<br />| group_declaration</p> <p align="left"> </p> <p align="left" style="PADDING-LEFT: 30px">interface_declarative_part ::=</p> <p align="left" style="PADDING-LEFT: 60px">{ interface_declarative_item }</p> <p align="left" style="PADDING-LEFT: 30px"> </p> <p align="left" style="PADDING-LEFT: 30px">interface_declarative_item::=</p> <p align="left" style="PADDING-LEFT: 60px">port_configuration_declaration<br />| subprogram_declaration<br />| type_declaration<br />| subtype_declaration<br />| constant_declaration<br />| signal_declaration<br />| shared_variable_declaration<br />| file_declaration<br />| alias_declaration<br />| component_declaration<br />| attribute_declaration<br />| attribute_specification<br />| disconnection_specification<br />| use_clause<br />| group_template_declaration<br />| group_declaration</p> <p align="left"> </p> ---++ Port Configuration Block The basis of providing customized directional port mode definitions for a given interface. <p align="left" style="PADDING-LEFT: 30px">port_configuration_declaration ::=</p> <p align="left" style="PADDING-LEFT: 60px"> *port configuration* identifier *is* </p> <p align="left" style="PADDING-LEFT: 90px">[ <em>formal_</em>generic_clause ]</p> <p align="left" style="PADDING-LEFT: 90px"><em>formal_</em>composite_port_clause</p> <p align="left" style="PADDING-LEFT: 60px"> *end port configuration* [ <em>port_confguration_</em>simple_name] ;</p> <p align="left" style="PADDING-LEFT: 30px"> </p> <p align="left" style="PADDING-LEFT: 30px">composite_port_clause ::=</p> <p align="left" style="PADDING-LEFT: 60px"> *port* ( composite_port_list ) ;</p> <p align="left" style="PADDING-LEFT: 30px"> </p> <p align="left" style="PADDING-LEFT: 30px">composite_port_list ::= composite_interface_list</p> <p align="left" style="PADDING-LEFT: 30px"> </p> <p align="left" style="PADDING-LEFT: 30px">composite_interface_list ::=</p> <p align="left" style="PADDING-LEFT: 60px">composite_interface_element { ; composite_interface_element }</p> <p align="left" style="PADDING-LEFT: 30px"> </p> <p align="left" style="PADDING-LEFT: 30px">composite_interface_element ::= composite_interface_declaration</p> <p align="left" style="PADDING-LEFT: 30px"> </p> <p align="left" style="PADDING-LEFT: 30px">composite_interface_declaration ::=</p> <p align="left" style="PADDING-LEFT: 60px"><em>element_</em>identifier_list : composite_mode_declaration ;</p> <p align="left" style="PADDING-LEFT: 60px"> </p> <p align="left" style="padding-left: 30px;">composite_mode_declaration ::=</p> <p align="left" style="padding-left: 60px;">mode [ := <em>static_</em>expression ]</p> <p align="left" style="padding-left: 60px;"> </p> ---++ Mode Additions Two new modes and a custom named mode are required as shown: <p align="left" style="padding-left: 30px;">mode ::= *in* | *out* | *inout* | *buffer* | *linkage* | composite_mode | *null* | custom_mode</p> ---+++ *Composite* mode <p align="left">This mode provides a hierarchical mode structure for composite types.</p> <p align="left" style="padding-left: 30px;">composite_mode ::=</p> <p align="left" style="padding-left: 60px;"> *composite* ( composite_mode_clause )</p> <p align="left"> </p> <p align="left" style="padding-left: 30px;">composite_mode_clause::= composite_interface_declaration</p> <p align="left"> </p> ---+++ *Null* mode <p align="left">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.</p> <p align="left">It is used within composite mode structures.</p> ---+++ Custom mode <p align="left">This mode provides a custom named mode structure for composite types.</p> <p align="left" style="padding-left: 30px;">custom_mode ::= port_configured_composite_mode</p> <p align="left" style="padding-left: 30px;"> </p> <p align="left" style="padding-left: 30px;">port_configured_composite_mode::=</p> <p align="left" style="padding-left: 60px;"><em>port_configuration_</em>simple_name [ ( <em>generic_</em>association_list ) ]</p>
E
dit
|
A
ttach
|
P
rint version
|
H
istory
: r18
<
r17
<
r16
<
r15
<
r14
|
B
acklinks
|
V
iew topic
|
Ra
w
edit
|
M
ore topic actions
Topic revision: r18 - 2013-05-16 - 08:57:54 -
BrentHahoe
Sandbox
Log In
or
Register
Sandbox Web
Create New Topic
Index
Search
Changes
Notifications
RSS Feed
Statistics
Preferences
Webs
Main
P1076
Ballots
LCS2016_080
P10761
P1647
P16661
P1685
P1734
P1735
P1778
P1800
P1801
Sandbox
TWiki
VIP
VerilogAMS
Copyright © 2008-2026 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback