Language Change Specification for Interface Construct and Port Mode Configurations Proposal

Primary LCS:

This LCS details the minimum support required for a mode view interface construct at the RTL.

LCS Number: LCS-2016-045a
Version: 6
Date: 2017-Mar-30
Status: Voting
Author: Jim Lewis, Patrick Lehmann, Lieven Lemiengre
Source Doc: Interface Construct and Port Mode Configurations
Use Case - Complex RTL Signal CPU Interface
History Doc: History
Summary: Provide the independent interface mode control for the elements of composite type objects
Related LCS: LCS-2016-045b
LCS-2016-045c

Format Key

  • LRM text is shown between single quotes '... P1076 LRM quoted text ...'
  • Existing LRM text is shown in BLACK coloured font
  • Additional LRM text is shown in RED coloured font
  • Deleted LRM text is shown in RED with strike-through
  • In order to try and emphasize text in italic font:
    • Italic font in existing LRM text is shown in GRAY italic font
    • Italic font in new LRM text is shown in ORANGE italic font
    • Italic font in deleted LRM text is shown in ORANGE with strike-through
  • Editing instructions (and informative annotations) are shown in GREEN coloured font

LCS Intent

Add mode view construct which will enable the individual mode control of the elements of interface objects of a composite type.

Details of Language Change:

3.2.3 Entity declarative part

Edit 45a.1


entity_declarative_item ::=
   [beginning items unchanged]
   | type_declaration
   | subtype_declaration
   | mode_view_declaration
   | constant_declaration
   [remaining items unchanged]

3.3.2 Architecture declarative part

Edit 45a.2


block_declarative_item ::=
   [beginning items unchanged]
   | type_declaration
   | subtype_declaration
   | mode_view_declaration
   | constant_declaration
   [remaining items unchanged]

4.7 Package declarations

Edit 45a.3


package_declarative_item ::=
   [beginning items unchanged]
   | type_declaration
   | subtype_declaration
   | mode_view_declaration
   | constant_declaration
   [remaining items unchanged]

6.3 Subtype declarations

Edit 45a.4

[...]

A subtype indication defines a subtype of the base type of the type mark.

A subtype that has a resolution indication is called a resolved subtype. A type or subtype that does not have a resolution indication is called an unresolved type or unresolved subtype respectively.

A resolution indication is said to correspond to a subtype, and associates one or more resolution functions with the subtype to which it corresponds or with subelement subtypes of the subtype to which it corresponds.[...]

6.5.2 Interface object declarations

Edit 45a.5

[...]


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 ]

interface_file_declaration ::=
   file identifier_list : subtype_indication

mode_indication ::=
    simple_mode_indication
  | mode_view_indication

simple_mode_indication ::=
    [ mode ] subtype_indication [ bus ] [ := static_expression ]

mode ::= in | out | inout | buffer | linkage
  
mode_view_indication ::=
    record_mode_view_indication
  | array_mode_view_indication

record_mode_view_indication ::=
    view mode_view_name [ of unresolved_record_subtype_indication ]
    
array_mode_view_indication ::=
    view ( mode_view_name ) of unresolved_array_subtype_indication

mode_view_declaration ::=
  view identifier of unresolved_record_subtype_indication is
    { mode_view_element_definition }
  end view [ mode_view_simple_name ] ;

mode_view_element_definition ::=
  record_element_list : element_mode_indication ;

record_element_list ::=
  record_element_simple_name { , record_element_simple_name }
     
element_mode_indication ::=
    mode  
  | element_mode_view_indication

element_mode_view_indication ::=
    element_record_mode_view_indication
  | element_array_mode_view_indication
	
element_record_mode_view_indication ::=
    view mode_view_name
    
element_array_mode_view_indication ::=
    view ( mode_view_name )

Edit 45a.6

If no mode is explicitly given in an interface declaration other than an interface file declaration, mode in is assumed.

Edit 45a.7

[replacement]
For an interface constant declaration, if mode in is not explicitly given, mode in is assumed. For an interface variable declaration, if no mode is explicitly given, mode in is assumed. For an interface signal declaration, if an mode indication is a simple mode indication and no mode is explicitly given, mode in is assumed.

Edit 45a.8

[page 74; 1st paragraph; no edits]
For an interface constant declaration (other than a formal parameter of the predefined = or /= operator for an access type) or an interface signal declaration, the subtype indication shall define a subtype that is neither a file type, an access type, nor a protected type. Moreover, the subtype indication shall not denote a composite type with a subelement that is of an access type.

Edit 45a.9

[2nd paragraph; no edits]
For an interface file declaration, it is an error if the subtype indication does not denote a subtype of a file type.

Edit 45a.10

[3rd paragraph]
If the simple mode indication of an interface signal declaration includes the reserved word bus, then the signal declared by that interface declaration is a guarded signal of signal kind bus.

Edit 45a.11

[4rd paragraph with edits]
If an interface constant or variable declaration or the simple mode indication of an interface signal declaration contains a ":=" symbol followed by an expression, the expression is said to be the default expression of the interface object. The type of a default expression shall be that of the corresponding interface object. It is an error if a default expression appears in an interface declaration or a simple mode indication of an interface signal declaration and any of the following conditions hold:
  • The mode is linkage.
  • The interface object is a formal signal parameter.
  • The interface object is a formal variable parameter of mode other than in.
  • The subtype indication of the interface declaration denotes a protected type.

Edit 45a.12

[5th paragraph; no edits]
In an interface signal declaration appearing in a port list, the default expression defines the default value(s) associated with the interface signal or its subelements. In the absence of a default expression, an implicit default value is assumed for the signal or for each scalar subelement, as defined for signal declarations (see 6.4.2.3). The value, whether implicitly or explicitly provided, is used to determine the initial contents of drivers, if any, of the interface signal as specified for signal declarations.

Edit 45a.13

[new paragraphs]
In an interface signal declaration, a mode view indication allows each subelement of the composite to have a different interface mode. For an interface signal declaration with a mode view indication there is an equivalent interface signal declaration for each subelement of the composite whose mode corresponds to the mode specified in the mode view indication and whose type or subtype corresponds to the type or subtype defined in the composite.

Edit 45a.14

For an array mode view indication or an element array mode view indication, the mode view applies to each element of the type or subtype specified in the subtype indication.

Edit 45a.15

For a record mode view indication:
  • If the optional subtype indication is not present, an implicit subtype indication is determined from the corresponding mode view declaration.
  • If the optional subtype indication is present, it specifies the subtype of the interface signal declaration and it shall be compatible with the type or subtype in the corresponding mode view declaration.

Edit 45a.16

For an array mode view indication the type or subtype of the mode view shall be compatible with the element type or subtype of the subtype indication.

Edit 45a.17

For an element mode view indication, the type or subtype is determined from the corresponding record element. For an element array mode view indication, the element type or subtype of each corresponding record element shall be compatible with the type or subtype of the mode view. For an element record mode view indication, the type or subtype of each corresponding record element shall be compatible with the type or subtype of the mode view.

Edit 45a.18

A mode view declaration declares a mode view for a composite type or subtype. A mode view specifies a mode for each subelement of a composite type or subtype. Mode views may be used in an interface signal declaration or within another mode view declaration.

Edit 45a.19

In a mode view declaration, it is an error if either a resolution function appears in the subtype indication or the subtype is a resolved subtype. However, the elements of a composite may be resolved subtypes.

Edit 45a.20

The subtype indication of a mode view declaration shall denote an unresolved record type or subtype. For each record element simple name of the type or subtype, there shall be a record element simple name in the mode view declaration with the same simple name.

Edit 45a.21

It is an error if the mode of an element mode indication is linkage.

[no edits]
In an interface signal declaration appearing in a port list, the default expression defines the default value(s) associated with the interface signal or its subelements. In the absence of a default expression, an implicit default value is assumed for the signal or for each scalar subelement, as defined for signal declarations (see 6.4.2.3). The value, whether implicitly or explicitly provided, is used to determine the initial contents of drivers, if any, of the interface signal as specified for signal declarations.

Edit 45a.22

[Edit: 3rd paragraph on page 75]
An interface object has one of the following modes:

The mode or mode view of an interface signal has one of the following modes:

7.2 Attribute specification

Edit 45a.23

[Add view to the end of the production for entity_class on page 95 middle]


entity_class ::=
  [all unspecified items are unchanged]
  | sequence
  | view

LRM 15.10 Reserved words

Edit 45a.24

[Add view to reserved word list on page 236 in alphabetical order]

view

Annex C Syntax summary

[Update the following production rules in alphabetical order.]

Edit 45a.25


array_mode_view_indication ::=
    view ( mode_view_name ) [ of unresolved_array_subtype_indication ]

block_declarative_item ::=
   [beginning items unchanged]
   | type_declaration
   | subtype_declaration
   | mode_view_declaration
   | constant_declaration
   [remaining items unchanged]

element_mode_indication ::=
    mode  
  | element_mode_view_indication

entity_declarative_item ::=
   [beginning items unchanged]
   | type_declaration
   | subtype_declaration
   | mode_view_declaration
   | constant_declaration
   [remaining items unchanged]

element_array_mode_view_indication ::=
    view ( mode_view_name )
		
element_mode_indication ::=
    mode  
  | element_mode_view_indication

element_mode_view_indication ::=
    element_record_mode_view_indication
  | element_array_mode_view_indication
	
element_record_mode_view_indication ::=
    view mode_view_name

interface_signal_declaration ::=
  [ signal ] identifier_list : [ mode ] subtype_indication [ bus ] [ := static_expression ] signal_mode_indication

mode_indication ::=
    simple_mode_indication
  | mode_view_indication

mode_view_declaration ::=
  view identifier of unresolved_record_subtype_indication is
    { mode_view_element_definition }
  end view [ mode_view_simple_name ] ;

mode_view_element_definition ::=
  record_element_list : element_mode_indication ;

mode_view_indication ::=
    record_mode_view_indication
  | array_mode_view_indication

package_declarative_item ::=
   [beginning items unchanged]
   | type_declaration
   | subtype_declaration
   | mode_view_declaration
   | constant_declaration
   [remaining items unchanged]

record_element_list ::=
  record_element_simple_name { , record_element_simple_name }

record_mode_view_indication ::=
    view mode_view_name [ of unresolved_record_subtype_indication ]

simple_mode_indication ::=
    [ mode ] subtype_indication [ bus ] [ := static_expression ]

Annex I Glossary

Edit 45a.26

[Add definition of mode view declaration in alphabetic order on page 572]
mode view declaration: A declaration of the modes, of the individual elements, of a composite interface object. A mode view is associated with a composite type or subtype. There may be more than one mode view associated with a given composite type or subtype. (6.5.2, 6.5.6.3)'



Comments

Topic revision: r58 - 2017-07-23 - 18:48:08 - JimLewis
 
Copyright © 2008-2021 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback