Interface Declaration

The diagrams below draw one box per node kind, with one port per field. The edge colours say how a link is held; they are listed in full on the Fields page.

digraph { rankdir="LR" nodesep=0.1 node [shape=point width=0.06 color="#888a85"] edge [fontname="monospace" fontsize=10 minlen=3] l0a -> l0b [label="owned" color="#000000"] l1a -> l1b [label="ref" color="#3465a4" style=dashed] l2a -> l2b [label="maybe ref" color="#3465a4" style=dotted] l3a -> l3b [label="of ref" color="#3465a4" style=dashed] l4a -> l4b [label="of maybe ref" color="#3465a4" style=dotted] l5a -> l5b [label="forward ref" color="#f57900" style=dashed] l6a -> l6b [label="maybe forward ref" color="#f57900" style=dotted] l7a -> l7b [label="chain" color="#4e9a06"] l8a -> l8b [label="chain next" color="#4e9a06" style=bold] }

Iir_Kind_Interface_Terminal_Declaration

Format: Short

Accessor

Field

Type

Access

Description

Parent

Field0

Iir

ref

Get/Set the statement in which TARGET appears. This is used to check if next/exit is in a loop.

Chain

Field2

Iir

chain next

Identifier

Field3

Name_Id

owned

Get/Set the identifier of a declaration. Can also be used instead of get/set_label.

Subnature_Indication

Field5

Iir

owned

Nature

Field1

Iir

ref

Has_Identifier_List

Flag3

Boolean

owned

Layout flag for object declaration. If True, the identifier of this declaration is followed by an identifier (and separated by a comma). This flag is set on all but the last declarations. Eg: on ‘signal A, B, C : Bit’, the flag is set on A and B (but not C).

Visible_Flag

Flag4

Boolean

owned

Get/Set the visible flag of a declaration. The visible flag is true to make invalid the use of the identifier during its declaration. It is set to false when the identifier is added to the name table, and set to true when the declaration is finished.

Use_Flag

Flag6

Boolean

owned

For a declaration: true if the declaration is used somewhere.

Has_Mode

Flag10

Boolean

owned

Layout flag for object declaration. If True, the mode is present.

Has_Class

Flag11

Boolean

owned

Layout flag for object declaration. If True, the object class is present.

Has_Semicolon

Flag16

Boolean

owned

Layout flag for interface declaration. If True, ‘;’ is present after the interface. In case of multiple names separated with colon, it cannot be set with Has_Identifier_List.

Is_Ref

Flag12

Boolean

owned

Set to True if Maybe_Ref fields are references. This cannot be shared with Has_Identifier_List as: Is_Ref is set to True on all items but the first, while Has_Identifier_List is set to True on all items but the last. Furthermore Is_Ref appears in nodes where Has_Identifier_List is not present.

Name_Staticness

State2

Iir_Staticness

owned

Staticness of a name, according to rules of LRM 6.1

digraph { rankdir="LR" node [shape=record fontname="monospace" fontsize=10] edge [fontname="monospace" fontsize=9] "Interface_Terminal_Declaration" [style=filled fillcolor="#eeeeec" label="{Interface_Terminal_Declaration|{<Parent> Parent|<Chain> Chain|<Identifier> Identifier|<Subnature_Indication> Subnature_Indication|<Nature> Nature|<Has_Identifier_List> Has_Identifier_List|<Visible_Flag> Visible_Flag|<Use_Flag> Use_Flag|<Has_Mode> Has_Mode|<Has_Class> Has_Class|<Has_Semicolon> Has_Semicolon|<Is_Ref> Is_Ref|<Name_Staticness> Name_Staticness}}"] "Interface_Terminal_Declaration__Parent" [shape=box label="Iir"] "Interface_Terminal_Declaration":Parent -> "Interface_Terminal_Declaration__Parent" [color="#3465a4" style=dashed] "Interface_Terminal_Declaration__Chain" [shape=box label="Iir"] "Interface_Terminal_Declaration":Chain -> "Interface_Terminal_Declaration__Chain" [color="#4e9a06" style=bold] "Interface_Terminal_Declaration__Subnature_Indication" [shape=box label="Iir"] "Interface_Terminal_Declaration":Subnature_Indication -> "Interface_Terminal_Declaration__Subnature_Indication" [color="#000000"] "Interface_Terminal_Declaration__Nature" [shape=box label="Iir"] "Interface_Terminal_Declaration":Nature -> "Interface_Terminal_Declaration__Nature" [color="#3465a4" style=dashed] }

Iir_Kind_Interface_Type_Declaration

Format: Short

Accessor

Field

Type

Access

Description

Parent

Field0

Iir

ref

Get/Set the statement in which TARGET appears. This is used to check if next/exit is in a loop.

Interface_Type_Definition

Field5

Iir

owned

Owner of the interface type definition.

Type

Field1

Iir

ref

Chain

Field2

Iir

chain next

Identifier

Field3

Name_Id

owned

Get/Set the identifier of a declaration. Can also be used instead of get/set_label.

Interface_Type_Subprograms

Field4

Iir

chain

Chain of extra interfaces for = and /=.

Has_Identifier_List

Flag3

Boolean

owned

Layout flag for object declaration. If True, the identifier of this declaration is followed by an identifier (and separated by a comma). This flag is set on all but the last declarations. Eg: on ‘signal A, B, C : Bit’, the flag is set on A and B (but not C).

Visible_Flag

Flag4

Boolean

owned

Get/Set the visible flag of a declaration. The visible flag is true to make invalid the use of the identifier during its declaration. It is set to false when the identifier is added to the name table, and set to true when the declaration is finished.

Use_Flag

Flag6

Boolean

owned

For a declaration: true if the declaration is used somewhere.

Is_Ref

Flag12

Boolean

owned

Set to True if Maybe_Ref fields are references. This cannot be shared with Has_Identifier_List as: Is_Ref is set to True on all items but the first, while Has_Identifier_List is set to True on all items but the last. Furthermore Is_Ref appears in nodes where Has_Identifier_List is not present.

Open_Flag

Flag7

Boolean

owned

This flag is set for a very short time during the check that no in port is unconnected.

Has_Semicolon

Flag16

Boolean

owned

Layout flag for interface declaration. If True, ‘;’ is present after the interface. In case of multiple names separated with colon, it cannot be set with Has_Identifier_List.

Name_Staticness

State2

Iir_Staticness

owned

Staticness of a name, according to rules of LRM 6.1

digraph { rankdir="LR" node [shape=record fontname="monospace" fontsize=10] edge [fontname="monospace" fontsize=9] "Interface_Type_Declaration" [style=filled fillcolor="#eeeeec" label="{Interface_Type_Declaration|{<Parent> Parent|<Interface_Type_Definition> Interface_Type_Definition|<Type> Type|<Chain> Chain|<Identifier> Identifier|<Interface_Type_Subprograms> Interface_Type_Subprograms|<Has_Identifier_List> Has_Identifier_List|<Visible_Flag> Visible_Flag|<Use_Flag> Use_Flag|<Is_Ref> Is_Ref|<Open_Flag> Open_Flag|<Has_Semicolon> Has_Semicolon|<Name_Staticness> Name_Staticness}}"] "Interface_Type_Declaration__Parent" [shape=box label="Iir"] "Interface_Type_Declaration":Parent -> "Interface_Type_Declaration__Parent" [color="#3465a4" style=dashed] "Interface_Type_Declaration__Interface_Type_Definition" [shape=box label="Iir"] "Interface_Type_Declaration":Interface_Type_Definition -> "Interface_Type_Declaration__Interface_Type_Definition" [color="#000000"] "Interface_Type_Declaration__Type" [shape=box label="Iir"] "Interface_Type_Declaration":Type -> "Interface_Type_Declaration__Type" [color="#3465a4" style=dashed] "Interface_Type_Declaration__Chain" [shape=box label="Iir"] "Interface_Type_Declaration":Chain -> "Interface_Type_Declaration__Chain" [color="#4e9a06" style=bold] "Interface_Type_Declaration__Interface_Type_Subprograms" [shape=box label="Iir"] "Interface_Type_Declaration":Interface_Type_Subprograms -> "Interface_Type_Declaration__Interface_Type_Subprograms" [color="#4e9a06"] }

Iir_Kind_Interface_Package_Declaration

LRM08 6.5.5 Interface package declarations

interface_package_declaration ::=
   PACKAGE identifier IS NEW /uninstantiated_package/_name
      interface_package_generic_map_aspect
interface_package_generic_map_aspect ::=
     generic_map_aspect
   | GENERIC MAP ( <> )                  --  Represented by Null_Iir
   | GENERIC MAP ( DEFAULT )             --  Not yet implemented

Format: Medium

Accessor

Field

Type

Access

Description

Parent

Field0

Iir

ref

Get/Set the statement in which TARGET appears. This is used to check if next/exit is in a loop.

Identifier

Field3

Name_Id

owned

Get/Set the identifier of a declaration. Can also be used instead of get/set_label.

Uninstantiated_Package_Name

Field7

Iir

owned

Those fields are set only for the interface package in uninstantiated units.

Uninstantiated_Package_Decl

Field9

Iir

ref

Instance_Source_File

Field10

Source_File_Entry

owned

The created pseudo-file for relocating the instantiated nodes (generics and declarations).

Generic_Chain

Field6

Iir

chain

Generic_Map_Aspect_Chain

Field8

Iir

chain

Generic map aspect list.

Declaration_Chain

Field1

Iir

chain

Attribute_Value_Chain

Field5

Iir

ref

Chain of attribute values for declared items. To be used with Get/Set_Value_Chain. There is no order, therefore, a new attribute value may be always prepended.

Associated_Package

Field4

Iir

ref

This field is set only for interface package that has been associated.

Chain

Field2

Iir

chain next

Visible_Flag

Flag4

Boolean

owned

Get/Set the visible flag of a declaration. The visible flag is true to make invalid the use of the identifier during its declaration. It is set to false when the identifier is added to the name table, and set to true when the declaration is finished.

Is_Within_Flag

Flag5

Boolean

owned

This flag is set is code being analyzed is textually within TARGET. This is used for selected by name rule.

Open_Flag

Flag7

Boolean

owned

This flag is set for a very short time during the check that no in port is unconnected.

Has_Semicolon

Flag16

Boolean

owned

Layout flag for interface declaration. If True, ‘;’ is present after the interface. In case of multiple names separated with colon, it cannot be set with Has_Identifier_List.

digraph { rankdir="LR" node [shape=record fontname="monospace" fontsize=10] edge [fontname="monospace" fontsize=9] "Interface_Package_Declaration" [style=filled fillcolor="#eeeeec" label="{Interface_Package_Declaration|{<Parent> Parent|<Identifier> Identifier|<Uninstantiated_Package_Name> Uninstantiated_Package_Name|<Uninstantiated_Package_Decl> Uninstantiated_Package_Decl|<Instance_Source_File> Instance_Source_File|<Generic_Chain> Generic_Chain|<Generic_Map_Aspect_Chain> Generic_Map_Aspect_Chain|<Declaration_Chain> Declaration_Chain|<Attribute_Value_Chain> Attribute_Value_Chain|<Associated_Package> Associated_Package|<Chain> Chain|<Visible_Flag> Visible_Flag|<Is_Within_Flag> Is_Within_Flag|<Open_Flag> Open_Flag|<Has_Semicolon> Has_Semicolon}}"] "Interface_Package_Declaration__Parent" [shape=box label="Iir"] "Interface_Package_Declaration":Parent -> "Interface_Package_Declaration__Parent" [color="#3465a4" style=dashed] "Interface_Package_Declaration__Uninstantiated_Package_Name" [shape=box label="Iir"] "Interface_Package_Declaration":Uninstantiated_Package_Name -> "Interface_Package_Declaration__Uninstantiated_Package_Name" [color="#000000"] "Interface_Package_Declaration__Uninstantiated_Package_Decl" [shape=box label="Iir"] "Interface_Package_Declaration":Uninstantiated_Package_Decl -> "Interface_Package_Declaration__Uninstantiated_Package_Decl" [color="#3465a4" style=dashed] "Interface_Package_Declaration__Generic_Chain" [shape=box label="Iir"] "Interface_Package_Declaration":Generic_Chain -> "Interface_Package_Declaration__Generic_Chain" [color="#4e9a06"] "Interface_Package_Declaration__Generic_Map_Aspect_Chain" [shape=box label="Iir"] "Interface_Package_Declaration":Generic_Map_Aspect_Chain -> "Interface_Package_Declaration__Generic_Map_Aspect_Chain" [color="#4e9a06"] "Interface_Package_Declaration__Declaration_Chain" [shape=box label="Iir"] "Interface_Package_Declaration":Declaration_Chain -> "Interface_Package_Declaration__Declaration_Chain" [color="#4e9a06"] "Interface_Package_Declaration__Attribute_Value_Chain" [shape=box label="Iir"] "Interface_Package_Declaration":Attribute_Value_Chain -> "Interface_Package_Declaration__Attribute_Value_Chain" [color="#3465a4" style=dashed] "Interface_Package_Declaration__Associated_Package" [shape=box label="Iir"] "Interface_Package_Declaration":Associated_Package -> "Interface_Package_Declaration__Associated_Package" [color="#3465a4" style=dashed] "Interface_Package_Declaration__Chain" [shape=box label="Iir"] "Interface_Package_Declaration":Chain -> "Interface_Package_Declaration__Chain" [color="#4e9a06" style=bold] }

Iir_Kind_Interface_Function_Declaration

LRM08 6.5.4 Interface subprogram declarations

interface_subprogram_declaration ::=
   interface_subprogram_specification
     [ IS interface_subprogram_default ]
interface_subprogram_specification ::=
   interface_procedure_specification | interface_function_specification
interface_procedure_specification ::=
   PROCEDURE designator
      [ [ PARAMETER ] ( formal_parameter_list ) ]
interface_function_specification ::=
   [ PURE | IMPURE ] FUNCTION designator
      [ [ PARAMETER ] ( formal_parameter_list ) ] RETURN type_mark

Format: Medium

Accessor

Field

Type

Access

Description

Parent

Field0

Iir

ref

Get/Set the statement in which TARGET appears. This is used to check if next/exit is in a loop.

Return_Type

Field1

Iir

ref

Chain

Field2

Iir

chain next

Identifier

Field3

Name_Id

owned

For string, the identifier is the corresponding reserved word.

Subprogram_Hash

Field4

Iir_Int32

owned

Hash of a subprogram profile. This is used to speed up subprogram profile comparison, which is very often used by overload.

Interface_Declaration_Chain

Field5

Iir

chain

Return_Type_Mark

Field8

Iir

owned

Default_Subprogram

Field9

Iir

owned

A Reference_Name for <>.

Subprogram_Depth

Field10

Iir_Int32

owned

Depth of a subprogram. For a subprogram declared immediately within an entity, architecture, package, process, block, generate, the depth is 0. For a subprogram declared immediately within a subprogram of level N, the depth is N + 1. Depth is used with depth of impure objects to check purity rules.

Associated_Subprogram

Field6

Iir

ref

Seen_Flag

Flag1

Boolean

owned

Get/Set the seen flag. Used when the graph of callees is walked, to avoid infinite loops, since the graph is not a DAG (there may be cycles).

Pure_Flag

Flag14

Boolean

owned

Get/Set the pure flag of a function. TRUE if the function is declared pure. FALSE if the function is declared impure.

Foreign_Flag

Flag3

Boolean

owned

Get/Set the foreign flag of a declaration. TRUE if the declaration was decorated with the std.foreign attribute.

Visible_Flag

Flag4

Boolean

owned

Get/Set the visible flag of a declaration. The visible flag is true to make invalid the use of the identifier during its declaration. It is set to false when the identifier is added to the name table, and set to true when the declaration is finished.

Use_Flag

Flag6

Boolean

owned

For a declaration: true if the declaration is used somewhere.

Resolution_Function_Flag

Flag13

Boolean

owned

True if the function is used as a resolution function.

Has_Pure

Flag8

Boolean

owned

Layout flag: true if ‘pure’ or ‘impure’ is present.

Has_Parameter

Flag10

Boolean

owned

Layout flag: true if ‘parameter’ reserved identifier is present.

All_Sensitized_State

State3

Iir_All_Sensitized

owned

Get/Set whether the subprogram may be called by a sensitized process whose sensitivity list is ALL. FALSE if declared in a package unit and reads a signal that is not one of its interface, or if it calls such a subprogram. TRUE if it doesn’t call a subprogram whose state is False and either doesn’t read a signal or declared within an entity or architecture. UNKNOWN if the status is not yet known.

Open_Flag

Flag7

Boolean

owned

This flag is set for a very short time during the check that no in port is unconnected.

Has_Semicolon

Flag16

Boolean

owned

Layout flag for interface declaration. If True, ‘;’ is present after the interface. In case of multiple names separated with colon, it cannot be set with Has_Identifier_List.

digraph { rankdir="LR" node [shape=record fontname="monospace" fontsize=10] edge [fontname="monospace" fontsize=9] "Interface_Function_Declaration" [style=filled fillcolor="#eeeeec" label="{Interface_Function_Declaration|{<Parent> Parent|<Return_Type> Return_Type|<Chain> Chain|<Identifier> Identifier|<Subprogram_Hash> Subprogram_Hash|<Interface_Declaration_Chain> Interface_Declaration_Chain|<Return_Type_Mark> Return_Type_Mark|<Default_Subprogram> Default_Subprogram|<Subprogram_Depth> Subprogram_Depth|<Associated_Subprogram> Associated_Subprogram|<Seen_Flag> Seen_Flag|<Pure_Flag> Pure_Flag|<Foreign_Flag> Foreign_Flag|<Visible_Flag> Visible_Flag|<Use_Flag> Use_Flag|<Resolution_Function_Flag> Resolution_Function_Flag|<Has_Pure> Has_Pure|<Has_Parameter> Has_Parameter|<All_Sensitized_State> All_Sensitized_State|<Open_Flag> Open_Flag|<Has_Semicolon> Has_Semicolon}}"] "Interface_Function_Declaration__Parent" [shape=box label="Iir"] "Interface_Function_Declaration":Parent -> "Interface_Function_Declaration__Parent" [color="#3465a4" style=dashed] "Interface_Function_Declaration__Return_Type" [shape=box label="Iir"] "Interface_Function_Declaration":Return_Type -> "Interface_Function_Declaration__Return_Type" [color="#3465a4" style=dashed] "Interface_Function_Declaration__Chain" [shape=box label="Iir"] "Interface_Function_Declaration":Chain -> "Interface_Function_Declaration__Chain" [color="#4e9a06" style=bold] "Interface_Function_Declaration__Interface_Declaration_Chain" [shape=box label="Iir"] "Interface_Function_Declaration":Interface_Declaration_Chain -> "Interface_Function_Declaration__Interface_Declaration_Chain" [color="#4e9a06"] "Interface_Function_Declaration__Return_Type_Mark" [shape=box label="Iir"] "Interface_Function_Declaration":Return_Type_Mark -> "Interface_Function_Declaration__Return_Type_Mark" [color="#000000"] "Interface_Function_Declaration__Default_Subprogram" [shape=box label="Iir"] "Interface_Function_Declaration":Default_Subprogram -> "Interface_Function_Declaration__Default_Subprogram" [color="#000000"] "Interface_Function_Declaration__Associated_Subprogram" [shape=box label="Iir"] "Interface_Function_Declaration":Associated_Subprogram -> "Interface_Function_Declaration__Associated_Subprogram" [color="#3465a4" style=dashed] }

Iir_Kind_Interface_Procedure_Declaration

LRM08 6.5.4 Interface subprogram declarations

interface_subprogram_declaration ::=
   interface_subprogram_specification
     [ IS interface_subprogram_default ]
interface_subprogram_specification ::=
   interface_procedure_specification | interface_function_specification
interface_procedure_specification ::=
   PROCEDURE designator
      [ [ PARAMETER ] ( formal_parameter_list ) ]
interface_function_specification ::=
   [ PURE | IMPURE ] FUNCTION designator
      [ [ PARAMETER ] ( formal_parameter_list ) ] RETURN type_mark

Format: Medium

Accessor

Field

Type

Access

Description

Parent

Field0

Iir

ref

Get/Set the statement in which TARGET appears. This is used to check if next/exit is in a loop.

Chain

Field2

Iir

chain next

Identifier

Field3

Name_Id

owned

For string, the identifier is the corresponding reserved word.

Subprogram_Hash

Field4

Iir_Int32

owned

Hash of a subprogram profile. This is used to speed up subprogram profile comparison, which is very often used by overload.

Interface_Declaration_Chain

Field5

Iir

chain

Return_Type_Mark

Field8

Iir

owned

Default_Subprogram

Field9

Iir

owned

A Reference_Name for <>.

Subprogram_Depth

Field10

Iir_Int32

owned

Depth of a subprogram. For a subprogram declared immediately within an entity, architecture, package, process, block, generate, the depth is 0. For a subprogram declared immediately within a subprogram of level N, the depth is N + 1. Depth is used with depth of impure objects to check purity rules.

Associated_Subprogram

Field6

Iir

ref

Seen_Flag

Flag1

Boolean

owned

Get/Set the seen flag. Used when the graph of callees is walked, to avoid infinite loops, since the graph is not a DAG (there may be cycles).

Foreign_Flag

Flag3

Boolean

owned

Get/Set the foreign flag of a declaration. TRUE if the declaration was decorated with the std.foreign attribute.

Visible_Flag

Flag4

Boolean

owned

Get/Set the visible flag of a declaration. The visible flag is true to make invalid the use of the identifier during its declaration. It is set to false when the identifier is added to the name table, and set to true when the declaration is finished.

Use_Flag

Flag6

Boolean

owned

For a declaration: true if the declaration is used somewhere.

Has_Parameter

Flag10

Boolean

owned

Layout flag: true if ‘parameter’ reserved identifier is present.

Suspend_Flag

Flag11

Boolean

owned

Set on wait, procedure call and composite statements when there is a sub-statement that can suspend a procedure or a process. Also set on procedure declaration. Note that the flag is conservative: it must be true if the node contains directly or indirectly a wait statement, but need not to be false otherwise.

All_Sensitized_State

State3

Iir_All_Sensitized

owned

Get/Set whether the subprogram may be called by a sensitized process whose sensitivity list is ALL. FALSE if declared in a package unit and reads a signal that is not one of its interface, or if it calls such a subprogram. TRUE if it doesn’t call a subprogram whose state is False and either doesn’t read a signal or declared within an entity or architecture. UNKNOWN if the status is not yet known.

Open_Flag

Flag7

Boolean

owned

This flag is set for a very short time during the check that no in port is unconnected.

Has_Semicolon

Flag16

Boolean

owned

Layout flag for interface declaration. If True, ‘;’ is present after the interface. In case of multiple names separated with colon, it cannot be set with Has_Identifier_List.

digraph { rankdir="LR" node [shape=record fontname="monospace" fontsize=10] edge [fontname="monospace" fontsize=9] "Interface_Procedure_Declaration" [style=filled fillcolor="#eeeeec" label="{Interface_Procedure_Declaration|{<Parent> Parent|<Chain> Chain|<Identifier> Identifier|<Subprogram_Hash> Subprogram_Hash|<Interface_Declaration_Chain> Interface_Declaration_Chain|<Return_Type_Mark> Return_Type_Mark|<Default_Subprogram> Default_Subprogram|<Subprogram_Depth> Subprogram_Depth|<Associated_Subprogram> Associated_Subprogram|<Seen_Flag> Seen_Flag|<Foreign_Flag> Foreign_Flag|<Visible_Flag> Visible_Flag|<Use_Flag> Use_Flag|<Has_Parameter> Has_Parameter|<Suspend_Flag> Suspend_Flag|<All_Sensitized_State> All_Sensitized_State|<Open_Flag> Open_Flag|<Has_Semicolon> Has_Semicolon}}"] "Interface_Procedure_Declaration__Parent" [shape=box label="Iir"] "Interface_Procedure_Declaration":Parent -> "Interface_Procedure_Declaration__Parent" [color="#3465a4" style=dashed] "Interface_Procedure_Declaration__Chain" [shape=box label="Iir"] "Interface_Procedure_Declaration":Chain -> "Interface_Procedure_Declaration__Chain" [color="#4e9a06" style=bold] "Interface_Procedure_Declaration__Interface_Declaration_Chain" [shape=box label="Iir"] "Interface_Procedure_Declaration":Interface_Declaration_Chain -> "Interface_Procedure_Declaration__Interface_Declaration_Chain" [color="#4e9a06"] "Interface_Procedure_Declaration__Return_Type_Mark" [shape=box label="Iir"] "Interface_Procedure_Declaration":Return_Type_Mark -> "Interface_Procedure_Declaration__Return_Type_Mark" [color="#000000"] "Interface_Procedure_Declaration__Default_Subprogram" [shape=box label="Iir"] "Interface_Procedure_Declaration":Default_Subprogram -> "Interface_Procedure_Declaration__Default_Subprogram" [color="#000000"] "Interface_Procedure_Declaration__Associated_Subprogram" [shape=box label="Iir"] "Interface_Procedure_Declaration":Associated_Subprogram -> "Interface_Procedure_Declaration__Associated_Subprogram" [color="#3465a4" style=dashed] }