Language Change Specification for Sequential Declaration Regions

LCS Number: LCS-2016-007
Version: 3
Date: 11-Mar-2017
Status: Voting
Author: Jim Lewis
Email: Main.JimLewis
Source Doc: Examples History Proposal
Summary: Sequential Declaration Regions

Style Notes

Changes are shown in red font. Deletions are crossed out. Editing notes in green font.

Reviewing Notes

sequential_block_declarative_part is defined in terms of process_declarative_item. Need a term for sequential_declarative_item and it should be used by here, process, and subprogram_declarative_item

Details of Language Change

Section 10.1 General

007.1: Production for Sequential_statement p145 (and )

  sequential_statement ::=
            wait_statement
          | assertion_statement
          | report_statement
          | signal_assignment_statement
          | variable_assignment_statement
          | procedure_call_statement
          | if_statement
          | case_statement
          | loop_statement
          | next_statement
          | exit_statement
          | return_statement
          | null_statement
          | sequential_block_statement

007.2: New Section 10.15

A sequential block statement encloses a sequence of sequential statements. Block statements may be nested.

sequential_block_statement ::=
    [ sequential_block_label : ] block  [ is ]
        sequential_block_declarative_part
    begin
        sequential_block_statement_part
    end [ block ] [ block_label ] ;
    
  sequential_block_declarative_part ::=
      {process_declarative_item}

  sequential_block_statement_part ::= 
      {sequential_statement}
If a label appears at the end of an sequential statement, it shall repeat the sequential block label.

The execution of a sequential block statement consists of the elaboration of the sequential block declarative part followed by the execution of the statements in the sequential block statement part.

It is an error if a variable declaration in a process declarative part declares a shared variable.

12. Scope and visibility

12.1 Declarative region

007.3: List following paragraph 1 of section 12.1 on page 185

[Add new list item and reorder the ones that follow it.] h) A process statement
i) A sequential block statement j i) A loop statement k j) A block configuration l k) A component configuration m l) A generate statement n m) A protected type declaration, together with the corresponding body

14.6 Dynamic elaboration

007.4: paragraph 2 of section 14.6 on page 213

There are four three particular instances in which elaboration occurs dynamically during simulation. These are as follows:

007.5: New list item d in section 14.6 on page 214

d) Execution of a sequential block statement involves the elaboration of the sequential block declarative part followed by the execution of the statements in the sequential block statement part.

007.6: Note 1 at end of section 14.6 on page 214

NOTE 1-It is a consequence of these rules that declarative items appearing within the declarative part of a subprogram body are elaborated each time the corresponding subprogram is called; thus, successive elaborations of a given declarative item appearing in such a place may create items with different characteristics. For example, successive elaborations of the same subtype declaration appearing in a subprogram body may create subtypes with different constraints.

NOTE 1-Each time a subprogram is called or a sequential block statement is executed, the corresponding declarative region is elaborated. As a result, a given declarative item in these constructs may have different characteristics, such as subtype constraints, on successive executions of the same construct.

16.2.5 Predefined attributes of named entities

007.7: Production for full_path_instance_element on page 249

full_path_instance_element ::=
    [other BNF unmodified]
    | process_label
    | sequential_block_label
    | loop_label

sequential_block_label ::= [ sequential_block_label ]

007.8: Page 249 3rd paragraph from bottom.

A process statement with no label is denoted by an empty process label. Similarly, a loop statement with no label is denoted by an empty loop label. A sequential block statement with no label is denoted by an empty sequential block label.

007.9: Production for path_instance_element on page 251

path_instance_element ::=
    [other BNF unmodified]
    | process_label
    | sequential_block_label
    | loop_label

Annex C

-- Update sequential statements per above -- Add sequential block statement syntax

007.10 BNF



Comments

Topic revision: r29 - 2017-07-16 - 18:26:01 - 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