diff options
Diffstat (limited to 'src/vhdl')
-rw-r--r-- | src/vhdl/vhdl-configuration.adb | 2 | ||||
-rw-r--r-- | src/vhdl/vhdl-elocations.adb | 7 | ||||
-rw-r--r-- | src/vhdl/vhdl-elocations.ads | 4 | ||||
-rw-r--r-- | src/vhdl/vhdl-elocations_meta.adb | 12 | ||||
-rw-r--r-- | src/vhdl/vhdl-errors.adb | 6 | ||||
-rw-r--r-- | src/vhdl/vhdl-nodes.adb | 57 | ||||
-rw-r--r-- | src/vhdl/vhdl-nodes.ads | 64 | ||||
-rw-r--r-- | src/vhdl/vhdl-nodes_meta.adb | 655 | ||||
-rw-r--r-- | src/vhdl/vhdl-nodes_meta.ads | 6 | ||||
-rw-r--r-- | src/vhdl/vhdl-prints.adb | 13 | ||||
-rw-r--r-- | src/vhdl/vhdl-sem.adb | 3 |
11 files changed, 549 insertions, 280 deletions
diff --git a/src/vhdl/vhdl-configuration.adb b/src/vhdl/vhdl-configuration.adb index 8911c93dd..34f1dfbe7 100644 --- a/src/vhdl/vhdl-configuration.adb +++ b/src/vhdl/vhdl-configuration.adb @@ -801,6 +801,7 @@ package body Vhdl.Configuration is when Iir_Kind_Package_Declaration | Iir_Kind_Package_Instantiation_Declaration | Iir_Kind_Package_Body + | Iir_Kinds_Verification_Unit | Iir_Kind_Context_Declaration => null; end case; @@ -901,6 +902,7 @@ package body Vhdl.Configuration is | Iir_Kind_Package_Instantiation_Declaration | Iir_Kind_Package_Body | Iir_Kind_Entity_Declaration + | Iir_Kinds_Verification_Unit | Iir_Kind_Context_Declaration => null; end case; diff --git a/src/vhdl/vhdl-elocations.adb b/src/vhdl/vhdl-elocations.adb index 6965457d6..a42d5e009 100644 --- a/src/vhdl/vhdl-elocations.adb +++ b/src/vhdl/vhdl-elocations.adb @@ -266,6 +266,9 @@ package body Vhdl.Elocations is | Iir_Kind_Subtype_Definition | Iir_Kind_Scalar_Nature_Definition | Iir_Kind_Overload_List + | Iir_Kind_Vmode_Declaration + | Iir_Kind_Vprop_Declaration + | Iir_Kind_Vunit_Declaration | Iir_Kind_Nature_Declaration | Iir_Kind_Subnature_Declaration | Iir_Kind_Unit_Declaration @@ -469,9 +472,9 @@ package body Vhdl.Elocations is | Iir_Kind_If_Statement | Iir_Kind_Elsif => return Format_L3; - when Iir_Kind_Type_Declaration + when Iir_Kind_Architecture_Body + | Iir_Kind_Type_Declaration | Iir_Kind_Subtype_Declaration - | Iir_Kind_Architecture_Body | Iir_Kind_Function_Body | Iir_Kind_Procedure_Body | Iir_Kind_Sensitized_Process_Statement diff --git a/src/vhdl/vhdl-elocations.ads b/src/vhdl/vhdl-elocations.ads index 84be78e93..fd2401289 100644 --- a/src/vhdl/vhdl-elocations.ads +++ b/src/vhdl/vhdl-elocations.ads @@ -177,6 +177,10 @@ package Vhdl.Elocations is -- -- Get/Set_End_Location (Field2) + -- Iir_Kind_Vunit_Declaration (None) + -- Iir_Kind_Vmode_Declaration (None) + -- Iir_Kind_Vprop_Declaration (None) + -- Iir_Kind_Library_Declaration (None) -- Iir_Kind_Component_Declaration (L6) diff --git a/src/vhdl/vhdl-elocations_meta.adb b/src/vhdl/vhdl-elocations_meta.adb index 0b993f62c..d8e8eb69a 100644 --- a/src/vhdl/vhdl-elocations_meta.adb +++ b/src/vhdl/vhdl-elocations_meta.adb @@ -153,9 +153,6 @@ package body Vhdl.Elocations_Meta is | Iir_Kind_Attribute_Specification | Iir_Kind_Protected_Type_Declaration | Iir_Kind_Protected_Type_Body - | Iir_Kind_Type_Declaration - | Iir_Kind_Anonymous_Type_Declaration - | Iir_Kind_Subtype_Declaration | Iir_Kind_Entity_Declaration | Iir_Kind_Configuration_Declaration | Iir_Kind_Context_Declaration @@ -163,6 +160,9 @@ package body Vhdl.Elocations_Meta is | Iir_Kind_Package_Instantiation_Declaration | Iir_Kind_Package_Body | Iir_Kind_Architecture_Body + | Iir_Kind_Type_Declaration + | Iir_Kind_Anonymous_Type_Declaration + | Iir_Kind_Subtype_Declaration | Iir_Kind_Component_Declaration | Iir_Kind_Attribute_Declaration | Iir_Kind_Group_Template_Declaration @@ -244,10 +244,10 @@ package body Vhdl.Elocations_Meta is function Has_Is_Location (K : Iir_Kind) return Boolean is begin case K is - when Iir_Kind_Type_Declaration - | Iir_Kind_Subtype_Declaration - | Iir_Kind_Entity_Declaration + when Iir_Kind_Entity_Declaration | Iir_Kind_Architecture_Body + | Iir_Kind_Type_Declaration + | Iir_Kind_Subtype_Declaration | Iir_Kind_Function_Body | Iir_Kind_Procedure_Body | Iir_Kind_Sensitized_Process_Statement diff --git a/src/vhdl/vhdl-errors.adb b/src/vhdl/vhdl-errors.adb index ada8258af..b9183fbbc 100644 --- a/src/vhdl/vhdl-errors.adb +++ b/src/vhdl/vhdl-errors.adb @@ -512,6 +512,12 @@ package body Vhdl.Errors is return Disp_Identifier (Node, "context"); when Iir_Kind_Package_Instantiation_Declaration => return Disp_Identifier (Node, "instantiation package"); + when Iir_Kind_Vmode_Declaration => + return Disp_Identifier (Node, "vmode"); + when Iir_Kind_Vprop_Declaration => + return Disp_Identifier (Node, "vprop"); + when Iir_Kind_Vunit_Declaration => + return Disp_Identifier (Node, "vunit"); when Iir_Kind_Package_Header => return "package header"; diff --git a/src/vhdl/vhdl-nodes.adb b/src/vhdl/vhdl-nodes.adb index 0755f61dc..5bf1e00ed 100644 --- a/src/vhdl/vhdl-nodes.adb +++ b/src/vhdl/vhdl-nodes.adb @@ -1032,14 +1032,17 @@ package body Vhdl.Nodes is | Iir_Kind_Protected_Type_Body | Iir_Kind_Wildcard_Type_Definition | Iir_Kind_Overload_List + | Iir_Kind_Configuration_Declaration + | Iir_Kind_Context_Declaration + | Iir_Kind_Vmode_Declaration + | Iir_Kind_Vprop_Declaration + | Iir_Kind_Vunit_Declaration + | Iir_Kind_Package_Body | Iir_Kind_Type_Declaration | Iir_Kind_Anonymous_Type_Declaration | Iir_Kind_Subtype_Declaration | Iir_Kind_Nature_Declaration | Iir_Kind_Subnature_Declaration - | Iir_Kind_Configuration_Declaration - | Iir_Kind_Context_Declaration - | Iir_Kind_Package_Body | Iir_Kind_Unit_Declaration | Iir_Kind_Library_Declaration | Iir_Kind_Attribute_Declaration @@ -2616,6 +2619,54 @@ package body Vhdl.Nodes is Set_Flag3 (Decl, Flag); end Set_Need_Instance_Bodies; + function Get_Hierarchical_Name (Vunit : Iir) return Iir is + begin + pragma Assert (Vunit /= Null_Iir); + pragma Assert (Has_Hierarchical_Name (Get_Kind (Vunit)), + "no field Hierarchical_Name"); + return Get_Field1 (Vunit); + end Get_Hierarchical_Name; + + procedure Set_Hierarchical_Name (Vunit : Iir; Name : Iir) is + begin + pragma Assert (Vunit /= Null_Iir); + pragma Assert (Has_Hierarchical_Name (Get_Kind (Vunit)), + "no field Hierarchical_Name"); + Set_Field1 (Vunit, Name); + end Set_Hierarchical_Name; + + function Get_Inherit_Spec_Chain (Vunit : Iir) return Iir is + begin + pragma Assert (Vunit /= Null_Iir); + pragma Assert (Has_Inherit_Spec_Chain (Get_Kind (Vunit)), + "no field Inherit_Spec_Chain"); + return Get_Field2 (Vunit); + end Get_Inherit_Spec_Chain; + + procedure Set_Inherit_Spec_Chain (Vunit : Iir; Chain : Iir) is + begin + pragma Assert (Vunit /= Null_Iir); + pragma Assert (Has_Inherit_Spec_Chain (Get_Kind (Vunit)), + "no field Inherit_Spec_Chain"); + Set_Field2 (Vunit, Chain); + end Set_Inherit_Spec_Chain; + + function Get_Vunit_Item_Chain (Vunit : Iir) return Iir is + begin + pragma Assert (Vunit /= Null_Iir); + pragma Assert (Has_Vunit_Item_Chain (Get_Kind (Vunit)), + "no field Vunit_Item_Chain"); + return Get_Field4 (Vunit); + end Get_Vunit_Item_Chain; + + procedure Set_Vunit_Item_Chain (Vunit : Iir; Chain : Iir) is + begin + pragma Assert (Vunit /= Null_Iir); + pragma Assert (Has_Vunit_Item_Chain (Get_Kind (Vunit)), + "no field Vunit_Item_Chain"); + Set_Field4 (Vunit, Chain); + end Set_Vunit_Item_Chain; + 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 d34c325ae..744e5c88c 100644 --- a/src/vhdl/vhdl-nodes.ads +++ b/src/vhdl/vhdl-nodes.ads @@ -1052,6 +1052,31 @@ package Vhdl.Nodes is -- -- Get/Set_Visible_Flag (Flag4) + -- Iir_Kind_Vunit_Declaration (Short) + -- Iir_Kind_Vmode_Declaration (Short) + -- Iir_Kind_Vprop_Declaration (Short) + -- + -- Get/Set_Parent (Field0) + -- Get/Set_Design_Unit (Alias Field0) + -- + -- Get/Set_Identifier (Field3) + -- + -- Get/Set_Hierarchical_Name (Field1) + -- + -- Get/Set_Inherit_Spec_Chain (Field2) + -- + -- Get/Set_Vunit_Item_Chain (Field4) + -- + -- Get/Set_Visible_Flag (Flag4) + -- + -- Get/Set_Is_Within_Flag (Flag5) + -- + -- Get/Set_End_Has_Reserved_Id (Flag8) + -- + -- Get/Set_End_Has_Identifier (Flag9) + -- + -- Get/Set_Has_Begin (Flag10) + -- Iir_Kind_Component_Declaration (Medium) -- -- Get/Set_Parent (Field0) @@ -4236,18 +4261,22 @@ package Vhdl.Nodes is Iir_Kind_Overload_List, -- used internally by sem_expr. -- Declarations. - Iir_Kind_Type_Declaration, - Iir_Kind_Anonymous_Type_Declaration, - Iir_Kind_Subtype_Declaration, - Iir_Kind_Nature_Declaration, - Iir_Kind_Subnature_Declaration, Iir_Kind_Entity_Declaration, Iir_Kind_Configuration_Declaration, Iir_Kind_Context_Declaration, Iir_Kind_Package_Declaration, Iir_Kind_Package_Instantiation_Declaration, + Iir_Kind_Vmode_Declaration, + Iir_Kind_Vprop_Declaration, + Iir_Kind_Vunit_Declaration, Iir_Kind_Package_Body, Iir_Kind_Architecture_Body, + + Iir_Kind_Type_Declaration, + Iir_Kind_Anonymous_Type_Declaration, + Iir_Kind_Subtype_Declaration, + Iir_Kind_Nature_Declaration, + Iir_Kind_Subnature_Declaration, Iir_Kind_Package_Header, Iir_Kind_Unit_Declaration, Iir_Kind_Library_Declaration, @@ -5155,6 +5184,9 @@ package Vhdl.Nodes is --Iir_Kind_Context_Declaration --Iir_Kind_Package_Declaration --Iir_Kind_Package_Instantiation_Declaration + --Iir_Kind_Vmode_Declaration + --Iir_Kind_Vprop_Declaration + --Iir_Kind_Vunit_Declaration --Iir_Kind_Package_Body Iir_Kind_Architecture_Body; @@ -5163,7 +5195,10 @@ package Vhdl.Nodes is --Iir_Kind_Configuration_Declaration --Iir_Kind_Context_Declaration --Iir_Kind_Package_Declaration - Iir_Kind_Package_Instantiation_Declaration; + --Iir_Kind_Package_Instantiation_Declaration + --Iir_Kind_Vmode_Declaration + --Iir_Kind_Vprop_Declaration + Iir_Kind_Vunit_Declaration; subtype Iir_Kinds_Secondary_Unit is Iir_Kind range Iir_Kind_Package_Body .. @@ -5173,6 +5208,11 @@ package Vhdl.Nodes is Iir_Kind_Package_Declaration .. Iir_Kind_Package_Instantiation_Declaration; + subtype Iir_Kinds_Verification_Unit is Iir_Kind range + Iir_Kind_Vmode_Declaration .. + --Iir_Kind_Vprop_Declaration + Iir_Kind_Vunit_Declaration; + -- Note: does not include iir_kind_enumeration_literal since it is -- considered as a declaration. subtype Iir_Kinds_Literal is Iir_Kind range @@ -6496,6 +6536,18 @@ package Vhdl.Nodes is function Get_Need_Instance_Bodies (Decl : Iir) return Boolean; procedure Set_Need_Instance_Bodies (Decl : Iir; Flag : Boolean); + -- Field: Field1 + function Get_Hierarchical_Name (Vunit : Iir) return Iir; + procedure Set_Hierarchical_Name (Vunit : Iir; Name : Iir); + + -- Field: Field2 Chain + function Get_Inherit_Spec_Chain (Vunit : Iir) return Iir; + procedure Set_Inherit_Spec_Chain (Vunit : Iir; Chain : Iir); + + -- Field: Field4 Chain + function Get_Vunit_Item_Chain (Vunit : Iir) return Iir; + procedure Set_Vunit_Item_Chain (Vunit : Iir; Chain : Iir); + -- Field: Field5 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 9b3723c58..ad17a56ee 100644 --- a/src/vhdl/vhdl-nodes_meta.adb +++ b/src/vhdl/vhdl-nodes_meta.adb @@ -100,6 +100,9 @@ package body Vhdl.Nodes_Meta is Field_Need_Body => Type_Boolean, Field_Macro_Expanded_Flag => Type_Boolean, Field_Need_Instance_Bodies => Type_Boolean, + Field_Hierarchical_Name => Type_Iir, + Field_Inherit_Spec_Chain => Type_Iir, + Field_Vunit_Item_Chain => Type_Iir, Field_Block_Configuration => Type_Iir, Field_Concurrent_Statement_Chain => Type_Iir, Field_Chain => Type_Iir, @@ -517,6 +520,12 @@ package body Vhdl.Nodes_Meta is return "macro_expanded_flag"; when Field_Need_Instance_Bodies => return "need_instance_bodies"; + when Field_Hierarchical_Name => + return "hierarchical_name"; + when Field_Inherit_Spec_Chain => + return "inherit_spec_chain"; + when Field_Vunit_Item_Chain => + return "vunit_item_chain"; when Field_Block_Configuration => return "block_configuration"; when Field_Concurrent_Statement_Chain => @@ -1159,16 +1168,6 @@ package body Vhdl.Nodes_Meta is return "scalar_nature_definition"; when Iir_Kind_Overload_List => return "overload_list"; - when Iir_Kind_Type_Declaration => - return "type_declaration"; - when Iir_Kind_Anonymous_Type_Declaration => - return "anonymous_type_declaration"; - when Iir_Kind_Subtype_Declaration => - return "subtype_declaration"; - when Iir_Kind_Nature_Declaration => - return "nature_declaration"; - when Iir_Kind_Subnature_Declaration => - return "subnature_declaration"; when Iir_Kind_Entity_Declaration => return "entity_declaration"; when Iir_Kind_Configuration_Declaration => @@ -1179,10 +1178,26 @@ package body Vhdl.Nodes_Meta is return "package_declaration"; when Iir_Kind_Package_Instantiation_Declaration => return "package_instantiation_declaration"; + when Iir_Kind_Vmode_Declaration => + return "vmode_declaration"; + when Iir_Kind_Vprop_Declaration => + return "vprop_declaration"; + when Iir_Kind_Vunit_Declaration => + return "vunit_declaration"; when Iir_Kind_Package_Body => return "package_body"; when Iir_Kind_Architecture_Body => return "architecture_body"; + when Iir_Kind_Type_Declaration => + return "type_declaration"; + when Iir_Kind_Anonymous_Type_Declaration => + return "anonymous_type_declaration"; + when Iir_Kind_Subtype_Declaration => + return "subtype_declaration"; + when Iir_Kind_Nature_Declaration => + return "nature_declaration"; + when Iir_Kind_Subnature_Declaration => + return "subnature_declaration"; when Iir_Kind_Package_Header => return "package_header"; when Iir_Kind_Unit_Declaration => @@ -1725,6 +1740,12 @@ package body Vhdl.Nodes_Meta is return Attr_None; when Field_Need_Instance_Bodies => return Attr_None; + when Field_Hierarchical_Name => + return Attr_None; + when Field_Inherit_Spec_Chain => + return Attr_Chain; + when Field_Vunit_Item_Chain => + return Attr_Chain; when Field_Block_Configuration => return Attr_None; when Field_Concurrent_Statement_Chain => @@ -2763,43 +2784,6 @@ package body Vhdl.Nodes_Meta is Field_Through_Type, -- Iir_Kind_Overload_List Field_Overload_List, - -- Iir_Kind_Type_Declaration - Field_Identifier, - Field_Visible_Flag, - Field_Use_Flag, - Field_Parent, - Field_Type_Definition, - Field_Chain, - Field_Incomplete_Type_Declaration, - -- Iir_Kind_Anonymous_Type_Declaration - Field_Identifier, - Field_Parent, - Field_Type_Definition, - Field_Chain, - Field_Subtype_Definition, - Field_Incomplete_Type_Declaration, - -- Iir_Kind_Subtype_Declaration - Field_Identifier, - Field_Visible_Flag, - Field_Use_Flag, - Field_Parent, - Field_Chain, - Field_Subtype_Indication, - Field_Type, - -- Iir_Kind_Nature_Declaration - Field_Identifier, - Field_Visible_Flag, - Field_Use_Flag, - Field_Parent, - Field_Nature, - Field_Chain, - -- Iir_Kind_Subnature_Declaration - Field_Identifier, - Field_Visible_Flag, - Field_Use_Flag, - Field_Parent, - Field_Nature, - Field_Chain, -- Iir_Kind_Entity_Declaration Field_Identifier, Field_Has_Begin, @@ -2861,6 +2845,39 @@ package body Vhdl.Nodes_Meta is Field_Chain, Field_Attribute_Value_Chain, Field_Instance_Package_Body, + -- Iir_Kind_Vmode_Declaration + Field_Identifier, + Field_Has_Begin, + Field_Visible_Flag, + Field_Is_Within_Flag, + Field_End_Has_Reserved_Id, + Field_End_Has_Identifier, + Field_Parent, + Field_Hierarchical_Name, + Field_Inherit_Spec_Chain, + Field_Vunit_Item_Chain, + -- Iir_Kind_Vprop_Declaration + Field_Identifier, + Field_Has_Begin, + Field_Visible_Flag, + Field_Is_Within_Flag, + Field_End_Has_Reserved_Id, + Field_End_Has_Identifier, + Field_Parent, + Field_Hierarchical_Name, + Field_Inherit_Spec_Chain, + Field_Vunit_Item_Chain, + -- Iir_Kind_Vunit_Declaration + Field_Identifier, + Field_Has_Begin, + Field_Visible_Flag, + Field_Is_Within_Flag, + Field_End_Has_Reserved_Id, + Field_End_Has_Identifier, + Field_Parent, + Field_Hierarchical_Name, + Field_Inherit_Spec_Chain, + Field_Vunit_Item_Chain, -- Iir_Kind_Package_Body Field_Identifier, Field_End_Has_Reserved_Id, @@ -2883,6 +2900,43 @@ package body Vhdl.Nodes_Meta is Field_Concurrent_Statement_Chain, Field_Attribute_Value_Chain, Field_Default_Configuration_Declaration, + -- Iir_Kind_Type_Declaration + Field_Identifier, + Field_Visible_Flag, + Field_Use_Flag, + Field_Parent, + Field_Type_Definition, + Field_Chain, + Field_Incomplete_Type_Declaration, + -- Iir_Kind_Anonymous_Type_Declaration + Field_Identifier, + Field_Parent, + Field_Type_Definition, + Field_Chain, + Field_Subtype_Definition, + Field_Incomplete_Type_Declaration, + -- Iir_Kind_Subtype_Declaration + Field_Identifier, + Field_Visible_Flag, + Field_Use_Flag, + Field_Parent, + Field_Chain, + Field_Subtype_Indication, + Field_Type, + -- Iir_Kind_Nature_Declaration + Field_Identifier, + Field_Visible_Flag, + Field_Use_Flag, + Field_Parent, + Field_Nature, + Field_Chain, + -- Iir_Kind_Subnature_Declaration + Field_Identifier, + Field_Visible_Flag, + Field_Use_Flag, + Field_Parent, + Field_Nature, + Field_Chain, -- Iir_Kind_Package_Header Field_Generic_Chain, Field_Generic_Map_Aspect_Chain, @@ -4532,205 +4586,208 @@ package body Vhdl.Nodes_Meta is Iir_Kind_Subtype_Definition => 464, Iir_Kind_Scalar_Nature_Definition => 468, Iir_Kind_Overload_List => 469, - Iir_Kind_Type_Declaration => 476, - Iir_Kind_Anonymous_Type_Declaration => 482, - Iir_Kind_Subtype_Declaration => 489, - Iir_Kind_Nature_Declaration => 495, - Iir_Kind_Subnature_Declaration => 501, - Iir_Kind_Entity_Declaration => 513, - Iir_Kind_Configuration_Declaration => 522, - Iir_Kind_Context_Declaration => 528, - Iir_Kind_Package_Declaration => 543, - Iir_Kind_Package_Instantiation_Declaration => 557, - Iir_Kind_Package_Body => 565, - Iir_Kind_Architecture_Body => 577, - Iir_Kind_Package_Header => 579, - Iir_Kind_Unit_Declaration => 588, - Iir_Kind_Library_Declaration => 595, - Iir_Kind_Component_Declaration => 605, - Iir_Kind_Attribute_Declaration => 612, - Iir_Kind_Group_Template_Declaration => 618, - Iir_Kind_Group_Declaration => 625, - Iir_Kind_Element_Declaration => 632, - Iir_Kind_Non_Object_Alias_Declaration => 640, - Iir_Kind_Psl_Declaration => 648, - Iir_Kind_Psl_Endpoint_Declaration => 662, - Iir_Kind_Terminal_Declaration => 669, - Iir_Kind_Free_Quantity_Declaration => 680, - Iir_Kind_Across_Quantity_Declaration => 692, - Iir_Kind_Through_Quantity_Declaration => 704, - Iir_Kind_Enumeration_Literal => 715, - Iir_Kind_Function_Declaration => 740, - Iir_Kind_Procedure_Declaration => 764, - Iir_Kind_Function_Body => 774, - Iir_Kind_Procedure_Body => 785, - Iir_Kind_Object_Alias_Declaration => 796, - Iir_Kind_File_Declaration => 810, - Iir_Kind_Guard_Signal_Declaration => 823, - Iir_Kind_Signal_Declaration => 840, - Iir_Kind_Variable_Declaration => 853, - Iir_Kind_Constant_Declaration => 867, - Iir_Kind_Iterator_Declaration => 878, - Iir_Kind_Interface_Constant_Declaration => 894, - Iir_Kind_Interface_Variable_Declaration => 910, - Iir_Kind_Interface_Signal_Declaration => 931, - Iir_Kind_Interface_File_Declaration => 947, - Iir_Kind_Interface_Type_Declaration => 957, - Iir_Kind_Interface_Package_Declaration => 969, - Iir_Kind_Interface_Function_Declaration => 986, - Iir_Kind_Interface_Procedure_Declaration => 999, - Iir_Kind_Anonymous_Signal_Declaration => 1008, - Iir_Kind_Signal_Attribute_Declaration => 1011, - Iir_Kind_Identity_Operator => 1015, - Iir_Kind_Negation_Operator => 1019, - Iir_Kind_Absolute_Operator => 1023, - Iir_Kind_Not_Operator => 1027, - Iir_Kind_Implicit_Condition_Operator => 1031, - Iir_Kind_Condition_Operator => 1035, - Iir_Kind_Reduction_And_Operator => 1039, - Iir_Kind_Reduction_Or_Operator => 1043, - Iir_Kind_Reduction_Nand_Operator => 1047, - Iir_Kind_Reduction_Nor_Operator => 1051, - Iir_Kind_Reduction_Xor_Operator => 1055, - Iir_Kind_Reduction_Xnor_Operator => 1059, - Iir_Kind_And_Operator => 1064, - Iir_Kind_Or_Operator => 1069, - Iir_Kind_Nand_Operator => 1074, - Iir_Kind_Nor_Operator => 1079, - Iir_Kind_Xor_Operator => 1084, - Iir_Kind_Xnor_Operator => 1089, - Iir_Kind_Equality_Operator => 1094, - Iir_Kind_Inequality_Operator => 1099, - Iir_Kind_Less_Than_Operator => 1104, - Iir_Kind_Less_Than_Or_Equal_Operator => 1109, - Iir_Kind_Greater_Than_Operator => 1114, - Iir_Kind_Greater_Than_Or_Equal_Operator => 1119, - Iir_Kind_Match_Equality_Operator => 1124, - Iir_Kind_Match_Inequality_Operator => 1129, - Iir_Kind_Match_Less_Than_Operator => 1134, - Iir_Kind_Match_Less_Than_Or_Equal_Operator => 1139, - Iir_Kind_Match_Greater_Than_Operator => 1144, - Iir_Kind_Match_Greater_Than_Or_Equal_Operator => 1149, - Iir_Kind_Sll_Operator => 1154, - Iir_Kind_Sla_Operator => 1159, - Iir_Kind_Srl_Operator => 1164, - Iir_Kind_Sra_Operator => 1169, - Iir_Kind_Rol_Operator => 1174, - Iir_Kind_Ror_Operator => 1179, - Iir_Kind_Addition_Operator => 1184, - Iir_Kind_Substraction_Operator => 1189, - Iir_Kind_Concatenation_Operator => 1194, - Iir_Kind_Multiplication_Operator => 1199, - Iir_Kind_Division_Operator => 1204, - Iir_Kind_Modulus_Operator => 1209, - Iir_Kind_Remainder_Operator => 1214, - Iir_Kind_Exponentiation_Operator => 1219, - Iir_Kind_Function_Call => 1227, - Iir_Kind_Aggregate => 1234, - Iir_Kind_Parenthesis_Expression => 1237, - Iir_Kind_Qualified_Expression => 1241, - Iir_Kind_Type_Conversion => 1246, - Iir_Kind_Allocator_By_Expression => 1250, - Iir_Kind_Allocator_By_Subtype => 1255, - Iir_Kind_Selected_Element => 1263, - Iir_Kind_Dereference => 1268, - Iir_Kind_Implicit_Dereference => 1273, - Iir_Kind_Slice_Name => 1280, - Iir_Kind_Indexed_Name => 1286, - Iir_Kind_Psl_Expression => 1288, - Iir_Kind_Sensitized_Process_Statement => 1309, - Iir_Kind_Process_Statement => 1329, - Iir_Kind_Concurrent_Simple_Signal_Assignment => 1341, - Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1353, - Iir_Kind_Concurrent_Selected_Signal_Assignment => 1366, - Iir_Kind_Concurrent_Assertion_Statement => 1374, - Iir_Kind_Concurrent_Procedure_Call_Statement => 1381, - Iir_Kind_Psl_Assert_Directive => 1394, - Iir_Kind_Psl_Assume_Directive => 1405, - Iir_Kind_Psl_Cover_Directive => 1417, - Iir_Kind_Psl_Restrict_Directive => 1428, - Iir_Kind_Block_Statement => 1442, - Iir_Kind_If_Generate_Statement => 1453, - Iir_Kind_Case_Generate_Statement => 1462, - Iir_Kind_For_Generate_Statement => 1471, - Iir_Kind_Component_Instantiation_Statement => 1482, - Iir_Kind_Psl_Default_Clock => 1486, - Iir_Kind_Simple_Simultaneous_Statement => 1493, - Iir_Kind_Generate_Statement_Body => 1504, - Iir_Kind_If_Generate_Else_Clause => 1510, - Iir_Kind_Simple_Signal_Assignment_Statement => 1520, - Iir_Kind_Conditional_Signal_Assignment_Statement => 1530, - Iir_Kind_Selected_Waveform_Assignment_Statement => 1541, - Iir_Kind_Null_Statement => 1545, - Iir_Kind_Assertion_Statement => 1552, - Iir_Kind_Report_Statement => 1558, - Iir_Kind_Wait_Statement => 1566, - Iir_Kind_Variable_Assignment_Statement => 1573, - Iir_Kind_Conditional_Variable_Assignment_Statement => 1580, - Iir_Kind_Return_Statement => 1586, - Iir_Kind_For_Loop_Statement => 1595, - Iir_Kind_While_Loop_Statement => 1604, - Iir_Kind_Next_Statement => 1611, - Iir_Kind_Exit_Statement => 1618, - Iir_Kind_Case_Statement => 1626, - Iir_Kind_Procedure_Call_Statement => 1632, - Iir_Kind_If_Statement => 1642, - Iir_Kind_Elsif => 1648, - Iir_Kind_Character_Literal => 1656, - Iir_Kind_Simple_Name => 1664, - Iir_Kind_Selected_Name => 1673, - Iir_Kind_Operator_Symbol => 1679, - Iir_Kind_Reference_Name => 1684, - Iir_Kind_External_Constant_Name => 1692, - Iir_Kind_External_Signal_Name => 1700, - Iir_Kind_External_Variable_Name => 1709, - Iir_Kind_Selected_By_All_Name => 1715, - Iir_Kind_Parenthesis_Name => 1720, - Iir_Kind_Package_Pathname => 1724, - Iir_Kind_Absolute_Pathname => 1725, - Iir_Kind_Relative_Pathname => 1726, - Iir_Kind_Pathname_Element => 1731, - Iir_Kind_Base_Attribute => 1733, - Iir_Kind_Subtype_Attribute => 1738, - Iir_Kind_Element_Attribute => 1743, - Iir_Kind_Left_Type_Attribute => 1748, - Iir_Kind_Right_Type_Attribute => 1753, - Iir_Kind_High_Type_Attribute => 1758, - Iir_Kind_Low_Type_Attribute => 1763, - Iir_Kind_Ascending_Type_Attribute => 1768, - Iir_Kind_Image_Attribute => 1774, - Iir_Kind_Value_Attribute => 1780, - Iir_Kind_Pos_Attribute => 1786, - Iir_Kind_Val_Attribute => 1792, - Iir_Kind_Succ_Attribute => 1798, - Iir_Kind_Pred_Attribute => 1804, - Iir_Kind_Leftof_Attribute => 1810, - Iir_Kind_Rightof_Attribute => 1816, - Iir_Kind_Delayed_Attribute => 1825, - Iir_Kind_Stable_Attribute => 1834, - Iir_Kind_Quiet_Attribute => 1843, - Iir_Kind_Transaction_Attribute => 1852, - Iir_Kind_Event_Attribute => 1856, - Iir_Kind_Active_Attribute => 1860, - Iir_Kind_Last_Event_Attribute => 1864, - Iir_Kind_Last_Active_Attribute => 1868, - Iir_Kind_Last_Value_Attribute => 1872, - Iir_Kind_Driving_Attribute => 1876, - Iir_Kind_Driving_Value_Attribute => 1880, - Iir_Kind_Behavior_Attribute => 1880, - Iir_Kind_Structure_Attribute => 1880, - Iir_Kind_Simple_Name_Attribute => 1887, - Iir_Kind_Instance_Name_Attribute => 1892, - Iir_Kind_Path_Name_Attribute => 1897, - Iir_Kind_Left_Array_Attribute => 1904, - Iir_Kind_Right_Array_Attribute => 1911, - Iir_Kind_High_Array_Attribute => 1918, - Iir_Kind_Low_Array_Attribute => 1925, - Iir_Kind_Length_Array_Attribute => 1932, - Iir_Kind_Ascending_Array_Attribute => 1939, - Iir_Kind_Range_Array_Attribute => 1946, - Iir_Kind_Reverse_Range_Array_Attribute => 1953, - Iir_Kind_Attribute_Name => 1962 + Iir_Kind_Entity_Declaration => 481, + Iir_Kind_Configuration_Declaration => 490, + Iir_Kind_Context_Declaration => 496, + Iir_Kind_Package_Declaration => 511, + Iir_Kind_Package_Instantiation_Declaration => 525, + Iir_Kind_Vmode_Declaration => 535, + Iir_Kind_Vprop_Declaration => 545, + Iir_Kind_Vunit_Declaration => 555, + Iir_Kind_Package_Body => 563, + Iir_Kind_Architecture_Body => 575, + Iir_Kind_Type_Declaration => 582, + Iir_Kind_Anonymous_Type_Declaration => 588, + Iir_Kind_Subtype_Declaration => 595, + Iir_Kind_Nature_Declaration => 601, + Iir_Kind_Subnature_Declaration => 607, + Iir_Kind_Package_Header => 609, + Iir_Kind_Unit_Declaration => 618, + Iir_Kind_Library_Declaration => 625, + Iir_Kind_Component_Declaration => 635, + Iir_Kind_Attribute_Declaration => 642, + Iir_Kind_Group_Template_Declaration => 648, + Iir_Kind_Group_Declaration => 655, + Iir_Kind_Element_Declaration => 662, + Iir_Kind_Non_Object_Alias_Declaration => 670, + Iir_Kind_Psl_Declaration => 678, + Iir_Kind_Psl_Endpoint_Declaration => 692, + Iir_Kind_Terminal_Declaration => 699, + Iir_Kind_Free_Quantity_Declaration => 710, + Iir_Kind_Across_Quantity_Declaration => 722, + Iir_Kind_Through_Quantity_Declaration => 734, + Iir_Kind_Enumeration_Literal => 745, + Iir_Kind_Function_Declaration => 770, + Iir_Kind_Procedure_Declaration => 794, + Iir_Kind_Function_Body => 804, + Iir_Kind_Procedure_Body => 815, + Iir_Kind_Object_Alias_Declaration => 826, + Iir_Kind_File_Declaration => 840, + Iir_Kind_Guard_Signal_Declaration => 853, + Iir_Kind_Signal_Declaration => 870, + Iir_Kind_Variable_Declaration => 883, + Iir_Kind_Constant_Declaration => 897, + Iir_Kind_Iterator_Declaration => 908, + Iir_Kind_Interface_Constant_Declaration => 924, + Iir_Kind_Interface_Variable_Declaration => 940, + Iir_Kind_Interface_Signal_Declaration => 961, + Iir_Kind_Interface_File_Declaration => 977, + Iir_Kind_Interface_Type_Declaration => 987, + Iir_Kind_Interface_Package_Declaration => 999, + Iir_Kind_Interface_Function_Declaration => 1016, + Iir_Kind_Interface_Procedure_Declaration => 1029, + Iir_Kind_Anonymous_Signal_Declaration => 1038, + Iir_Kind_Signal_Attribute_Declaration => 1041, + Iir_Kind_Identity_Operator => 1045, + Iir_Kind_Negation_Operator => 1049, + Iir_Kind_Absolute_Operator => 1053, + Iir_Kind_Not_Operator => 1057, + Iir_Kind_Implicit_Condition_Operator => 1061, + Iir_Kind_Condition_Operator => 1065, + Iir_Kind_Reduction_And_Operator => 1069, + Iir_Kind_Reduction_Or_Operator => 1073, + Iir_Kind_Reduction_Nand_Operator => 1077, + Iir_Kind_Reduction_Nor_Operator => 1081, + Iir_Kind_Reduction_Xor_Operator => 1085, + Iir_Kind_Reduction_Xnor_Operator => 1089, + Iir_Kind_And_Operator => 1094, + Iir_Kind_Or_Operator => 1099, + Iir_Kind_Nand_Operator => 1104, + Iir_Kind_Nor_Operator => 1109, + Iir_Kind_Xor_Operator => 1114, + Iir_Kind_Xnor_Operator => 1119, + Iir_Kind_Equality_Operator => 1124, + Iir_Kind_Inequality_Operator => 1129, + Iir_Kind_Less_Than_Operator => 1134, + Iir_Kind_Less_Than_Or_Equal_Operator => 1139, + Iir_Kind_Greater_Than_Operator => 1144, + Iir_Kind_Greater_Than_Or_Equal_Operator => 1149, + Iir_Kind_Match_Equality_Operator => 1154, + Iir_Kind_Match_Inequality_Operator => 1159, + Iir_Kind_Match_Less_Than_Operator => 1164, + Iir_Kind_Match_Less_Than_Or_Equal_Operator => 1169, + Iir_Kind_Match_Greater_Than_Operator => 1174, + Iir_Kind_Match_Greater_Than_Or_Equal_Operator => 1179, + Iir_Kind_Sll_Operator => 1184, + Iir_Kind_Sla_Operator => 1189, + Iir_Kind_Srl_Operator => 1194, + Iir_Kind_Sra_Operator => 1199, + Iir_Kind_Rol_Operator => 1204, + Iir_Kind_Ror_Operator => 1209, + Iir_Kind_Addition_Operator => 1214, + Iir_Kind_Substraction_Operator => 1219, + Iir_Kind_Concatenation_Operator => 1224, + Iir_Kind_Multiplication_Operator => 1229, + Iir_Kind_Division_Operator => 1234, + Iir_Kind_Modulus_Operator => 1239, + Iir_Kind_Remainder_Operator => 1244, + Iir_Kind_Exponentiation_Operator => 1249, + Iir_Kind_Function_Call => 1257, + Iir_Kind_Aggregate => 1264, + Iir_Kind_Parenthesis_Expression => 1267, + Iir_Kind_Qualified_Expression => 1271, + Iir_Kind_Type_Conversion => 1276, + Iir_Kind_Allocator_By_Expression => 1280, + Iir_Kind_Allocator_By_Subtype => 1285, + Iir_Kind_Selected_Element => 1293, + Iir_Kind_Dereference => 1298, + Iir_Kind_Implicit_Dereference => 1303, + Iir_Kind_Slice_Name => 1310, + Iir_Kind_Indexed_Name => 1316, + Iir_Kind_Psl_Expression => 1318, + Iir_Kind_Sensitized_Process_Statement => 1339, + Iir_Kind_Process_Statement => 1359, + Iir_Kind_Concurrent_Simple_Signal_Assignment => 1371, + Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1383, + Iir_Kind_Concurrent_Selected_Signal_Assignment => 1396, + Iir_Kind_Concurrent_Assertion_Statement => 1404, + Iir_Kind_Concurrent_Procedure_Call_Statement => 1411, + Iir_Kind_Psl_Assert_Directive => 1424, + Iir_Kind_Psl_Assume_Directive => 1435, + Iir_Kind_Psl_Cover_Directive => 1447, + Iir_Kind_Psl_Restrict_Directive => 1458, + Iir_Kind_Block_Statement => 1472, + Iir_Kind_If_Generate_Statement => 1483, + Iir_Kind_Case_Generate_Statement => 1492, + Iir_Kind_For_Generate_Statement => 1501, + Iir_Kind_Component_Instantiation_Statement => 1512, + Iir_Kind_Psl_Default_Clock => 1516, + Iir_Kind_Simple_Simultaneous_Statement => 1523, + Iir_Kind_Generate_Statement_Body => 1534, + Iir_Kind_If_Generate_Else_Clause => 1540, + Iir_Kind_Simple_Signal_Assignment_Statement => 1550, + Iir_Kind_Conditional_Signal_Assignment_Statement => 1560, + Iir_Kind_Selected_Waveform_Assignment_Statement => 1571, + Iir_Kind_Null_Statement => 1575, + Iir_Kind_Assertion_Statement => 1582, + Iir_Kind_Report_Statement => 1588, + Iir_Kind_Wait_Statement => 1596, + Iir_Kind_Variable_Assignment_Statement => 1603, + Iir_Kind_Conditional_Variable_Assignment_Statement => 1610, + Iir_Kind_Return_Statement => 1616, + Iir_Kind_For_Loop_Statement => 1625, + Iir_Kind_While_Loop_Statement => 1634, + Iir_Kind_Next_Statement => 1641, + Iir_Kind_Exit_Statement => 1648, + Iir_Kind_Case_Statement => 1656, + Iir_Kind_Procedure_Call_Statement => 1662, + Iir_Kind_If_Statement => 1672, + Iir_Kind_Elsif => 1678, + Iir_Kind_Character_Literal => 1686, + Iir_Kind_Simple_Name => 1694, + Iir_Kind_Selected_Name => 1703, + Iir_Kind_Operator_Symbol => 1709, + Iir_Kind_Reference_Name => 1714, + Iir_Kind_External_Constant_Name => 1722, + Iir_Kind_External_Signal_Name => 1730, + Iir_Kind_External_Variable_Name => 1739, + Iir_Kind_Selected_By_All_Name => 1745, + Iir_Kind_Parenthesis_Name => 1750, + Iir_Kind_Package_Pathname => 1754, + Iir_Kind_Absolute_Pathname => 1755, + Iir_Kind_Relative_Pathname => 1756, + Iir_Kind_Pathname_Element => 1761, + Iir_Kind_Base_Attribute => 1763, + Iir_Kind_Subtype_Attribute => 1768, + Iir_Kind_Element_Attribute => 1773, + Iir_Kind_Left_Type_Attribute => 1778, + Iir_Kind_Right_Type_Attribute => 1783, + Iir_Kind_High_Type_Attribute => 1788, + Iir_Kind_Low_Type_Attribute => 1793, + Iir_Kind_Ascending_Type_Attribute => 1798, + Iir_Kind_Image_Attribute => 1804, + Iir_Kind_Value_Attribute => 1810, + Iir_Kind_Pos_Attribute => 1816, + Iir_Kind_Val_Attribute => 1822, + Iir_Kind_Succ_Attribute => 1828, + Iir_Kind_Pred_Attribute => 1834, + Iir_Kind_Leftof_Attribute => 1840, + Iir_Kind_Rightof_Attribute => 1846, + Iir_Kind_Delayed_Attribute => 1855, + Iir_Kind_Stable_Attribute => 1864, + Iir_Kind_Quiet_Attribute => 1873, + Iir_Kind_Transaction_Attribute => 1882, + Iir_Kind_Event_Attribute => 1886, + Iir_Kind_Active_Attribute => 1890, + Iir_Kind_Last_Event_Attribute => 1894, + Iir_Kind_Last_Active_Attribute => 1898, + Iir_Kind_Last_Value_Attribute => 1902, + Iir_Kind_Driving_Attribute => 1906, + Iir_Kind_Driving_Value_Attribute => 1910, + Iir_Kind_Behavior_Attribute => 1910, + Iir_Kind_Structure_Attribute => 1910, + Iir_Kind_Simple_Name_Attribute => 1917, + Iir_Kind_Instance_Name_Attribute => 1922, + Iir_Kind_Path_Name_Attribute => 1927, + Iir_Kind_Left_Array_Attribute => 1934, + Iir_Kind_Right_Array_Attribute => 1941, + Iir_Kind_High_Array_Attribute => 1948, + Iir_Kind_Low_Array_Attribute => 1955, + Iir_Kind_Length_Array_Attribute => 1962, + Iir_Kind_Ascending_Array_Attribute => 1969, + Iir_Kind_Range_Array_Attribute => 1976, + Iir_Kind_Reverse_Range_Array_Attribute => 1983, + Iir_Kind_Attribute_Name => 1992 ); function Get_Fields_First (K : Iir_Kind) return Fields_Index is @@ -5213,6 +5270,12 @@ package body Vhdl.Nodes_Meta is return Get_Package_Body (N); when Field_Instance_Package_Body => return Get_Instance_Package_Body (N); + when Field_Hierarchical_Name => + return Get_Hierarchical_Name (N); + when Field_Inherit_Spec_Chain => + return Get_Inherit_Spec_Chain (N); + when Field_Vunit_Item_Chain => + return Get_Vunit_Item_Chain (N); when Field_Block_Configuration => return Get_Block_Configuration (N); when Field_Concurrent_Statement_Chain => @@ -5607,6 +5670,12 @@ package body Vhdl.Nodes_Meta is Set_Package_Body (N, V); when Field_Instance_Package_Body => Set_Instance_Package_Body (N, V); + when Field_Hierarchical_Name => + Set_Hierarchical_Name (N, V); + when Field_Inherit_Spec_Chain => + Set_Inherit_Spec_Chain (N, V); + when Field_Vunit_Item_Chain => + Set_Vunit_Item_Chain (N, V); when Field_Block_Configuration => Set_Block_Configuration (N, V); when Field_Concurrent_Statement_Chain => @@ -7277,6 +7346,42 @@ package body Vhdl.Nodes_Meta is return K = Iir_Kind_Package_Declaration; end Has_Need_Instance_Bodies; + function Has_Hierarchical_Name (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_Hierarchical_Name; + + function Has_Inherit_Spec_Chain (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_Inherit_Spec_Chain; + + function Has_Vunit_Item_Chain (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_Vunit_Item_Chain; + function Has_Block_Configuration (K : Iir_Kind) return Boolean is begin case K is @@ -7333,14 +7438,14 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Disconnection_Specification | Iir_Kind_Configuration_Specification | Iir_Kind_Protected_Type_Body + | Iir_Kind_Package_Declaration + | Iir_Kind_Package_Instantiation_Declaration + | Iir_Kind_Package_Body | Iir_Kind_Type_Declaration | Iir_Kind_Anonymous_Type_Declaration | Iir_Kind_Subtype_Declaration | Iir_Kind_Nature_Declaration | Iir_Kind_Subnature_Declaration - | Iir_Kind_Package_Declaration - | Iir_Kind_Package_Instantiation_Declaration - | Iir_Kind_Package_Body | Iir_Kind_Unit_Declaration | Iir_Kind_Library_Declaration | Iir_Kind_Component_Declaration @@ -7938,6 +8043,9 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Context_Declaration | Iir_Kind_Package_Declaration | Iir_Kind_Package_Instantiation_Declaration + | Iir_Kind_Vmode_Declaration + | Iir_Kind_Vprop_Declaration + | Iir_Kind_Vunit_Declaration | Iir_Kind_Package_Body | Iir_Kind_Architecture_Body => return True; @@ -8108,18 +8216,21 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Record_Element_Constraint | Iir_Kind_Record_Element_Resolution | Iir_Kind_Protected_Type_Body - | Iir_Kind_Type_Declaration - | Iir_Kind_Anonymous_Type_Declaration - | Iir_Kind_Subtype_Declaration - | Iir_Kind_Nature_Declaration - | Iir_Kind_Subnature_Declaration | Iir_Kind_Entity_Declaration | Iir_Kind_Configuration_Declaration | Iir_Kind_Context_Declaration | Iir_Kind_Package_Declaration | Iir_Kind_Package_Instantiation_Declaration + | Iir_Kind_Vmode_Declaration + | Iir_Kind_Vprop_Declaration + | Iir_Kind_Vunit_Declaration | Iir_Kind_Package_Body | Iir_Kind_Architecture_Body + | Iir_Kind_Type_Declaration + | Iir_Kind_Anonymous_Type_Declaration + | Iir_Kind_Subtype_Declaration + | Iir_Kind_Nature_Declaration + | Iir_Kind_Subnature_Declaration | Iir_Kind_Unit_Declaration | Iir_Kind_Library_Declaration | Iir_Kind_Component_Declaration @@ -8251,16 +8362,19 @@ package body Vhdl.Nodes_Meta is begin case K is when Iir_Kind_Record_Element_Constraint - | Iir_Kind_Type_Declaration - | Iir_Kind_Subtype_Declaration - | Iir_Kind_Nature_Declaration - | Iir_Kind_Subnature_Declaration | Iir_Kind_Entity_Declaration | Iir_Kind_Configuration_Declaration | Iir_Kind_Context_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_Type_Declaration + | Iir_Kind_Subtype_Declaration + | Iir_Kind_Nature_Declaration + | Iir_Kind_Subnature_Declaration | Iir_Kind_Unit_Declaration | Iir_Kind_Library_Declaration | Iir_Kind_Component_Declaration @@ -9331,18 +9445,21 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Disconnection_Specification | Iir_Kind_Configuration_Specification | Iir_Kind_Protected_Type_Body - | Iir_Kind_Type_Declaration - | Iir_Kind_Anonymous_Type_Declaration - | Iir_Kind_Subtype_Declaration - | Iir_Kind_Nature_Declaration - | Iir_Kind_Subnature_Declaration | Iir_Kind_Entity_Declaration | Iir_Kind_Configuration_Declaration | Iir_Kind_Context_Declaration | Iir_Kind_Package_Declaration | Iir_Kind_Package_Instantiation_Declaration + | Iir_Kind_Vmode_Declaration + | Iir_Kind_Vprop_Declaration + | Iir_Kind_Vunit_Declaration | Iir_Kind_Package_Body | Iir_Kind_Architecture_Body + | Iir_Kind_Type_Declaration + | Iir_Kind_Anonymous_Type_Declaration + | Iir_Kind_Subtype_Declaration + | Iir_Kind_Nature_Declaration + | Iir_Kind_Subnature_Declaration | Iir_Kind_Unit_Declaration | Iir_Kind_Component_Declaration | Iir_Kind_Attribute_Declaration @@ -10352,6 +10469,9 @@ package body Vhdl.Nodes_Meta is case K is when Iir_Kind_Entity_Declaration | Iir_Kind_Package_Declaration + | Iir_Kind_Vmode_Declaration + | Iir_Kind_Vprop_Declaration + | Iir_Kind_Vunit_Declaration | Iir_Kind_Architecture_Body | Iir_Kind_Enumeration_Literal | Iir_Kind_Function_Declaration @@ -10469,6 +10589,9 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Context_Declaration | Iir_Kind_Package_Declaration | Iir_Kind_Package_Instantiation_Declaration + | Iir_Kind_Vmode_Declaration + | Iir_Kind_Vprop_Declaration + | Iir_Kind_Vunit_Declaration | Iir_Kind_Package_Body | Iir_Kind_Architecture_Body | Iir_Kind_Component_Declaration @@ -10498,6 +10621,9 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Context_Declaration | Iir_Kind_Package_Declaration | Iir_Kind_Package_Instantiation_Declaration + | Iir_Kind_Vmode_Declaration + | Iir_Kind_Vprop_Declaration + | Iir_Kind_Vunit_Declaration | Iir_Kind_Package_Body | Iir_Kind_Architecture_Body | Iir_Kind_Component_Declaration @@ -10548,6 +10674,9 @@ package body Vhdl.Nodes_Meta is begin case K is when Iir_Kind_Entity_Declaration + | Iir_Kind_Vmode_Declaration + | Iir_Kind_Vprop_Declaration + | Iir_Kind_Vunit_Declaration | Iir_Kind_Generate_Statement_Body => return True; when others => diff --git a/src/vhdl/vhdl-nodes_meta.ads b/src/vhdl/vhdl-nodes_meta.ads index 34b54e8af..f9c324171 100644 --- a/src/vhdl/vhdl-nodes_meta.ads +++ b/src/vhdl/vhdl-nodes_meta.ads @@ -142,6 +142,9 @@ package Vhdl.Nodes_Meta is Field_Need_Body, Field_Macro_Expanded_Flag, Field_Need_Instance_Bodies, + Field_Hierarchical_Name, + Field_Inherit_Spec_Chain, + Field_Vunit_Item_Chain, Field_Block_Configuration, Field_Concurrent_Statement_Chain, Field_Chain, @@ -670,6 +673,9 @@ package Vhdl.Nodes_Meta is function Has_Need_Body (K : Iir_Kind) return Boolean; function Has_Macro_Expanded_Flag (K : Iir_Kind) return Boolean; function Has_Need_Instance_Bodies (K : Iir_Kind) return Boolean; + function Has_Hierarchical_Name (K : Iir_Kind) return Boolean; + function Has_Inherit_Spec_Chain (K : Iir_Kind) return Boolean; + function Has_Vunit_Item_Chain (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; diff --git a/src/vhdl/vhdl-prints.adb b/src/vhdl/vhdl-prints.adb index 09c6f5ff4..6023cbfe5 100644 --- a/src/vhdl/vhdl-prints.adb +++ b/src/vhdl/vhdl-prints.adb @@ -4264,6 +4264,13 @@ package body Vhdl.Prints is Disp_End (Ctxt, Decl, Tok_Context); end Disp_Context_Declaration; + procedure Disp_Verification_Unit + (Ctxt : in out Ctxt_Class; Unit: Iir; Tok : Token_Type) is + begin + -- TODO. + null; + end Disp_Verification_Unit; + procedure Disp_Design_Unit (Ctxt : in out Ctxt_Class; Unit: Iir_Design_Unit) is Decl: Iir; @@ -4286,6 +4293,12 @@ package body Vhdl.Prints is Disp_Configuration_Declaration (Ctxt, Decl); when Iir_Kind_Context_Declaration => Disp_Context_Declaration (Ctxt, Decl); + when Iir_Kind_Vunit_Declaration => + Disp_Verification_Unit (Ctxt, Decl, Tok_Vunit); + when Iir_Kind_Vmode_Declaration => + Disp_Verification_Unit (Ctxt, Decl, Tok_Vmode); + when Iir_Kind_Vprop_Declaration => + Disp_Verification_Unit (Ctxt, Decl, Tok_Vprop); end case; end Disp_Design_Unit; diff --git a/src/vhdl/vhdl-sem.adb b/src/vhdl/vhdl-sem.adb index daa0395b3..18aefeef4 100644 --- a/src/vhdl/vhdl-sem.adb +++ b/src/vhdl/vhdl-sem.adb @@ -3364,6 +3364,9 @@ package body Vhdl.Sem is Sem_Package_Instantiation_Declaration (Library_Unit); when Iir_Kind_Context_Declaration => Sem_Context_Declaration (Library_Unit); + when Iir_Kinds_Verification_Unit => + -- TODO. + raise Internal_Error; end case; end if; |