12.1 FIR_Declaration
12.1.1 Derived Class Description
The predefined FIR_Declaration class is the parent for all predefined declarations, specifications, library clauses or use clauses.12.1.2 Properties
struct FIR_Declaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_DeclarationList linkage */
FIR_Ref identifier;
};
The identifier reference is to an identifier which is the declarator (declaration), an attribute designator (attribute specification), a component identifier (configuration specification), guarded signal name (disconnect specification), logical name (library clause) or selected name (use clause).
struct FIR_SubprogramDeclaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_DeclarationList linkage */
FIR_Ref identifier;
FIR_InterfaceList interface_declarations;
FIR_DeclarationList subprogram_declarations;
FIR_SequentialStatementList subprogram_body;
FIR_AttributeSpecificationList attributes;
};
struct FIR_ProcedureDeclaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_DeclarationList linkage */
FIR_Ref identifier;
FIR_InterfaceList interface_declarations;
FIR_DeclarationList subprogram_declarations;
FIR_SequentialStatementList subprogram_body;
FIR_AttributeSpecificationList attributes;
};
struct FIR_FunctionDeclaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_DeclarationList linkage */
FIR_Ref identifier;
FIR_InterfaceList interface_declarations;
FIR_DeclarationList subprogram_declarations;
FIR_SequentialStatementList subprogram_body;
FIR_AttributeSpecificationList attributes;
FIR_Ref return_type; /* reference to FIR_TypeDefinition */
IR_Pure pure;
};
struct FIR_EnumerationLiteral {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_EnumerationLiteralList linkage */
FIR_Ref identifier;
FIR_Ref position;
FIR_Ref subtype_definition; /* FIR_EnumerationSubtypeDefinition */
FIR_AttributeSpecificationList attributes;
};
struct FIR_ElementDeclaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_ElementDeclarationList linkage */
FIR_Ref identifier;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
};
struct FIR_TypeDeclaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_DeclarationList linkage */
FIR_Ref identifier;
FIR_Ref definition; /* reference to FIR_TypeDefinition */
FIR_AttributeSpecificationList attributes;
};
struct FIR_SubtypeDeclaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_DeclarationList linkage */
FIR_Ref identifier;
FIR_Ref definition; /* reference to FIR_TypeDefinition */
FIR_AttributeSpecificationList attributes;
};
struct FIR_ObjectDeclaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_DeclarationList linkage */
FIR_Ref identifier;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
};
struct FIR_ConstantDeclaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_DeclarationList linkage */
FIR_Ref identifier;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref value;
FIR_AttributeSpecificationList attributes;
};
struct FIR_VariableDeclaration {
IR_Kind kind;
FIR_Souce source_locator;
FIR_Ref next; /* FIR_DeclarationList linkage */
FIR_Ref identifier;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref value;
FIR_AttributeSpecificationList attributes;
};
struct FIR_SharedVariableDeclaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_DeclarationList linkage */
FIR_Ref identifier;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref value;
FIR_AttributeSpecificationList attributes;
};
struct FIR_SignalDeclaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_DeclarationList linkage */
FIR_Ref identifier;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
IR_SignalKind signal_kind;
FIR_Ref value;
FIR_AttributeSpecificationList attributes;
};
struct FIR_TerminalDeclaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_DeclarationList linkage */
FIR_Ref identifier;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref nature;
FIR_AttributeSpecificationList attributes;
};
struct FIR_QuantityDeclaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_DeclarationList linkage */
FIR_Ref identifier;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
};
struct FIR_FreeQuantityDeclaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_DeclarationList linkage */
FIR_Ref identifier;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref value;
FIR_AttributeSpecificationList attributes;
};
struct FIR_BranchQuantityDeclaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_DeclarationList linkage */
FIR_Ref identifier;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref across_aspect;
FIR_Ref through_aspect;
FIR_Ref plus_terminal;
FIR_Ref minus_terminal;
FIR_AttributeSpecificationList attributes;
};
struct FIR_ObjectDeclaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_InterfaceList linkage */
FIR_Ref identifier;
IR_Mode mode; /* IN,OUT,INOUT,... */
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref value;
};
struct FIR_ConstantInterfaceDeclaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* GenericList or InterfaceList linkage */
FIR_Ref identifier;
IR_Mode mode;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref value;
FIR_AttributeSpecificationList attributes;
};
struct FIR_VariableInterfaceDeclaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_InterfaceList linkage */
FIR_Ref identifier;
IR_Mode mode;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref value;
FIR_AttributeSpecificationList attributes;
};
struct FIR_SignalInterfaceDeclaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* PortList or InterfaceList linkage */
FIR_Ref identifier;
IR_Mode mode;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
IR_SignalKind signal_kind;
FIR_Ref value;
FIR_AttributeSpecificationList attributes;
};
Signal kind is one of the enumeration:
enum IR_SignalKind {IR_NO_SIGNAL_KIND, IR_REGISTER_KIND, IR_BUS_KIND};
struct FIR_FileInterfaceDeclaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_InterfaceList linkage */
FIR_Ref identifier;
IR_Mode mode;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref value;
FIR_AttributeSpecificationList attributes;
};
struct FIR_TerminalInterfaceDeclaration {
IR_Kind kind;
FIR_Souce source_locator;
FIR_Ref next; /* FIR_InterfaceList linkage */
FIR_Ref identifier;
IR_Mode mode;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref value;
FIR_AttributeSpecificationList attributes;
};
struct FIR_QuantityInterfaceDeclaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_InterfaceList linkage */
FIR_Ref identifier;
IR_Mode mode;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref value;
FIR_AttributeSpecificationList attributes;
};
struct FIR_AliasDeclaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_DeclarationList linkage */
FIR_Ref identifier;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref target; /* reference to FIR_Name */
};
struct FIR_AttributeDeclaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_AttributeSpecificationList linkage */
FIR_Ref identifier;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
};
struct FIR_ComponentDeclaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_DeclarationList linkage */
FIR_Ref identifier;
FIR_InterfaceList local_generic_clause;
FIR_InterfaceList local_port_clause;
FIR_AttributeSpecificationList attributes;
};
struct FIR_GroupDeclaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_DeclarationList linkage */
FIR_Ref identifier;
FIR_Ref template; /* reference to FIR_Name */
FIR_DesignatorList group_constituent_list;
FIR_AttributeSpecificationList attributes;
};
struct FIR_GroupTemplateDeclaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_DeclarationList linkage */
FIR_Ref identifier;
FIR_EntityClassEntryList entity_class_entry_list;
};
struct FIR_LibraryDeclaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_DeclarationList linkage */
FIR_Ref identifier;
FIR_LibraryUnitList primary_units;
};
struct FIR_LibraryUnitDeclaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_LibraryUnitList linkage */
FIR_Ref identifier;
FIR_DeclarationList context_items;
FIR_AttributeSpecificationList attributes;
};
struct FIR_EntityDeclaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_LibraryUnitList linkage */
FIR_Ref identifier;
FIR_GenericList generic_clause;
FIR_PortList port_clause;
FIR_DeclarationList entity_declarative_part;
FIR_ConcurrentStatementList entity_statement_part;
FIR_DesignUnitList architectures;/*==== what designunitlist???? RNN*/
};
struct FIR_ArchitectureDeclaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_LibraryUnitList linkage */
FIR_Ref identifier;
FIR_Ref entity; /* reference to FIR_EntityDeclaration */
FIR_DeclarationList declaration_part;
FIR_ConcurrentStatementList statement_part;
FIR_AttributeSpecificationList attributes;
};
struct FIR_PackageDeclaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_LibraryUnitList linkage */
FIR_Ref identifier;
FIR_Ref package_body; /* reference to FIR_PackageBodyDeclaration */
FIR_DeclarationList declarative_part;
};
struct FIR_PackageBocyDeclaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_LibraryUnitListFIR_LibraryUnitList linkage */
FIR_Ref identifier;
FIR_DeclarationList package_declarative_part;
};
struct FIR_ConfigurationDeclaration {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_LibraryUnitList linkage */
FIR_Ref identifier;
FIR_Ref configuration; /* reference to FIR_BlockConfiguration */
FIR_Ref entity; /* reference to FIR_EntityDeclaration */
FIR_DeclarationList configuration_declarative_part;
};
struct FIR_PhysicalUnit {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_UnitList linkage */
FIR_Ref identifier;
FIR_Ref multiplier;
FIR_AttributeSpecificationList attributes;
};
struct FIR_AttributeSpecification {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_AttributeSpecificationList linkage */
FIR_Ref identifier;
FIR_Ref value;
FIR_DesignatorList entity_specifications;
};
struct FIR_ConfigurationSpecification {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_DeclarationList linkage */
FIR_Ref identifier;
FIR_Ref entity_aspect; /* reference to FIR_LibraryUnit */
FIR_DesignatorList instantiation_list;
FIR_AssociationList generic_map_aspect;
FIR_AssociationList port_map_aspect;
};
struct FIR_DisconnectSpecification {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_DeclarationList linkage */
FIR_Ref identifier;
FIR_Ref type_mark; /* reference to FIR_TypeDefinition */
FIR_Ref time_expression;
FIR_DeclarationList guarded_signal_list;
};
struct FIR_Label {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_DeclarationList linkage */
FIR_Ref identifier;
FIR_Ref statement; /* reference to FIR_SequentialStatement */
FIR_AttributeSpecificationList attributes;
};
struct FIR_LibraryClause {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_DeclarationList linkage */
FIR_Ref identifier;
};
struct FIR_UseClause {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref next; /* FIR_DeclarationList linkage */
FIR_Ref identifier;
};