access_type_definition |
::= |
<ACCESS> subtype_indication |
actual_designator |
::= |
expression |
|
| |
<OPEN> |
actual_part |
::= |
actual_designator |
|
| |
name "(" actual_designator ")" |
aggregate |
::= |
"(" element_association ( "," element_association )* ")" |
alias_declaration |
::= |
<ALIAS> alias_designator ( ":" subtype_indication )? <IS> name ( signature )? ";" |
alias_designator |
::= |
<IDENTIFIER> |
|
| |
<CHARACTER> |
|
| |
<STRING> |
allocator |
::= |
<NEW> ( qualified_expression | subtype_indication ) |
architecture_body |
::= |
<ARCHITECTURE> <IDENTIFIER> <OF> name <IS> ( block_declarative_item )* <BEGIN> ( concurrent_statement )* <END> ( <ARCHITECTURE> )? ( <IDENTIFIER> )? ";" |
array_type_definition |
::= |
unconstrained_array_definition |
|
| |
constrained_array_definition |
assertion |
::= |
<ASSERT> expression ( <REPORT> expression )? ( <SEVERITY> expression )? |
assertion_statement |
::= |
( <IDENTIFIER> ":" )? assertion ";" |
association_element |
::= |
( formal_part "=>" )? actual_part |
association_list |
::= |
association_element ( "," association_element )* |
attribute_declaration |
::= |
<ATTRIBUTE> <IDENTIFIER> ":" name ";" |
attribute_name |
::= |
prefix ( signature )? "\'" ( <IDENTIFIER> | <RANGE> ) ( "(" expression ")" )? |
attribute_specification |
::= |
<ATTRIBUTE> <IDENTIFIER> <OF> entity_specification <IS> expression ";" |
base_unit_declaration |
::= |
<IDENTIFIER> ";" |
binding_indication |
::= |
( <USE> entity_aspect )? ( generic_map_aspect )? ( port_map_aspect )? |
block_configuration |
::= |
<FOR> block_specification ( use_clause )* ( configuration_item )* <END> <FOR> ";" |
block_declarative_item |
::= |
subprogram_body |
|
| |
subprogram_specification ";" |
|
| |
type_declaration |
|
| |
subtype_declaration |
|
| |
constant_declaration |
|
| |
signal_declaration |
|
| |
variable_declaration |
|
| |
file_declaration |
|
| |
alias_declaration |
|
| |
component_declaration |
|
| |
attribute_declaration |
|
| |
attribute_specification |
|
| |
configuration_specification |
|
| |
disconnection_specification |
|
| |
use_clause |
|
| |
group_template_declaration |
|
| |
group_declaration |
block_header |
::= |
( generic_clause ( generic_map_aspect ";" )? )? ( port_clause ( port_map_aspect ";" )? )? |
block_specification |
::= |
name |
|
| |
<IDENTIFIER> ( "(" index_specification ")" )? |
block_statement |
::= |
<BLOCK> ( "(" expression ")" )? ( <IS> )? block_header ( block_declarative_item )* <BEGIN> ( concurrent_statement )* <END> <BLOCK> ( <IDENTIFIER> )? ";" |
case_statement |
::= |
( <IDENTIFIER> ":" )? <CASE> expression <IS> case_statement_alternative ( case_statement_alternative )* <END> <CASE> ( <IDENTIFIER> )? ";" |
case_statement_alternative |
::= |
<WHEN> choices "=>" ( sequential_statement )* |
choice |
::= |
discrete_range |
|
| |
simple_expression |
|
| |
<IDENTIFIER> |
|
| |
<OTHERS> |
choices |
::= |
choice ( "|" choice )* |
component_configuration |
::= |
<FOR> component_specification ( binding_indication ";" )? ( block_configuration )? <END> <FOR> ";" |
component_declaration |
::= |
<COMPONENT> <IDENTIFIER> ( <IS> )? ( generic_clause )? ( port_clause )? <END> <COMPONENT> ( <IDENTIFIER> )? ";" |
component_instantiation_statement |
::= |
instantiated_unit ( generic_map_aspect )? ( port_map_aspect )? ";" |
component_specification |
::= |
instantiation_list ":" name |
composite_type_definition |
::= |
array_type_definition |
|
| |
record_type_definition |
concurrent_signal_assignment_statement |
::= |
conditional_signal_assignment |
|
| |
selected_signal_assignment |
concurrent_statement |
::= |
<IDENTIFIER> ":" ( block_statement | component_instantiation_statement | generate_statement ) |
|
| |
( <IDENTIFIER> ":" )? ( <POSTPONED> )? ( concurrent_signal_assignment_statement | procedure_call ";" | assertion ";" | process_statement ) |
condition_clause |
::= |
<UNTIL> expression |
conditional_signal_assignment |
::= |
target "<=" xoptions conditional_waveforms ";" |
conditional_waveforms |
::= |
waveform ( <WHEN> expression <ELSE> waveform )* ( <WHEN> expression )? |
configuration_declaration |
::= |
<CONFIGURATION> <IDENTIFIER> <OF> name <IS> ( configuration_declarative_item )* block_configuration <END> ( <CONFIGURATION> )? ( <IDENTIFIER> )? ";" |
configuration_declarative_item |
::= |
use_clause |
|
| |
attribute_specification |
|
| |
group_declaration |
configuration_item |
::= |
block_configuration |
|
| |
component_configuration |
configuration_specification |
::= |
<FOR> component_specification binding_indication ";" |
constant_declaration |
::= |
<CONSTANT> identifier_list ":" subtype_indication ( ":=" expression )? ";" |
constrained_array_definition |
::= |
<ARRAY> index_constraint <OF> subtype_indication |
constraint |
::= |
range_constraint |
|
| |
index_constraint |
context_item |
::= |
library_clause |
|
| |
use_clause |
declaration |
::= |
type_declaration |
|
| |
subtype_declaration |
|
| |
object_declaration |
|
| |
interface_declaration |
|
| |
alias_declaration |
|
| |
attribute_declaration |
|
| |
component_declaration |
|
| |
group_template_declaration |
|
| |
group_declaration |
|
| |
entity_declaration |
|
| |
configuration_declaration |
|
| |
subprogram_specification ";" |
|
| |
package_declaration |
delay_mechanism |
::= |
<TRANSPORT> |
|
| |
( <REJECT> expression )? <INERTIAL> |
design_file |
::= |
design_unit ( design_unit )* |
design_unit |
::= |
( context_item )* library_unit |
designator |
::= |
<IDENTIFIER> |
|
| |
<STRING> |
disconnection_specification |
::= |
<DISCONNECT> guarded_signal_specification <AFTER> expression ";" |
discrete_range |
::= |
range |
|
| |
subtype_indication |
element_association |
::= |
( choices "=>" )? expression |
element_declaration |
::= |
identifier_list ":" subtype_indication ";" |
entity_aspect |
::= |
<ENTITY> name ( "(" <IDENTIFIER> ")" )? |
|
| |
<CONFIGURATION> name |
|
| |
<OPEN> |
entity_class |
::= |
<ENTITY> |
|
| |
<ARCHITECTURE> |
|
| |
<CONFIGURATION> |
|
| |
<PROCEDURE> |
|
| |
<FUNCTION> |
|
| |
<PACKAGE> |
|
| |
<TYPE> |
|
| |
<SUBTYPE> |
|
| |
<CONSTANT> |
|
| |
<SIGNAL> |
|
| |
<VARIABLE> |
|
| |
<COMPONENT> |
|
| |
<LABEL> |
|
| |
<LITERAL> |
|
| |
<UNITS> |
|
| |
<GROUP> |
|
| |
<FILE> |
entity_class_entry_list |
::= |
entity_class ( "<>" )? ( "," entity_class ( "<>" )? )* |
entity_declaration_head |
::= |
<ENTITY> <IDENTIFIER> <IS> |
entity_declaration |
::= |
entity_declaration_head entity_header ( entity_declarative_item )* ( <BEGIN> ( entity_statement )* )? <END> ( <ENTITY> )? ( <IDENTIFIER> )? ";" |
entity_declarative_item |
::= |
subprogram_body |
|
| |
subprogram_specification ";" |
|
| |
type_declaration |
|
| |
subtype_declaration |
|
| |
constant_declaration |
|
| |
signal_declaration |
|
| |
variable_declaration |
|
| |
file_declaration |
|
| |
alias_declaration |
|
| |
attribute_declaration |
|
| |
attribute_specification |
|
| |
disconnection_specification |
|
| |
use_clause |
|
| |
group_template_declaration |
|
| |
group_declaration |
entity_designator |
::= |
entity_tag ( signature )? |
entity_header |
::= |
( generic_clause )? ( port_clause )? |
entity_name_list |
::= |
entity_designator ( "," entity_designator )* |
|
| |
<OTHERS> |
|
| |
<ALL> |
entity_specification |
::= |
entity_name_list ":" entity_class |
entity_statement |
::= |
( <IDENTIFIER> ":" )? ( <POSTPONED> )? ( procedure_call ";" | assertion ";" | process_statement ) |
entity_tag |
::= |
<IDENTIFIER> |
|
| |
<CHARACTER> |
|
| |
<STRING> |
enumeration |
::= |
<CHARACTER> |
|
| |
<IDENTIFIER> |
enumeration_type_definition |
::= |
"(" enumeration ( "," enumeration )* ")" |
exit_statement |
::= |
( <IDENTIFIER> ":" )? <EXIT> ( <IDENTIFIER> )? ( <WHEN> expression )? ";" |
expression |
::= |
relation ( ( <NAND> | <NOR> ) relation | ( ( <XOR> | <AND> | <XNOR> | <OR> ) relation )* ) |
factor |
::= |
primary ( "**" primary )? |
|
| |
<ABS> primary |
|
| |
<NOT> primary |
file_declaration |
::= |
<FILE> identifier_list ":" subtype_indication ( file_open_information )? ";" |
file_open_information |
::= |
( <OPEN> expression )? <IS> expression |
file_type_definition |
::= |
<FILE> <OF> name |
formal_part |
::= |
name ( "(" name ")" )? |
function_call |
::= |
prefix ( "(" association_list ")" )? |
generate_statement |
::= |
generation_scheme <GENERATE> ( ( block_declarative_item )* <BEGIN> )? ( concurrent_statement )* <END> <GENERATE> ( <IDENTIFIER> )? ";" |
generation_scheme |
::= |
<FOR> parameter_specification |
|
| |
<IF> expression |
generic_clause |
::= |
<GENERIC> "(" interface_list ")" ";" |
generic_map_aspect |
::= |
<GENERIC> <MAP> "(" association_list ")" |
group_constituent |
::= |
name |
|
| |
<CHARACTER> |
group_constituent_list |
::= |
group_constituent ( "," group_constituent )* |
group_template_declaration |
::= |
<GROUP> <IDENTIFIER> <IS> "(" entity_class_entry_list ")" ";" |
group_declaration |
::= |
<GROUP> <IDENTIFIER> ":" name "(" group_constituent_list ")" ";" |
guarded_signal_specification |
::= |
signal_list ":" name |
identifier_list |
::= |
<IDENTIFIER> ( "," <IDENTIFIER> )* |
if_statement |
::= |
( <IDENTIFIER> ":" )? <IF> expression <THEN> ( sequential_statement )* ( <ELSIF> expression <THEN> ( sequential_statement )* )* ( <ELSE> ( sequential_statement )* )? <END> <IF> ( <IDENTIFIER> )? ";" |
index_constraint |
::= |
"(" discrete_range ( "," discrete_range )* ")" |
index_specification |
::= |
discrete_range |
|
| |
expression |
index_subtype_definition |
::= |
name <RANGE> "<>" |
indexed_name |
::= |
prefix "(" expression ( "," expression )* ")" |
instantiated_unit |
::= |
( <COMPONENT> )? name |
|
| |
<ENTITY> name ( "(" <IDENTIFIER> ")" )? |
|
| |
<CONFIGURATION> name |
instantiation_list |
::= |
<IDENTIFIER> ( "," <IDENTIFIER> )* |
|
| |
<OTHERS> |
|
| |
<ALL> |
interface_declaration |
::= |
( <SIGNAL> | <CONSTANT> | <VARIABLE> | <FILE> )? identifier_list ":" ( mode )? subtype_indication ( <BUS> )? ( ":=" expression )? |
interface_list |
::= |
interface_declaration ( ";" interface_declaration )* |
iteration_scheme |
::= |
<WHILE> expression |
|
| |
<FOR> parameter_specification |
library_clause |
::= |
<LIBRARY> <IDENTIFIER> ( "," <IDENTIFIER> )* ";" |
library_unit |
::= |
primary_unit |
|
| |
secondary_unit |
literal |
::= |
numeric_literal |
|
| |
enumeration |
|
| |
<STRING> |
|
| |
<BIT_STRING> |
|
| |
<NULL> |
loop_statement |
::= |
( <IDENTIFIER> ":" )? ( iteration_scheme )? <LOOP> ( sequential_statement )* <END> <LOOP> ( <IDENTIFIER> )? ";" |
mode |
::= |
<IN> |
|
| |
<OUT> |
|
| |
<INOUT> |
|
| |
<BUFFER> |
|
| |
<LINKAGE> |
name |
::= |
indexed_name |
|
| |
selected_name |
|
| |
slice_name |
|
| |
attribute_name |
|
| |
function_call |
|
| |
<IDENTIFIER> |
|
| |
<STRING> |
next_statement |
::= |
( <IDENTIFIER> ":" )? <NEXT> ( <IDENTIFIER> )? ( <WHEN> expression )? ";" |
null_statement |
::= |
( <IDENTIFIER> ":" )? <NULL> ";" |
numeric_literal |
::= |
physical_literal |
|
| |
<ABSTRACT> |
object_declaration |
::= |
constant_declaration |
|
| |
signal_declaration |
|
| |
variable_declaration |
|
| |
file_declaration |
xoptions |
::= |
( <GUARDED> )? ( delay_mechanism )? |
package_body |
::= |
<PACKAGE> <BODY> <IDENTIFIER> <IS> ( package_body_declarative_item )* <END> ( <PACKAGE> <BODY> )? ( <IDENTIFIER> )? ";" |
package_body_declarative_item |
::= |
subprogram_body |
|
| |
subprogram_specification ";" |
|
| |
type_declaration |
|
| |
subtype_declaration |
|
| |
constant_declaration |
|
| |
variable_declaration |
|
| |
file_declaration |
|
| |
alias_declaration |
|
| |
use_clause |
|
| |
group_template_declaration |
|
| |
group_declaration |
package_declaration |
::= |
<PACKAGE> <IDENTIFIER> <IS> ( package_declarative_item )* <END> ( <PACKAGE> )? ( <IDENTIFIER> )? ";" |
package_declarative_item |
::= |
subprogram_specification ";" |
|
| |
type_declaration |
|
| |
subtype_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 |
parameter_specification |
::= |
<IDENTIFIER> <IN> discrete_range |
physical_literal |
::= |
( <ABSTRACT> )? name |
physical_type_definition |
::= |
range_constraint <UNITS> base_unit_declaration ( secondary_unit_declaration )* <END> <UNITS> ( <IDENTIFIER> )? |
port_clause |
::= |
<PORT> "(" interface_list ")" ";" |
port_map_aspect |
::= |
<PORT> <MAP> "(" association_list ")" |
prefix |
::= |
<IDENTIFIER> |
|
| |
<STRING> |
primary |
::= |
name |
|
| |
literal |
|
| |
aggregate |
|
| |
function_call |
|
| |
qualified_expression |
|
| |
type_conversion |
|
| |
allocator |
primary_unit |
::= |
entity_declaration |
|
| |
configuration_declaration |
|
| |
package_declaration |
procedure_call |
::= |
name ( "(" association_list ")" )? |
procedure_call_statement |
::= |
( <IDENTIFIER> ":" )? procedure_call ";" |
process_declarative_item |
::= |
subprogram_body |
|
| |
subprogram_specification ";" |
|
| |
type_declaration |
|
| |
subtype_declaration |
|
| |
constant_declaration |
|
| |
variable_declaration |
|
| |
file_declaration |
|
| |
alias_declaration |
|
| |
attribute_declaration |
|
| |
attribute_specification |
|
| |
use_clause |
|
| |
group_template_declaration |
|
| |
group_declaration |
process_statement |
::= |
<PROCESS> ( "(" name ( "," name )* ")" )? ( <IS> )? ( process_declarative_item )* <BEGIN> ( sequential_statement )* <END> ( <POSTPONED> )? <PROCESS> ( <IDENTIFIER> )? ";" |
qualified_expression |
::= |
name "\'" ( "(" expression ")" | aggregate ) |
range |
::= |
simple_expression ( <TO> | <DOWNTO> ) simple_expression |
|
| |
attribute_name |
range_constraint |
::= |
<RANGE> range |
record_type_definition |
::= |
<RECORD> element_declaration ( element_declaration )* <END> <RECORD> ( <IDENTIFIER> )? |
relation |
::= |
shift_expression ( ( "=" | "/=" | "<" | "<=" | ">" | ">=" ) shift_expression )? |
report_statement |
::= |
( <IDENTIFIER> ":" )? <REPORT> expression ( <SEVERITY> expression )? ";" |
return_statement |
::= |
( <IDENTIFIER> ":" )? <RETURN> ( expression )? ";" |
scalar_type_definition |
::= |
enumeration_type_definition |
|
| |
physical_type_definition |
|
| |
range_constraint |
secondary_unit |
::= |
architecture_body |
|
| |
package_body |
secondary_unit_declaration |
::= |
<IDENTIFIER> "=" physical_literal ";" |
selected_name |
::= |
prefix suffix |
selected_signal_assignment |
::= |
<WITH> expression <SELECT> target "<=" xoptions selected_waveforms ";" |
selected_waveforms |
::= |
waveform <WHEN> choices ( "," waveform <WHEN> choices )* |
sensitivity_clause |
::= |
<ON> name ( "," name )* |
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 |
shift_expression |
::= |
simple_expression ( ( <SLL> | <SRL> | <SLA> | <SRA> | <ROL> | <ROR> ) simple_expression )? |
signal_assignment_statement |
::= |
( <IDENTIFIER> ":" )? target "<=" ( delay_mechanism )? waveform ";" |
signal_declaration |
::= |
<SIGNAL> identifier_list ":" subtype_indication ( signal_kind )? ( ":=" expression )? ";" |
signal_kind |
::= |
<REGISTER> |
|
| |
<BUS> |
signal_list |
::= |
name ( "," name )* |
|
| |
<OTHERS> |
|
| |
<ALL> |
signature |
::= |
"[" ( name ( "," name )* )? ( <RETURN> name )? "]" |
simple_expression |
::= |
( "+" | "-" )? term ( ( "+" | "-" | "&" ) term )* |
slice_name |
::= |
prefix "(" discrete_range ")" |
subprogram_body |
::= |
subprogram_specification <IS> ( subprogram_declarative_item )* <BEGIN> ( sequential_statement )* <END> ( subprogram_kind )? ( designator )? ";" |
subprogram_declarative_item |
::= |
subprogram_body |
|
| |
subprogram_specification ";" |
|
| |
type_declaration |
|
| |
subtype_declaration |
|
| |
constant_declaration |
|
| |
variable_declaration |
|
| |
file_declaration |
|
| |
alias_declaration |
|
| |
attribute_declaration |
|
| |
attribute_specification |
|
| |
use_clause |
|
| |
group_template_declaration |
|
| |
group_declaration |
subprogram_kind |
::= |
<PROCEDURE> |
|
| |
<FUNCTION> |
subprogram_specification |
::= |
<PROCEDURE> designator ( "(" interface_list ")" )? |
|
| |
( <PURE> | <IMPURE> )? <FUNCTION> designator ( "(" interface_list ")" )? <RETURN> name |
subtype_declaration |
::= |
<SUBTYPE> <IDENTIFIER> <IS> subtype_indication ";" |
subtype_indication |
::= |
name ( name )? ( constraint )? |
suffix |
::= |
"." ( name | <IDENTIFIER> | <CHARACTER> | <STRING> | <ALL> ) |
target |
::= |
aggregate |
|
| |
name |
term |
::= |
factor ( ( "*" | "/" | <MOD> | <REM> ) factor )* |
timeout_clause |
::= |
<FOR> expression |
type_conversion |
::= |
name "(" expression ")" |
type_declaration |
::= |
<TYPE> <IDENTIFIER> ( <IS> type_definition )? ";" |
type_definition |
::= |
scalar_type_definition |
|
| |
composite_type_definition |
|
| |
access_type_definition |
|
| |
file_type_definition |
unconstrained_array_definition |
::= |
<ARRAY> "(" index_subtype_definition ( "," index_subtype_definition )* ")" <OF> subtype_indication |
use_clause |
::= |
<USE> selected_name ( "," selected_name )* ";" |
variable_assignment_statement |
::= |
( <IDENTIFIER> ":" )? target ":=" expression ";" |
variable_declaration |
::= |
( <SHARED> )? <VARIABLE> identifier_list ":" subtype_indication ( ":=" expression )? ";" |
wait_statement |
::= |
( <IDENTIFIER> ":" )? <WAIT> ( sensitivity_clause )? ( condition_clause )? ( timeout_clause )? ";" |
waveform |
::= |
waveform_element ( "," waveform_element )* |
|
| |
<UNAFFECTED> |
waveform_element |
::= |
expression ( <AFTER> expression )? |