From 7d85d728bb261ad70ee7238851989bac0fc9ce47 Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Mon, 15 Jun 2020 19:38:45 +0200 Subject: vhdl: create default configuration for a vunit. Fix #1372 --- src/synth/synth-insts.adb | 2 +- src/synth/synth-stmts.adb | 3 + src/vhdl/vhdl-canon.adb | 348 +++++++++++++++++-------------- src/vhdl/vhdl-nodes.adb | 24 ++- src/vhdl/vhdl-nodes.ads | 14 +- src/vhdl/vhdl-nodes_meta.adb | 477 +++++++++++++++++++++++-------------------- src/vhdl/vhdl-nodes_meta.ads | 3 + 7 files changed, 478 insertions(+), 393 deletions(-) (limited to 'src') diff --git a/src/synth/synth-insts.adb b/src/synth/synth-insts.adb index da1cc329c..c2bb5d580 100644 --- a/src/synth/synth-insts.adb +++ b/src/synth/synth-insts.adb @@ -1387,7 +1387,7 @@ package body Synth.Insts is pragma Assert (Get_Block_From_Block_Specification (Get_Block_Specification (Cfg)) = Blk); - Clear_Instantiation_Configuration (Blk); + -- Clear_Instantiation_Configuration (Blk); Item := Get_Configuration_Item_Chain (Cfg); while Item /= Null_Node loop diff --git a/src/synth/synth-stmts.adb b/src/synth/synth-stmts.adb index cdc5290a4..9418c6e22 100644 --- a/src/synth/synth-stmts.adb +++ b/src/synth/synth-stmts.adb @@ -3628,6 +3628,9 @@ package body Synth.Stmts is Mark (M, Proc_Pool); Instance_Pool := Proc_Pool'Access; + Apply_Block_Configuration + (Get_Verification_Block_Configuration (Unit), Unit); + Last_Type := Null_Node; Item := Get_Vunit_Item_Chain (Unit); while Item /= Null_Node loop diff --git a/src/vhdl/vhdl-canon.adb b/src/vhdl/vhdl-canon.adb index 319a329a6..0ff2fdc18 100644 --- a/src/vhdl/vhdl-canon.adb +++ b/src/vhdl/vhdl-canon.adb @@ -3143,17 +3143,13 @@ package body Vhdl.Canon is end loop; end Canon_Declarations; - procedure Canon_Block_Configuration (Top : Iir_Design_Unit; - Conf : Iir_Block_Configuration) + -- Append for FIRST_ITEM/LAST_ITEM the default block or component + -- configuration for statement EL (unless there is already a configuration + -- for it). + -- Always clear the association to the configuration for the statement. + procedure Canon_Block_Configuration_Statement + (El : Iir; Blk : Iir; Parent : Iir; First_Item, Last_Item : in out Iir) is - -- use Iir_Chains.Configuration_Item_Chain_Handling; - Spec : constant Iir := Get_Block_Specification (Conf); - Blk : constant Iir := Get_Block_From_Block_Specification (Spec); - Stmts : constant Iir := Get_Concurrent_Statement_Chain (Blk); - El : Iir; - Sub_Blk : Iir; - First_Item, Last_Item : Iir; - procedure Create_Default_Block_Configuration (Targ : Iir) is Res : Iir; @@ -3161,7 +3157,7 @@ package body Vhdl.Canon is begin Res := Create_Iir (Iir_Kind_Block_Configuration); Location_Copy (Res, Targ); - Set_Parent (Res, Conf); + Set_Parent (Res, Parent); if True then -- For debugging. Display as user block configuration. Spec := Build_Simple_Name (Targ, Targ); @@ -3173,6 +3169,167 @@ package body Vhdl.Canon is Set_Block_Specification (Res, Spec); Chain_Append (First_Item, Last_Item, Res); end Create_Default_Block_Configuration; + begin + case Get_Kind (El) is + when Iir_Kind_Component_Instantiation_Statement => + declare + Comp_Conf : Iir; + Res : Iir_Component_Configuration; + Designator_List : Iir_List; + Inst_List : Iir_Flist; + Inst : Iir; + Inst_Name : Iir; + begin + Comp_Conf := Get_Component_Configuration (El); + if Comp_Conf = Null_Iir then + if Is_Component_Instantiation (El) then + -- Create a component configuration. + -- FIXME: should merge all these default configuration + -- of the same component. + Res := Create_Iir (Iir_Kind_Component_Configuration); + Location_Copy (Res, El); + Set_Parent (Res, Parent); + Set_Component_Name + (Res, + Build_Reference_Name (Get_Instantiated_Unit (El))); + Designator_List := Create_Iir_List; + Append_Element + (Designator_List, Build_Simple_Name (El, El)); + Set_Instantiation_List + (Res, List_To_Flist (Designator_List)); + Chain_Append (First_Item, Last_Item, Res); + end if; + elsif Get_Kind (Comp_Conf) + = Iir_Kind_Configuration_Specification + then + -- Create component configuration + Res := Create_Iir (Iir_Kind_Component_Configuration); + Location_Copy (Res, Comp_Conf); + Set_Parent (Res, Parent); + Set_Component_Name + (Res, + Build_Reference_Name (Get_Component_Name (Comp_Conf))); + -- Keep in the designator list only the non-incrementally + -- bound instances, and only the instances in the current + -- statements parts (vhdl-87 generate issue). + Inst_List := Get_Instantiation_List (Comp_Conf); + Designator_List := Create_Iir_List; + for I in Flist_First .. Flist_Last (Inst_List) loop + Inst_Name := Get_Nth_Element (Inst_List, I); + Inst := Get_Named_Entity (Inst_Name); + if Get_Component_Configuration (Inst) = Comp_Conf + and then Get_Parent (Inst) = Blk + then + Set_Component_Configuration (Inst, Res); + Append_Element (Designator_List, + Build_Reference_Name (Inst_Name)); + end if; + end loop; + Set_Instantiation_List + (Res, List_To_Flist (Designator_List)); + Set_Binding_Indication + (Res, Get_Binding_Indication (Comp_Conf)); + Set_Is_Ref (Res, True); + Chain_Append (First_Item, Last_Item, Res); + end if; + Set_Component_Configuration (El, Null_Iir); + end; + when Iir_Kind_Block_Statement => + if Get_Block_Block_Configuration (El) = Null_Iir then + Create_Default_Block_Configuration (El); + end if; + when Iir_Kind_If_Generate_Statement => + declare + Clause : Iir; + Bod : Iir; + Blk_Config : Iir_Block_Configuration; + begin + Clause := El; + while Clause /= Null_Iir loop + Bod := Get_Generate_Statement_Body (Clause); + Blk_Config := Get_Generate_Block_Configuration (Bod); + if Blk_Config = Null_Iir then + Create_Default_Block_Configuration (Bod); + end if; + Set_Generate_Block_Configuration (Bod, Null_Iir); + Clause := Get_Generate_Else_Clause (Clause); + end loop; + end; + when Iir_Kind_Case_Generate_Statement => + declare + Alt : Iir; + Bod : Iir; + Blk_Config : Iir_Block_Configuration; + begin + Alt := Get_Case_Statement_Alternative_Chain (El); + while Alt /= Null_Iir loop + if not Get_Same_Alternative_Flag (Alt) then + Bod := Get_Associated_Block (Alt); + Blk_Config := Get_Generate_Block_Configuration (Bod); + if Blk_Config = Null_Iir then + Create_Default_Block_Configuration (Bod); + end if; + Set_Generate_Block_Configuration (Bod, Null_Iir); + end if; + Alt := Get_Chain (Alt); + end loop; + end; + when Iir_Kind_For_Generate_Statement => + declare + Bod : constant Iir := Get_Generate_Statement_Body (El); + Blk_Config : constant Iir_Block_Configuration := + Get_Generate_Block_Configuration (Bod); + Res : Iir_Block_Configuration; + Blk_Spec : Iir; + begin + if Blk_Config = Null_Iir then + Create_Default_Block_Configuration (Bod); + else + Blk_Spec := Strip_Denoting_Name + (Get_Block_Specification (Blk_Config)); + if Get_Kind (Blk_Spec) /= Iir_Kind_Generate_Statement_Body + then + -- There are generate specification with range or + -- expression. Create a default block configuration + -- for the (possible) non-covered values. + Res := Create_Iir (Iir_Kind_Block_Configuration); + Location_Copy (Res, El); + Set_Parent (Res, Parent); + Blk_Spec := Create_Iir (Iir_Kind_Indexed_Name); + Location_Copy (Blk_Spec, Res); + Set_Index_List (Blk_Spec, Iir_Flist_Others); + Set_Base_Name (Blk_Spec, El); + Set_Prefix (Blk_Spec, Build_Simple_Name (Bod, Res)); + Set_Block_Specification (Res, Blk_Spec); + Chain_Append (First_Item, Last_Item, Res); + end if; + end if; + Set_Generate_Block_Configuration (Bod, Null_Iir); + end; + + when Iir_Kinds_Simple_Concurrent_Statement + | Iir_Kind_Psl_Default_Clock + | Iir_Kind_Psl_Declaration + | Iir_Kind_Psl_Endpoint_Declaration + | Iir_Kind_Simple_Simultaneous_Statement => + null; + + when others => + Error_Kind ("canon_block_configuration(3)", El); + end case; + end Canon_Block_Configuration_Statement; + + procedure Canon_Block_Configuration (Top : Iir_Design_Unit; + Conf : Iir_Block_Configuration) + is + -- use Iir_Chains.Configuration_Item_Chain_Handling; + Spec : constant Iir := Get_Block_Specification (Conf); + Blk : constant Iir := Get_Block_From_Block_Specification (Spec); + Stmts : constant Iir := Get_Concurrent_Statement_Chain (Blk); + El : Iir; + Sub_Blk : Iir; + First_Item, Last_Item : Iir; + begin -- Note: the only allowed declarations are use clauses, which are not -- canonicalized. @@ -3237,149 +3394,8 @@ package body Vhdl.Canon is -- Add default block configuration for unconfigured block statements. El := Stmts; while El /= Null_Iir loop - case Get_Kind (El) is - when Iir_Kind_Component_Instantiation_Statement => - declare - Comp_Conf : Iir; - Res : Iir_Component_Configuration; - Designator_List : Iir_List; - Inst_List : Iir_Flist; - Inst : Iir; - Inst_Name : Iir; - begin - Comp_Conf := Get_Component_Configuration (El); - if Comp_Conf = Null_Iir then - if Is_Component_Instantiation (El) then - -- Create a component configuration. - -- FIXME: should merge all these default configuration - -- of the same component. - Res := Create_Iir (Iir_Kind_Component_Configuration); - Location_Copy (Res, El); - Set_Parent (Res, Conf); - Set_Component_Name - (Res, - Build_Reference_Name (Get_Instantiated_Unit (El))); - Designator_List := Create_Iir_List; - Append_Element - (Designator_List, Build_Simple_Name (El, El)); - Set_Instantiation_List - (Res, List_To_Flist (Designator_List)); - Chain_Append (First_Item, Last_Item, Res); - end if; - elsif Get_Kind (Comp_Conf) - = Iir_Kind_Configuration_Specification - then - -- Create component configuration - Res := Create_Iir (Iir_Kind_Component_Configuration); - Location_Copy (Res, Comp_Conf); - Set_Parent (Res, Conf); - Set_Component_Name - (Res, - Build_Reference_Name (Get_Component_Name (Comp_Conf))); - -- Keep in the designator list only the non-incrementally - -- bound instances, and only the instances in the current - -- statements parts (vhdl-87 generate issue). - Inst_List := Get_Instantiation_List (Comp_Conf); - Designator_List := Create_Iir_List; - for I in Flist_First .. Flist_Last (Inst_List) loop - Inst_Name := Get_Nth_Element (Inst_List, I); - Inst := Get_Named_Entity (Inst_Name); - if Get_Component_Configuration (Inst) = Comp_Conf - and then Get_Parent (Inst) = Blk - then - Set_Component_Configuration (Inst, Res); - Append_Element (Designator_List, - Build_Reference_Name (Inst_Name)); - end if; - end loop; - Set_Instantiation_List - (Res, List_To_Flist (Designator_List)); - Set_Binding_Indication - (Res, Get_Binding_Indication (Comp_Conf)); - Set_Is_Ref (Res, True); - Chain_Append (First_Item, Last_Item, Res); - end if; - end; - when Iir_Kind_Block_Statement => - if Get_Block_Block_Configuration (El) = Null_Iir then - Create_Default_Block_Configuration (El); - end if; - when Iir_Kind_If_Generate_Statement => - declare - Clause : Iir; - Bod : Iir; - Blk_Config : Iir_Block_Configuration; - begin - Clause := El; - while Clause /= Null_Iir loop - Bod := Get_Generate_Statement_Body (Clause); - Blk_Config := Get_Generate_Block_Configuration (Bod); - if Blk_Config = Null_Iir then - Create_Default_Block_Configuration (Bod); - end if; - Clause := Get_Generate_Else_Clause (Clause); - end loop; - end; - when Iir_Kind_Case_Generate_Statement => - declare - Alt : Iir; - Bod : Iir; - Blk_Config : Iir_Block_Configuration; - begin - Alt := Get_Case_Statement_Alternative_Chain (El); - while Alt /= Null_Iir loop - if not Get_Same_Alternative_Flag (Alt) then - Bod := Get_Associated_Block (Alt); - Blk_Config := Get_Generate_Block_Configuration (Bod); - if Blk_Config = Null_Iir then - Create_Default_Block_Configuration (Bod); - end if; - end if; - Alt := Get_Chain (Alt); - end loop; - end; - when Iir_Kind_For_Generate_Statement => - declare - Bod : constant Iir := Get_Generate_Statement_Body (El); - Blk_Config : constant Iir_Block_Configuration := - Get_Generate_Block_Configuration (Bod); - Res : Iir_Block_Configuration; - Blk_Spec : Iir; - begin - if Blk_Config = Null_Iir then - Create_Default_Block_Configuration (Bod); - else - Blk_Spec := Strip_Denoting_Name - (Get_Block_Specification (Blk_Config)); - if Get_Kind (Blk_Spec) /= Iir_Kind_Generate_Statement_Body - then - -- There are generate specification with range or - -- expression. Create a default block configuration - -- for the (possible) non-covered values. - Res := Create_Iir (Iir_Kind_Block_Configuration); - Location_Copy (Res, El); - Set_Parent (Res, Conf); - Blk_Spec := Create_Iir (Iir_Kind_Indexed_Name); - Location_Copy (Blk_Spec, Res); - Set_Index_List (Blk_Spec, Iir_Flist_Others); - Set_Base_Name (Blk_Spec, El); - Set_Prefix (Blk_Spec, Build_Simple_Name (Bod, Res)); - Set_Block_Specification (Res, Blk_Spec); - Chain_Append (First_Item, Last_Item, Res); - end if; - end if; - end; - - when Iir_Kinds_Simple_Concurrent_Statement - | Iir_Kind_Psl_Default_Clock - | Iir_Kind_Psl_Declaration - | Iir_Kind_Psl_Endpoint_Declaration - | Iir_Kind_Simple_Simultaneous_Statement => - null; - - when others => - Error_Kind ("canon_block_configuration(3)", El); - end case; + Canon_Block_Configuration_Statement + (El, Blk, Conf, First_Item, Last_Item); El := Get_Chain (El); end loop; Set_Configuration_Item_Chain (Conf, First_Item); @@ -3415,11 +3431,23 @@ package body Vhdl.Canon is procedure Canon_Psl_Verification_Unit (Unit : Iir_Design_Unit) is - Decl : constant Iir := Get_Library_Unit (Unit); - Item : Iir; - Prev_Item : Iir; - Proc_Num : Natural := 0; + Decl : constant Iir := Get_Library_Unit (Unit); + Item : Iir; + Prev_Item : Iir; + Blk_Cfg : Iir; + First_Conf : Iir; + Last_Conf : Iir; + Proc_Num : Natural := 0; begin + Blk_Cfg := Create_Iir (Iir_Kind_Block_Configuration); + Set_Location (Blk_Cfg, Get_Location (Unit)); + Set_Parent (Blk_Cfg, Unit); + Set_Block_Specification (Blk_Cfg, Build_Simple_Name (Decl, Blk_Cfg)); + Set_Verification_Block_Configuration (Decl, Blk_Cfg); + + First_Conf := Null_Iir; + Last_Conf := Null_Iir; + Prev_Item := Null_Iir; Item := Get_Vunit_Item_Chain (Decl); while Item /= Null_Iir loop @@ -3450,6 +3478,8 @@ package body Vhdl.Canon is | Iir_Kind_Component_Instantiation_Statement => Canon_Concurrent_Label (Item, Proc_Num); Canon_Concurrent_Statement (Item, Unit); + Canon_Block_Configuration_Statement + (Item, Unit, Unit, First_Conf, Last_Conf); when others => Error_Kind ("canon_psl_verification_unit", Item); end case; @@ -3462,6 +3492,8 @@ package body Vhdl.Canon is Prev_Item := Item; Item := Get_Chain (Item); end loop; + + Set_Configuration_Item_Chain (Blk_Cfg, First_Conf); end Canon_Psl_Verification_Unit; procedure Canonicalize (Unit: Iir_Design_Unit) diff --git a/src/vhdl/vhdl-nodes.adb b/src/vhdl/vhdl-nodes.adb index 5501cec1a..9072405aa 100644 --- a/src/vhdl/vhdl-nodes.adb +++ b/src/vhdl/vhdl-nodes.adb @@ -1043,8 +1043,6 @@ package body Vhdl.Nodes is | Iir_Kind_Overload_List | Iir_Kind_Configuration_Declaration | Iir_Kind_Context_Declaration - | Iir_Kind_Vmode_Declaration - | Iir_Kind_Vprop_Declaration | Iir_Kind_Package_Body | Iir_Kind_Type_Declaration | Iir_Kind_Anonymous_Type_Declaration @@ -1248,6 +1246,8 @@ package body Vhdl.Nodes is | Iir_Kind_Entity_Declaration | Iir_Kind_Package_Declaration | Iir_Kind_Package_Instantiation_Declaration + | Iir_Kind_Vmode_Declaration + | Iir_Kind_Vprop_Declaration | Iir_Kind_Vunit_Declaration | Iir_Kind_Architecture_Body | Iir_Kind_Package_Header @@ -2713,7 +2713,7 @@ package body Vhdl.Nodes is pragma Assert (Vunit /= Null_Iir); pragma Assert (Has_Vunit_Item_Chain (Get_Kind (Vunit)), "no field Vunit_Item_Chain"); - return Get_Field4 (Vunit); + return Get_Field6 (Vunit); end Get_Vunit_Item_Chain; procedure Set_Vunit_Item_Chain (Vunit : Iir; Chain : Iir) is @@ -2721,7 +2721,7 @@ package body Vhdl.Nodes is pragma Assert (Vunit /= Null_Iir); pragma Assert (Has_Vunit_Item_Chain (Get_Kind (Vunit)), "no field Vunit_Item_Chain"); - Set_Field4 (Vunit, Chain); + Set_Field6 (Vunit, Chain); end Set_Vunit_Item_Chain; function Get_Bound_Vunit_Chain (Unit : Iir) return Iir is @@ -2740,6 +2740,22 @@ package body Vhdl.Nodes is Set_Field8 (Unit, Vunit); end Set_Bound_Vunit_Chain; + function Get_Verification_Block_Configuration (Vunit : Iir) return Iir is + begin + pragma Assert (Vunit /= Null_Iir); + pragma Assert (Has_Verification_Block_Configuration (Get_Kind (Vunit)), + "no field Verification_Block_Configuration"); + return Get_Field4 (Vunit); + end Get_Verification_Block_Configuration; + + procedure Set_Verification_Block_Configuration (Vunit : Iir; Conf : Iir) is + begin + pragma Assert (Vunit /= Null_Iir); + pragma Assert (Has_Verification_Block_Configuration (Get_Kind (Vunit)), + "no field Verification_Block_Configuration"); + Set_Field4 (Vunit, Conf); + end Set_Verification_Block_Configuration; + function Get_Block_Configuration (Target : Iir) return Iir is begin pragma Assert (Target /= Null_Iir); diff --git a/src/vhdl/vhdl-nodes.ads b/src/vhdl/vhdl-nodes.ads index 014520cf4..97eeccf24 100644 --- a/src/vhdl/vhdl-nodes.ads +++ b/src/vhdl/vhdl-nodes.ads @@ -1104,8 +1104,8 @@ package Vhdl.Nodes is -- Get/Set_End_Has_Identifier (Flag9) -- Iir_Kind_Vunit_Declaration (Medium) - -- Iir_Kind_Vmode_Declaration (Short) - -- Iir_Kind_Vprop_Declaration (Short) + -- Iir_Kind_Vmode_Declaration (Medium) + -- Iir_Kind_Vprop_Declaration (Medium) -- -- Get/Set_Parent (Field0) -- Get/Set_Design_Unit (Alias Field0) @@ -1118,7 +1118,9 @@ package Vhdl.Nodes is -- -- Get/Set_Attribute_Value_Chain (Field5) -- - -- Get/Set_Vunit_Item_Chain (Field4) + -- Get/Set_Vunit_Item_Chain (Field6) + -- + -- Get/Set_Verification_Block_Configuration (Field4) -- -- Only for Iir_Kind_Vunit_Declaration: -- Get/Set_Bound_Vunit_Chain (Field8) @@ -7594,7 +7596,7 @@ package Vhdl.Nodes is function Get_Inherit_Spec_Chain (Vunit : Iir) return Iir; procedure Set_Inherit_Spec_Chain (Vunit : Iir; Chain : Iir); - -- Field: Field4 Chain + -- Field: Field6 Chain function Get_Vunit_Item_Chain (Vunit : Iir) return Iir; procedure Set_Vunit_Item_Chain (Vunit : Iir; Chain : Iir); @@ -7603,6 +7605,10 @@ package Vhdl.Nodes is function Get_Bound_Vunit_Chain (Unit : Iir) return Iir; procedure Set_Bound_Vunit_Chain (Unit : Iir; Vunit : Iir); + -- Field: Field4 + function Get_Verification_Block_Configuration (Vunit : Iir) return Iir; + procedure Set_Verification_Block_Configuration (Vunit : Iir; Conf : Iir); + -- Field: Field4 function Get_Block_Configuration (Target : Iir) return Iir; procedure Set_Block_Configuration (Target : Iir; Block : Iir); diff --git a/src/vhdl/vhdl-nodes_meta.adb b/src/vhdl/vhdl-nodes_meta.adb index c64eed50b..1392a860d 100644 --- a/src/vhdl/vhdl-nodes_meta.adb +++ b/src/vhdl/vhdl-nodes_meta.adb @@ -105,6 +105,7 @@ package body Vhdl.Nodes_Meta is Field_Inherit_Spec_Chain => Type_Iir, Field_Vunit_Item_Chain => Type_Iir, Field_Bound_Vunit_Chain => Type_Iir, + Field_Verification_Block_Configuration => Type_Iir, Field_Block_Configuration => Type_Iir, Field_Concurrent_Statement_Chain => Type_Iir, Field_Chain => Type_Iir, @@ -564,6 +565,8 @@ package body Vhdl.Nodes_Meta is return "vunit_item_chain"; when Field_Bound_Vunit_Chain => return "bound_vunit_chain"; + when Field_Verification_Block_Configuration => + return "verification_block_configuration"; when Field_Block_Configuration => return "block_configuration"; when Field_Concurrent_Statement_Chain => @@ -1924,6 +1927,8 @@ package body Vhdl.Nodes_Meta is return Attr_Chain; when Field_Bound_Vunit_Chain => return Attr_Chain; + when Field_Verification_Block_Configuration => + return Attr_None; when Field_Block_Configuration => return Attr_None; when Field_Concurrent_Statement_Chain => @@ -3177,6 +3182,7 @@ package body Vhdl.Nodes_Meta is Field_Inherit_Spec_Chain, Field_Attribute_Value_Chain, Field_Vunit_Item_Chain, + Field_Verification_Block_Configuration, -- Iir_Kind_Vprop_Declaration Field_Identifier, Field_Has_Begin, @@ -3189,6 +3195,7 @@ package body Vhdl.Nodes_Meta is Field_Inherit_Spec_Chain, Field_Attribute_Value_Chain, Field_Vunit_Item_Chain, + Field_Verification_Block_Configuration, -- Iir_Kind_Vunit_Declaration Field_Identifier, Field_Has_Begin, @@ -3201,6 +3208,7 @@ package body Vhdl.Nodes_Meta is Field_Inherit_Spec_Chain, Field_Attribute_Value_Chain, Field_Vunit_Item_Chain, + Field_Verification_Block_Configuration, Field_Bound_Vunit_Chain, -- Iir_Kind_Package_Body Field_Identifier, @@ -5204,232 +5212,232 @@ package body Vhdl.Nodes_Meta is Iir_Kind_Context_Declaration => 567, Iir_Kind_Package_Declaration => 582, Iir_Kind_Package_Instantiation_Declaration => 596, - Iir_Kind_Vmode_Declaration => 607, - Iir_Kind_Vprop_Declaration => 618, - Iir_Kind_Vunit_Declaration => 630, - Iir_Kind_Package_Body => 638, - Iir_Kind_Architecture_Body => 651, - Iir_Kind_Type_Declaration => 658, - Iir_Kind_Anonymous_Type_Declaration => 664, - Iir_Kind_Subtype_Declaration => 671, - Iir_Kind_Nature_Declaration => 677, - Iir_Kind_Subnature_Declaration => 684, - Iir_Kind_Package_Header => 686, - Iir_Kind_Unit_Declaration => 695, - Iir_Kind_Library_Declaration => 703, - Iir_Kind_Component_Declaration => 713, - Iir_Kind_Attribute_Declaration => 720, - Iir_Kind_Group_Template_Declaration => 726, - Iir_Kind_Group_Declaration => 733, - Iir_Kind_Element_Declaration => 740, - Iir_Kind_Nature_Element_Declaration => 747, - Iir_Kind_Non_Object_Alias_Declaration => 755, - Iir_Kind_Psl_Declaration => 763, - Iir_Kind_Psl_Endpoint_Declaration => 777, - Iir_Kind_Enumeration_Literal => 788, - Iir_Kind_Function_Declaration => 813, - Iir_Kind_Procedure_Declaration => 837, - Iir_Kind_Function_Body => 847, - Iir_Kind_Procedure_Body => 858, - Iir_Kind_Terminal_Declaration => 867, - Iir_Kind_Object_Alias_Declaration => 878, - Iir_Kind_Free_Quantity_Declaration => 890, - Iir_Kind_Spectrum_Quantity_Declaration => 903, - Iir_Kind_Noise_Quantity_Declaration => 915, - Iir_Kind_Across_Quantity_Declaration => 931, - Iir_Kind_Through_Quantity_Declaration => 947, - Iir_Kind_File_Declaration => 961, - Iir_Kind_Guard_Signal_Declaration => 974, - Iir_Kind_Signal_Declaration => 991, - Iir_Kind_Variable_Declaration => 1004, - Iir_Kind_Constant_Declaration => 1018, - Iir_Kind_Iterator_Declaration => 1029, - Iir_Kind_Interface_Constant_Declaration => 1045, - Iir_Kind_Interface_Variable_Declaration => 1061, - Iir_Kind_Interface_Signal_Declaration => 1082, - Iir_Kind_Interface_File_Declaration => 1098, - Iir_Kind_Interface_Quantity_Declaration => 1114, - Iir_Kind_Interface_Terminal_Declaration => 1126, - Iir_Kind_Interface_Type_Declaration => 1136, - Iir_Kind_Interface_Package_Declaration => 1148, - Iir_Kind_Interface_Function_Declaration => 1165, - Iir_Kind_Interface_Procedure_Declaration => 1178, - Iir_Kind_Anonymous_Signal_Declaration => 1187, - Iir_Kind_Signal_Attribute_Declaration => 1190, - Iir_Kind_Identity_Operator => 1194, - Iir_Kind_Negation_Operator => 1198, - Iir_Kind_Absolute_Operator => 1202, - Iir_Kind_Not_Operator => 1206, - Iir_Kind_Implicit_Condition_Operator => 1210, - Iir_Kind_Condition_Operator => 1214, - Iir_Kind_Reduction_And_Operator => 1218, - Iir_Kind_Reduction_Or_Operator => 1222, - Iir_Kind_Reduction_Nand_Operator => 1226, - Iir_Kind_Reduction_Nor_Operator => 1230, - Iir_Kind_Reduction_Xor_Operator => 1234, - Iir_Kind_Reduction_Xnor_Operator => 1238, - Iir_Kind_And_Operator => 1243, - Iir_Kind_Or_Operator => 1248, - Iir_Kind_Nand_Operator => 1253, - Iir_Kind_Nor_Operator => 1258, - Iir_Kind_Xor_Operator => 1263, - Iir_Kind_Xnor_Operator => 1268, - Iir_Kind_Equality_Operator => 1273, - Iir_Kind_Inequality_Operator => 1278, - Iir_Kind_Less_Than_Operator => 1283, - Iir_Kind_Less_Than_Or_Equal_Operator => 1288, - Iir_Kind_Greater_Than_Operator => 1293, - Iir_Kind_Greater_Than_Or_Equal_Operator => 1298, - Iir_Kind_Match_Equality_Operator => 1303, - Iir_Kind_Match_Inequality_Operator => 1308, - Iir_Kind_Match_Less_Than_Operator => 1313, - Iir_Kind_Match_Less_Than_Or_Equal_Operator => 1318, - Iir_Kind_Match_Greater_Than_Operator => 1323, - Iir_Kind_Match_Greater_Than_Or_Equal_Operator => 1328, - Iir_Kind_Sll_Operator => 1333, - Iir_Kind_Sla_Operator => 1338, - Iir_Kind_Srl_Operator => 1343, - Iir_Kind_Sra_Operator => 1348, - Iir_Kind_Rol_Operator => 1353, - Iir_Kind_Ror_Operator => 1358, - Iir_Kind_Addition_Operator => 1363, - Iir_Kind_Substraction_Operator => 1368, - Iir_Kind_Concatenation_Operator => 1373, - Iir_Kind_Multiplication_Operator => 1378, - Iir_Kind_Division_Operator => 1383, - Iir_Kind_Modulus_Operator => 1388, - Iir_Kind_Remainder_Operator => 1393, - Iir_Kind_Exponentiation_Operator => 1398, - Iir_Kind_Function_Call => 1406, - Iir_Kind_Aggregate => 1413, - Iir_Kind_Parenthesis_Expression => 1416, - Iir_Kind_Qualified_Expression => 1420, - Iir_Kind_Type_Conversion => 1425, - Iir_Kind_Allocator_By_Expression => 1429, - Iir_Kind_Allocator_By_Subtype => 1434, - Iir_Kind_Selected_Element => 1442, - Iir_Kind_Dereference => 1447, - Iir_Kind_Implicit_Dereference => 1452, - Iir_Kind_Slice_Name => 1459, - Iir_Kind_Indexed_Name => 1465, - Iir_Kind_Psl_Prev => 1471, - Iir_Kind_Psl_Stable => 1476, - Iir_Kind_Psl_Rose => 1481, - Iir_Kind_Psl_Fell => 1486, - Iir_Kind_Psl_Expression => 1488, - Iir_Kind_Sensitized_Process_Statement => 1509, - Iir_Kind_Process_Statement => 1529, - Iir_Kind_Concurrent_Simple_Signal_Assignment => 1542, - Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1555, - Iir_Kind_Concurrent_Selected_Signal_Assignment => 1569, - Iir_Kind_Concurrent_Assertion_Statement => 1577, - Iir_Kind_Concurrent_Procedure_Call_Statement => 1584, - Iir_Kind_Concurrent_Break_Statement => 1592, - Iir_Kind_Psl_Assert_Directive => 1605, - Iir_Kind_Psl_Assume_Directive => 1616, - Iir_Kind_Psl_Cover_Directive => 1628, - Iir_Kind_Psl_Restrict_Directive => 1639, - Iir_Kind_Block_Statement => 1653, - Iir_Kind_If_Generate_Statement => 1664, - Iir_Kind_Case_Generate_Statement => 1673, - Iir_Kind_For_Generate_Statement => 1682, - Iir_Kind_Component_Instantiation_Statement => 1693, - Iir_Kind_Psl_Default_Clock => 1697, - Iir_Kind_Generate_Statement_Body => 1708, - Iir_Kind_If_Generate_Else_Clause => 1714, - Iir_Kind_Simple_Simultaneous_Statement => 1721, - Iir_Kind_Simultaneous_Null_Statement => 1725, - Iir_Kind_Simultaneous_Procedural_Statement => 1736, - Iir_Kind_Simultaneous_Case_Statement => 1745, - Iir_Kind_Simultaneous_If_Statement => 1754, - Iir_Kind_Simultaneous_Elsif => 1760, - Iir_Kind_Simple_Signal_Assignment_Statement => 1771, - Iir_Kind_Conditional_Signal_Assignment_Statement => 1782, - Iir_Kind_Selected_Waveform_Assignment_Statement => 1794, - Iir_Kind_Null_Statement => 1798, - Iir_Kind_Assertion_Statement => 1805, - Iir_Kind_Report_Statement => 1811, - Iir_Kind_Wait_Statement => 1819, - Iir_Kind_Variable_Assignment_Statement => 1826, - Iir_Kind_Conditional_Variable_Assignment_Statement => 1833, - Iir_Kind_Return_Statement => 1839, - Iir_Kind_For_Loop_Statement => 1850, - Iir_Kind_While_Loop_Statement => 1861, - Iir_Kind_Next_Statement => 1868, - Iir_Kind_Exit_Statement => 1875, - Iir_Kind_Case_Statement => 1883, - Iir_Kind_Procedure_Call_Statement => 1889, - Iir_Kind_Break_Statement => 1896, - Iir_Kind_If_Statement => 1906, - Iir_Kind_Elsif => 1912, - Iir_Kind_Character_Literal => 1920, - Iir_Kind_Simple_Name => 1928, - Iir_Kind_Selected_Name => 1937, - Iir_Kind_Operator_Symbol => 1943, - Iir_Kind_Reference_Name => 1948, - Iir_Kind_External_Constant_Name => 1956, - Iir_Kind_External_Signal_Name => 1964, - Iir_Kind_External_Variable_Name => 1973, - Iir_Kind_Selected_By_All_Name => 1979, - Iir_Kind_Parenthesis_Name => 1984, - Iir_Kind_Package_Pathname => 1988, - Iir_Kind_Absolute_Pathname => 1989, - Iir_Kind_Relative_Pathname => 1990, - Iir_Kind_Pathname_Element => 1995, - Iir_Kind_Base_Attribute => 1997, - Iir_Kind_Subtype_Attribute => 2002, - Iir_Kind_Element_Attribute => 2007, - Iir_Kind_Across_Attribute => 2012, - Iir_Kind_Through_Attribute => 2017, - Iir_Kind_Nature_Reference_Attribute => 2021, - Iir_Kind_Left_Type_Attribute => 2026, - Iir_Kind_Right_Type_Attribute => 2031, - Iir_Kind_High_Type_Attribute => 2036, - Iir_Kind_Low_Type_Attribute => 2041, - Iir_Kind_Ascending_Type_Attribute => 2046, - Iir_Kind_Image_Attribute => 2052, - Iir_Kind_Value_Attribute => 2058, - Iir_Kind_Pos_Attribute => 2064, - Iir_Kind_Val_Attribute => 2070, - Iir_Kind_Succ_Attribute => 2076, - Iir_Kind_Pred_Attribute => 2082, - Iir_Kind_Leftof_Attribute => 2088, - Iir_Kind_Rightof_Attribute => 2094, - Iir_Kind_Signal_Slew_Attribute => 2102, - Iir_Kind_Quantity_Slew_Attribute => 2110, - Iir_Kind_Ramp_Attribute => 2118, - Iir_Kind_Zoh_Attribute => 2126, - Iir_Kind_Ltf_Attribute => 2134, - Iir_Kind_Ztf_Attribute => 2144, - Iir_Kind_Dot_Attribute => 2151, - Iir_Kind_Integ_Attribute => 2158, - Iir_Kind_Above_Attribute => 2166, - Iir_Kind_Quantity_Delayed_Attribute => 2174, - Iir_Kind_Delayed_Attribute => 2183, - Iir_Kind_Stable_Attribute => 2192, - Iir_Kind_Quiet_Attribute => 2201, - Iir_Kind_Transaction_Attribute => 2210, - Iir_Kind_Event_Attribute => 2214, - Iir_Kind_Active_Attribute => 2218, - Iir_Kind_Last_Event_Attribute => 2222, - Iir_Kind_Last_Active_Attribute => 2226, - Iir_Kind_Last_Value_Attribute => 2230, - Iir_Kind_Driving_Attribute => 2234, - Iir_Kind_Driving_Value_Attribute => 2238, - Iir_Kind_Behavior_Attribute => 2238, - Iir_Kind_Structure_Attribute => 2238, - Iir_Kind_Simple_Name_Attribute => 2245, - Iir_Kind_Instance_Name_Attribute => 2250, - Iir_Kind_Path_Name_Attribute => 2255, - Iir_Kind_Left_Array_Attribute => 2262, - Iir_Kind_Right_Array_Attribute => 2269, - Iir_Kind_High_Array_Attribute => 2276, - Iir_Kind_Low_Array_Attribute => 2283, - Iir_Kind_Length_Array_Attribute => 2290, - Iir_Kind_Ascending_Array_Attribute => 2297, - Iir_Kind_Range_Array_Attribute => 2304, - Iir_Kind_Reverse_Range_Array_Attribute => 2311, - Iir_Kind_Attribute_Name => 2320 + Iir_Kind_Vmode_Declaration => 608, + Iir_Kind_Vprop_Declaration => 620, + Iir_Kind_Vunit_Declaration => 633, + Iir_Kind_Package_Body => 641, + Iir_Kind_Architecture_Body => 654, + Iir_Kind_Type_Declaration => 661, + Iir_Kind_Anonymous_Type_Declaration => 667, + Iir_Kind_Subtype_Declaration => 674, + Iir_Kind_Nature_Declaration => 680, + Iir_Kind_Subnature_Declaration => 687, + Iir_Kind_Package_Header => 689, + Iir_Kind_Unit_Declaration => 698, + Iir_Kind_Library_Declaration => 706, + Iir_Kind_Component_Declaration => 716, + Iir_Kind_Attribute_Declaration => 723, + Iir_Kind_Group_Template_Declaration => 729, + Iir_Kind_Group_Declaration => 736, + Iir_Kind_Element_Declaration => 743, + Iir_Kind_Nature_Element_Declaration => 750, + Iir_Kind_Non_Object_Alias_Declaration => 758, + Iir_Kind_Psl_Declaration => 766, + Iir_Kind_Psl_Endpoint_Declaration => 780, + Iir_Kind_Enumeration_Literal => 791, + Iir_Kind_Function_Declaration => 816, + Iir_Kind_Procedure_Declaration => 840, + Iir_Kind_Function_Body => 850, + Iir_Kind_Procedure_Body => 861, + Iir_Kind_Terminal_Declaration => 870, + Iir_Kind_Object_Alias_Declaration => 881, + Iir_Kind_Free_Quantity_Declaration => 893, + Iir_Kind_Spectrum_Quantity_Declaration => 906, + Iir_Kind_Noise_Quantity_Declaration => 918, + Iir_Kind_Across_Quantity_Declaration => 934, + Iir_Kind_Through_Quantity_Declaration => 950, + Iir_Kind_File_Declaration => 964, + Iir_Kind_Guard_Signal_Declaration => 977, + Iir_Kind_Signal_Declaration => 994, + Iir_Kind_Variable_Declaration => 1007, + Iir_Kind_Constant_Declaration => 1021, + Iir_Kind_Iterator_Declaration => 1032, + Iir_Kind_Interface_Constant_Declaration => 1048, + Iir_Kind_Interface_Variable_Declaration => 1064, + Iir_Kind_Interface_Signal_Declaration => 1085, + Iir_Kind_Interface_File_Declaration => 1101, + Iir_Kind_Interface_Quantity_Declaration => 1117, + Iir_Kind_Interface_Terminal_Declaration => 1129, + Iir_Kind_Interface_Type_Declaration => 1139, + Iir_Kind_Interface_Package_Declaration => 1151, + Iir_Kind_Interface_Function_Declaration => 1168, + Iir_Kind_Interface_Procedure_Declaration => 1181, + Iir_Kind_Anonymous_Signal_Declaration => 1190, + Iir_Kind_Signal_Attribute_Declaration => 1193, + Iir_Kind_Identity_Operator => 1197, + Iir_Kind_Negation_Operator => 1201, + Iir_Kind_Absolute_Operator => 1205, + Iir_Kind_Not_Operator => 1209, + Iir_Kind_Implicit_Condition_Operator => 1213, + Iir_Kind_Condition_Operator => 1217, + Iir_Kind_Reduction_And_Operator => 1221, + Iir_Kind_Reduction_Or_Operator => 1225, + Iir_Kind_Reduction_Nand_Operator => 1229, + Iir_Kind_Reduction_Nor_Operator => 1233, + Iir_Kind_Reduction_Xor_Operator => 1237, + Iir_Kind_Reduction_Xnor_Operator => 1241, + Iir_Kind_And_Operator => 1246, + Iir_Kind_Or_Operator => 1251, + Iir_Kind_Nand_Operator => 1256, + Iir_Kind_Nor_Operator => 1261, + Iir_Kind_Xor_Operator => 1266, + Iir_Kind_Xnor_Operator => 1271, + Iir_Kind_Equality_Operator => 1276, + Iir_Kind_Inequality_Operator => 1281, + Iir_Kind_Less_Than_Operator => 1286, + Iir_Kind_Less_Than_Or_Equal_Operator => 1291, + Iir_Kind_Greater_Than_Operator => 1296, + Iir_Kind_Greater_Than_Or_Equal_Operator => 1301, + Iir_Kind_Match_Equality_Operator => 1306, + Iir_Kind_Match_Inequality_Operator => 1311, + Iir_Kind_Match_Less_Than_Operator => 1316, + Iir_Kind_Match_Less_Than_Or_Equal_Operator => 1321, + Iir_Kind_Match_Greater_Than_Operator => 1326, + Iir_Kind_Match_Greater_Than_Or_Equal_Operator => 1331, + Iir_Kind_Sll_Operator => 1336, + Iir_Kind_Sla_Operator => 1341, + Iir_Kind_Srl_Operator => 1346, + Iir_Kind_Sra_Operator => 1351, + Iir_Kind_Rol_Operator => 1356, + Iir_Kind_Ror_Operator => 1361, + Iir_Kind_Addition_Operator => 1366, + Iir_Kind_Substraction_Operator => 1371, + Iir_Kind_Concatenation_Operator => 1376, + Iir_Kind_Multiplication_Operator => 1381, + Iir_Kind_Division_Operator => 1386, + Iir_Kind_Modulus_Operator => 1391, + Iir_Kind_Remainder_Operator => 1396, + Iir_Kind_Exponentiation_Operator => 1401, + Iir_Kind_Function_Call => 1409, + Iir_Kind_Aggregate => 1416, + Iir_Kind_Parenthesis_Expression => 1419, + Iir_Kind_Qualified_Expression => 1423, + Iir_Kind_Type_Conversion => 1428, + Iir_Kind_Allocator_By_Expression => 1432, + Iir_Kind_Allocator_By_Subtype => 1437, + Iir_Kind_Selected_Element => 1445, + Iir_Kind_Dereference => 1450, + Iir_Kind_Implicit_Dereference => 1455, + Iir_Kind_Slice_Name => 1462, + Iir_Kind_Indexed_Name => 1468, + Iir_Kind_Psl_Prev => 1474, + Iir_Kind_Psl_Stable => 1479, + Iir_Kind_Psl_Rose => 1484, + Iir_Kind_Psl_Fell => 1489, + Iir_Kind_Psl_Expression => 1491, + Iir_Kind_Sensitized_Process_Statement => 1512, + Iir_Kind_Process_Statement => 1532, + Iir_Kind_Concurrent_Simple_Signal_Assignment => 1545, + Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1558, + Iir_Kind_Concurrent_Selected_Signal_Assignment => 1572, + Iir_Kind_Concurrent_Assertion_Statement => 1580, + Iir_Kind_Concurrent_Procedure_Call_Statement => 1587, + Iir_Kind_Concurrent_Break_Statement => 1595, + Iir_Kind_Psl_Assert_Directive => 1608, + Iir_Kind_Psl_Assume_Directive => 1619, + Iir_Kind_Psl_Cover_Directive => 1631, + Iir_Kind_Psl_Restrict_Directive => 1642, + Iir_Kind_Block_Statement => 1656, + Iir_Kind_If_Generate_Statement => 1667, + Iir_Kind_Case_Generate_Statement => 1676, + Iir_Kind_For_Generate_Statement => 1685, + Iir_Kind_Component_Instantiation_Statement => 1696, + Iir_Kind_Psl_Default_Clock => 1700, + Iir_Kind_Generate_Statement_Body => 1711, + Iir_Kind_If_Generate_Else_Clause => 1717, + Iir_Kind_Simple_Simultaneous_Statement => 1724, + Iir_Kind_Simultaneous_Null_Statement => 1728, + Iir_Kind_Simultaneous_Procedural_Statement => 1739, + Iir_Kind_Simultaneous_Case_Statement => 1748, + Iir_Kind_Simultaneous_If_Statement => 1757, + Iir_Kind_Simultaneous_Elsif => 1763, + Iir_Kind_Simple_Signal_Assignment_Statement => 1774, + Iir_Kind_Conditional_Signal_Assignment_Statement => 1785, + Iir_Kind_Selected_Waveform_Assignment_Statement => 1797, + Iir_Kind_Null_Statement => 1801, + Iir_Kind_Assertion_Statement => 1808, + Iir_Kind_Report_Statement => 1814, + Iir_Kind_Wait_Statement => 1822, + Iir_Kind_Variable_Assignment_Statement => 1829, + Iir_Kind_Conditional_Variable_Assignment_Statement => 1836, + Iir_Kind_Return_Statement => 1842, + Iir_Kind_For_Loop_Statement => 1853, + Iir_Kind_While_Loop_Statement => 1864, + Iir_Kind_Next_Statement => 1871, + Iir_Kind_Exit_Statement => 1878, + Iir_Kind_Case_Statement => 1886, + Iir_Kind_Procedure_Call_Statement => 1892, + Iir_Kind_Break_Statement => 1899, + Iir_Kind_If_Statement => 1909, + Iir_Kind_Elsif => 1915, + Iir_Kind_Character_Literal => 1923, + Iir_Kind_Simple_Name => 1931, + Iir_Kind_Selected_Name => 1940, + Iir_Kind_Operator_Symbol => 1946, + Iir_Kind_Reference_Name => 1951, + Iir_Kind_External_Constant_Name => 1959, + Iir_Kind_External_Signal_Name => 1967, + Iir_Kind_External_Variable_Name => 1976, + Iir_Kind_Selected_By_All_Name => 1982, + Iir_Kind_Parenthesis_Name => 1987, + Iir_Kind_Package_Pathname => 1991, + Iir_Kind_Absolute_Pathname => 1992, + Iir_Kind_Relative_Pathname => 1993, + Iir_Kind_Pathname_Element => 1998, + Iir_Kind_Base_Attribute => 2000, + Iir_Kind_Subtype_Attribute => 2005, + Iir_Kind_Element_Attribute => 2010, + Iir_Kind_Across_Attribute => 2015, + Iir_Kind_Through_Attribute => 2020, + Iir_Kind_Nature_Reference_Attribute => 2024, + Iir_Kind_Left_Type_Attribute => 2029, + Iir_Kind_Right_Type_Attribute => 2034, + Iir_Kind_High_Type_Attribute => 2039, + Iir_Kind_Low_Type_Attribute => 2044, + Iir_Kind_Ascending_Type_Attribute => 2049, + Iir_Kind_Image_Attribute => 2055, + Iir_Kind_Value_Attribute => 2061, + Iir_Kind_Pos_Attribute => 2067, + Iir_Kind_Val_Attribute => 2073, + Iir_Kind_Succ_Attribute => 2079, + Iir_Kind_Pred_Attribute => 2085, + Iir_Kind_Leftof_Attribute => 2091, + Iir_Kind_Rightof_Attribute => 2097, + Iir_Kind_Signal_Slew_Attribute => 2105, + Iir_Kind_Quantity_Slew_Attribute => 2113, + Iir_Kind_Ramp_Attribute => 2121, + Iir_Kind_Zoh_Attribute => 2129, + Iir_Kind_Ltf_Attribute => 2137, + Iir_Kind_Ztf_Attribute => 2147, + Iir_Kind_Dot_Attribute => 2154, + Iir_Kind_Integ_Attribute => 2161, + Iir_Kind_Above_Attribute => 2169, + Iir_Kind_Quantity_Delayed_Attribute => 2177, + Iir_Kind_Delayed_Attribute => 2186, + Iir_Kind_Stable_Attribute => 2195, + Iir_Kind_Quiet_Attribute => 2204, + Iir_Kind_Transaction_Attribute => 2213, + Iir_Kind_Event_Attribute => 2217, + Iir_Kind_Active_Attribute => 2221, + Iir_Kind_Last_Event_Attribute => 2225, + Iir_Kind_Last_Active_Attribute => 2229, + Iir_Kind_Last_Value_Attribute => 2233, + Iir_Kind_Driving_Attribute => 2237, + Iir_Kind_Driving_Value_Attribute => 2241, + Iir_Kind_Behavior_Attribute => 2241, + Iir_Kind_Structure_Attribute => 2241, + Iir_Kind_Simple_Name_Attribute => 2248, + Iir_Kind_Instance_Name_Attribute => 2253, + Iir_Kind_Path_Name_Attribute => 2258, + Iir_Kind_Left_Array_Attribute => 2265, + Iir_Kind_Right_Array_Attribute => 2272, + Iir_Kind_High_Array_Attribute => 2279, + Iir_Kind_Low_Array_Attribute => 2286, + Iir_Kind_Length_Array_Attribute => 2293, + Iir_Kind_Ascending_Array_Attribute => 2300, + Iir_Kind_Range_Array_Attribute => 2307, + Iir_Kind_Reverse_Range_Array_Attribute => 2314, + Iir_Kind_Attribute_Name => 2323 ); function Get_Fields_First (K : Iir_Kind) return Fields_Index is @@ -5960,6 +5968,8 @@ package body Vhdl.Nodes_Meta is return Get_Vunit_Item_Chain (N); when Field_Bound_Vunit_Chain => return Get_Bound_Vunit_Chain (N); + when Field_Verification_Block_Configuration => + return Get_Verification_Block_Configuration (N); when Field_Block_Configuration => return Get_Block_Configuration (N); when Field_Concurrent_Statement_Chain => @@ -6414,6 +6424,8 @@ package body Vhdl.Nodes_Meta is Set_Vunit_Item_Chain (N, V); when Field_Bound_Vunit_Chain => Set_Bound_Vunit_Chain (N, V); + when Field_Verification_Block_Configuration => + Set_Verification_Block_Configuration (N, V); when Field_Block_Configuration => Set_Block_Configuration (N, V); when Field_Concurrent_Statement_Chain => @@ -8215,6 +8227,19 @@ package body Vhdl.Nodes_Meta is end case; end Has_Bound_Vunit_Chain; + function Has_Verification_Block_Configuration (K : Iir_Kind) + return Boolean is + begin + case K is + when Iir_Kind_Vmode_Declaration + | Iir_Kind_Vprop_Declaration + | Iir_Kind_Vunit_Declaration => + return True; + when others => + return False; + end case; + end Has_Verification_Block_Configuration; + function Has_Block_Configuration (K : Iir_Kind) return Boolean is begin case K is diff --git a/src/vhdl/vhdl-nodes_meta.ads b/src/vhdl/vhdl-nodes_meta.ads index 8fd5644cd..80fe7d136 100644 --- a/src/vhdl/vhdl-nodes_meta.ads +++ b/src/vhdl/vhdl-nodes_meta.ads @@ -148,6 +148,7 @@ package Vhdl.Nodes_Meta is Field_Inherit_Spec_Chain, Field_Vunit_Item_Chain, Field_Bound_Vunit_Chain, + Field_Verification_Block_Configuration, Field_Block_Configuration, Field_Concurrent_Statement_Chain, Field_Chain, @@ -718,6 +719,8 @@ package Vhdl.Nodes_Meta is function Has_Inherit_Spec_Chain (K : Iir_Kind) return Boolean; function Has_Vunit_Item_Chain (K : Iir_Kind) return Boolean; function Has_Bound_Vunit_Chain (K : Iir_Kind) return Boolean; + function Has_Verification_Block_Configuration (K : Iir_Kind) + return Boolean; function Has_Block_Configuration (K : Iir_Kind) return Boolean; function Has_Concurrent_Statement_Chain (K : Iir_Kind) return Boolean; function Has_Chain (K : Iir_Kind) return Boolean; -- cgit v1.2.3