Professional Documents
Culture Documents
Concurrent Statements
block_statement
label: block [(guard_expression)] [generic] [ports] [declarations] begin concurrent_statements end block [label];
component_instantiation_statement
label : name [ generic map (map) ] [ port map (signals) ];
concurrent_assertion_statement
assert condition [ report string_expression ] [ severity {NOTE | WARNING | ERROR | FAILURE} ];
concurrent_procedure_call
[ label : ] procedure_name [ (parameters) ];
concurrent_signal_assignment_statement
[ label : ] [ {conditional_assignment | assignment | selected_assignment} ];
generate_statement
label : [{ for specification | if condition }] generate concurrent_statements end generate [label];
process_statement
[label : ] process [ (sensitivity_list) ] [ variable_declaration ] [ type_declaration ] [subprogram_declaration ] [ declarations ] begin sequential_statements -- Cannot contain a wait statement if sensitivity_list is used end process [ label ];
Sequential Statements
assertion_statement
assert condition -- When condition is false [strng_expression] is printed [ report string_expression ] [severity { NOTE | WARNING | ERROR | FAILURE } ];
case_statement
case expression is -- Avoid the use of parenthesis, if possible when choices_1 => sequential_statements . . when choices_n => sequential_statements end case;
exit_statement
exit [ label ] [ when condition ];
if_statement
if condition then sequential_statements { elsif condition then sequential_statements } [ else sequential_statements ] end if;
loop_statement
[ label : ] [ while condition | for loop_specification ] loop sequential_statements end loop [ label ] ;
next_statement
null_statement
null;
procedure_call_statement
procedure_name [ (parameters) ] ;
return_statement
return expression; --For use in a Function return; --For use in a Procedure
signal_assignment_statement
target <= expression [ after time_expression ] . . { , expression [ after time_expression ];
variable_assignment_statement
target := expression ;
wait_statement
wait --A Function may not contain a wait_statement [ on signal_name {, signal_name} ] [ until conditional_expression ] [ for time_expression ] ;
Specifications
attribute_specification
attribute attribute_name of entity_name is expression ;
configuration_specifications
for component_name use [ generic_map_part ] [port_map_part] ;
use_clause
USE selected_names ;
Declarations
alias_declaration
alias name1 : type [ (indexes) ] is name2 [ (indexes) ] ;
attribute_declaration
attribute name : type ;
component_declaration
component identifier : [ generic (generic_list) ; ] [ port (port_list) ; ] end component ;
constant_declaration
constant name : type := expression ; constant name : array_type [ (indexes) ] := expression ;
file_declaration
file name : type is [ mode ] logical_name ;
signal_declaration
signal names : type [ constraint ] [ := expression ] ;
port_declaration
port ( names : direction type [ := expression ] [ ; more_signals ] );
subprogram_declaration
{ procedure name [ (parameters) ] | function name [ (parameters) ] return type; }
sub_program_body
is declarations begin
subtype_declaration
subtype name is [ resolution_function] type [constraint] ;
type_declaration
type name is definition;
variable_declaration
variable names : type [ constraint ] [ := expression ] ;
Library Units
architecture_body
architecture name of entity_name is [types] [constants] [signals] [subprograms] [other declarations] begin concurrent_statements end [name];
configuration_declaration
configuration name of entity_name is declarative_part block_configuration end [name];
entity_declaration
entity name is [generics] [ports] [declarations] [begin statements] --typically, an entity does not have statements. If it does, the statemnts cannot operate on signals end name;
package_body
package body name is [subprogram] [type] [constant [signal] [declarations] end [name];
package_declaration
package name is [subprogram] [type] [constant] [signal] [file] [alias] [USE clause] [declarations] end [name];