Sequential statements generally appear (directly or indirectly) within a process, procedure or function. Some language-mandated restrictions further constrain the location of sequential statements. Sequential statements are generally referenced from a sequential statement list, the next method of a sequential statement or as the target of a control-flow sequential statement.
15.1 FIR_SequentialStatement
15.1.1 Derived Class Description
The predefined FIR_SequentialStatement classes specify individual sequential statements within a process or subprogram.15.1.2 Properties
struct FIR_SequentialStatement {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_SequentialStatementList linkage */
FIR_Ref label; /* reference to an FIR_Label or FIR_Identifier */
};
struct FIR_WaitStatement {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_SequentialStatementList linkage */
FIR_Ref label; /* reference to an FIR_Label or FIR_Identifier */
FIR_Ref condition_clause; /* reference to FIR_Expression */
FIR_Ref timeout_clause; /* reference to FIR_Expression */
FIR_DesignatorList sensitivity_list;
};
struct FIR_AssertionStatement {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_SequentialStatementList linkage */
FIR_Ref label; /* reference to an FIR_Label or FIR_Identifier */
FIR_Ref assertion_condition;
FIR_Ref report_expression;
FIR_Ref severity_expression;
};
struct FIR_ReportStatement {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_SequentialStatementList linkage */
FIR_Ref label; /* reference to an FIR_Label or FIR_Identifier */
FIR_Ref report_expression;
FIR_Ref severity_expression;
};
struct FIR_SignalAssigmentStatement {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_SequentialStatementList linkage */
FIR_Ref label; /* reference to an FIR_Label or FIR_Identifier */
FIR_Ref target;
IR_DelayMechanism delay_mechanism; /* one of the delay_mechanism */
FIR_Ref reject_time_expression;
FIR_Ref waveform /* reference to an FIR_WaveformList */
};
struct FIR_VariableAssignmentStatement {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_SequentialStatementList linkage */
FIR_Ref label; /* reference to an FIR_Label or FIR_Identifier */
FIR_Ref target; /* reference to */
FIR_Ref expression;
};
struct FIR_ProcedureCallStatement {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_SequentialStatementList linkage */
FIR_Ref label; /* reference to an FIR_Label or FIR_Identifier */
FIR_Ref procedure_name;
FIR_AssociationList actual_parameter_part;
};
struct FIR_IfStatement {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_SequentialStatementList linkage */
FIR_Ref label; /* reference to an FIR_Label or FIR_Identifier */
FIR_Ref condition;
FIR_Ref elsif; /* reference to FIR_Elsif */
FIR_SequentialStatementList then_sequence;
FIR_SequentialStatementList else_sequence;
};
struct FIR_CaseStatement {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_SequentialStatementList linkage */
FIR_Ref label; /* reference to an FIR_Label or FIR_Identifier */
FIR_Ref expression;
FIR_CaseStatementAlternativeList case_statement_alternatives;
};
struct FIR_ForLoopStatement {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_SequentialStatementList linkage */
FIR_Ref label; /* reference to an FIR_Label or FIR_Identifier */
FIR_Ref iterator; /* reference to a FIR_ConstantDeclaration */
FIR_SequentialStatementList sequence_of_statements;
};
struct FIR_WhileLoopStatement {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_SequentialStatementList linkage */
FIR_Ref label; /* reference to an FIR_Label or FIR_Identifier */
FIR_Ref while_condition;
FIR_SequentialStatementList sequence_of_statements;
};
struct FIR_NextStatement {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_SequentialStatementList linkage */
FIR_Ref label; /* reference to an FIR_Label or FIR_Identifier */
FIR_Ref enclosing_loop; /* reference to FIR_SequentialStatement */
FIR_Ref condition;
};
struct FIR_ExitStatement {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_SequentialStatementList linkage */
FIR_Ref label; /* reference to an FIR_Label or FIR_Identifier */
FIR_Ref enclosing_loop; /* FIR_SequentialStatement */
FIR_Ref condition;
};
struct FIR_ReturnStatement {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_SequentialStatementList linkage */
FIR_Ref label; /* reference to an FIR_Label or FIR_Identifier */
FIR_Ref enclosing_subprogram; /* reference to FIR_SubprogramDeclaration */
FIR_Ref return_expression;
};
struct FIR_NullStatement {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_SequentialStatementList linkage */
FIR_Ref label; /* reference to an FIR_Label or FIR_Identifier */
};