|
LCS-2016-045a |
|
3 |
|
21-Mar-17 |
|
Ballot |
|
Brent Hayhoe |
|
|
|
Interface Construct and Port Mode Configurations Use Case - Complex RTL Signal CPU Interface |
|
Provide the independent interface mode control for the elements of composite type objects |
|
LCS-2016-045b LCS-2016-045c |
package_declaration ::=
package identifier is
package_header
package_declarative_part
end [ package ] [ package_simple_name ] ;
package_header ::=
[ generic_clause
[ generic_map_aspect ; ] ]
package_declarative_part ::=
{ package_declarative_item }
package_declarative_item ::=
subprogram_declaration
| subprogram_instantiation_declaration
| package_declaration
| package_instantiation_declaration
| type_declaration
| subtype_declaration
| mode_view_declaration
| constant_declaration
| signal_declaration
| variable_declaration
| file_declaration
| alias_declaration
| component_declaration
| attribute_declaration
| attribute_specification
| disconnection_specification
| use_clause
| group_template_declaration
| group_declaration
| PSL_Property_Declaration
| PSL_Sequence_Declaration
interface_object_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 ] signal_mode_indication
interface_variable_declaration ::=
[ variable ] identifier_list : [ mode ] subtype_indication [ := static_expression ] variable_mode_indication
interface_file_declaration ::=
file identifier_list : subtype_indication
mode_indication ::=
[ mode ] [ subtype_indication [ bus ] [ := static_expression ] ]
| mode_view_indication
mode ::= in | out | inout | buffer | linkage
mode_view_indication ::=
view mode_view_name
[ constant_generic_map_aspect ]
[ of unresolved_composite_subtype_indication ]
mode_view_declaration ::=
view identifier
[ mode_view_header ]
of unresolved_composite_subtype_indication is
{ mode_view_element_definition }
end view [ mode_view_simple_name ] ;
mode_view_header ::=
generic ( constant_generic_list )
mode_view_element_definition ::=
composite_element_list [ : composite_element_mode_indication ] ;
composite_element_list ::=
composite_element_choice { , composite_element_choice }
attribute_specification ::=
attribute attribute_designator of entity_specification is expression ;
entity_specification ::=
entity_name_list : entity_class
entity_class ::=
entity
| architecture
| configuration
| procedure
| function
| package
| type
| subtype
| constant
| signal
| variable
| component
| label
| literal
| units
| group
| file
| property
| sequence
| view
entity_name_list ::=
entity_designator { , entity_designator }
| others
| all
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
view | |||
|
|
|
|
|
|
|
|
||
|
|
|
||
|
|
|||
|
|
|
||
|
|
|||
|
|
|
||
|
|
|
||
|
|
|||
|
|
|
||
|
|
|
||
|
composite_element_list ::= [§ 6.5.2.1.1]
composite_element_choice { , composite_element_choice }
entity_class ::= [§ 7.2]
entity
| architecture
| configuration
| procedure
| function
| package
| type
| subtype
| constant
| signal
| variable
| component
| label
| literal
| units
| group
| file
| property
| sequence
| view
interface_signal_declaration ::= [§ 6.5.2]
[ signal ] identifier_list : [ mode ] subtype_indication [ bus ] [ := static_expression ] signal_mode_indication
interface_variable_declaration ::= [§ 6.5.2]
[ variable ] identifier_list : [ mode ] subtype_indication [ := static_expression ] variable_mode_indication
mode_indication ::= [§ 6.5.2]
[ mode ] [ subtype_indication [ bus ] [ := static_expression ] ]
| mode_view_indication
mode_view_declaration ::= [§ 6.5.2.1.1]
view identifier
[ mode_view_header ]
of unresolved_composite_subtype_indication is
{ mode_view_element_definition }
end view [ mode_view_simple_name ] ;
mode_view_element_definition ::= [§ 6.5.2.1.1]
composite_element_list [ : composite_element_mode_indication ] ;
mode_view_header ::= [§ 6.5.2.1.1]
generic ( constant_generic_list )
mode_view_indication ::= [§ 6.5.2]
view mode_view_name
[ constant_generic_map_aspect ]
[ of unresolved_composite_subtype_indication ]
package_declarative_item ::= [§ 4.7]
subprogram_declaration
| subprogram_instantiation_declaration
| package_declaration
| package_instantiation_declaration
| type_declaration
| subtype_declaration
| mode_view_declaration
| constant_declaration
| signal_declaration
| variable_declaration
| file_declaration
| alias_declaration
| component_declaration
| attribute_declaration
| attribute_specification
| disconnection_specification
| use_clause
| group_template_declaration
| group_declaration
| PSL_Property_Declaration
| PSL_Sequence_Declaration
type handshake is record valid, ready: bit; end record; view ControllerHandshake of handshake is valid : out; ready : in; end view; view TargetHandshake of handshake is valid : in; ready : out; end view;
type T is record a, b, c : bit; end record; view V of T is a, c : in; end view V;
mode_indication
optional in a mode_view_element_definition
?
The lexically conformance rule makes no sense. We are talking about a single lexical element: an identifier.
Why have modes default expressions?
This LCS does not describe how a mode view works/behaves. It misses what choices are allowed (e.g. array indices, because it's still a composite, what I would forbid ...) and how elements in a mode correlate with composite elements.
Don't insert auxiliary sentences with parentheses. It's still an English text in prose.
-- view V of T is a, c : in; b; end view V;