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