diff options
| author | Tristan Gingold <tgingold@free.fr> | 2021-11-04 07:34:04 +0100 | 
|---|---|---|
| committer | Tristan Gingold <tgingold@free.fr> | 2021-11-04 07:34:04 +0100 | 
| commit | 46256fac0b1bf55c61deba39a368f53a2297b583 (patch) | |
| tree | 30017688b7697be0813ca16177cdebca5ff2de3b /src | |
| parent | c56db23368ecb4df5eaef3920a46d12150235070 (diff) | |
| download | ghdl-46256fac0b1bf55c61deba39a368f53a2297b583.tar.gz ghdl-46256fac0b1bf55c61deba39a368f53a2297b583.tar.bz2 ghdl-46256fac0b1bf55c61deba39a368f53a2297b583.zip | |
vhdl: parse PSL inherit spec.  For #1899
Diffstat (limited to 'src')
| -rw-r--r-- | src/vhdl/vhdl-elocations.adb | 1 | ||||
| -rw-r--r-- | src/vhdl/vhdl-elocations.ads | 2 | ||||
| -rw-r--r-- | src/vhdl/vhdl-errors.adb | 2 | ||||
| -rw-r--r-- | src/vhdl/vhdl-nodes.adb | 33 | ||||
| -rw-r--r-- | src/vhdl/vhdl-nodes.ads | 22 | ||||
| -rw-r--r-- | src/vhdl/vhdl-nodes_meta.adb | 671 | ||||
| -rw-r--r-- | src/vhdl/vhdl-nodes_meta.ads | 4 | ||||
| -rw-r--r-- | src/vhdl/vhdl-parse.adb | 48 | ||||
| -rw-r--r-- | src/vhdl/vhdl-utils.adb | 1 | 
9 files changed, 422 insertions, 362 deletions
| diff --git a/src/vhdl/vhdl-elocations.adb b/src/vhdl/vhdl-elocations.adb index 9736cb92f..657e7921c 100644 --- a/src/vhdl/vhdl-elocations.adb +++ b/src/vhdl/vhdl-elocations.adb @@ -210,6 +210,7 @@ package body Vhdl.Elocations is             | Iir_Kind_Foreign_Module             | Iir_Kind_Use_Clause             | Iir_Kind_Context_Reference +           | Iir_Kind_PSL_Inherit_Spec             | Iir_Kind_Integer_Literal             | Iir_Kind_Floating_Point_Literal             | Iir_Kind_Null_Literal diff --git a/src/vhdl/vhdl-elocations.ads b/src/vhdl/vhdl-elocations.ads index a4d13f654..1b6f41e46 100644 --- a/src/vhdl/vhdl-elocations.ads +++ b/src/vhdl/vhdl-elocations.ads @@ -327,6 +327,8 @@ package Vhdl.Elocations is     -- Iir_Kind_Context_Reference (None) +   -- Iir_Kind_PSL_Inherit_Spec (None) +     -----------------------     --  type definitions --     ----------------------- diff --git a/src/vhdl/vhdl-errors.adb b/src/vhdl/vhdl-errors.adb index 947a75d6e..01fa3c0cd 100644 --- a/src/vhdl/vhdl-errors.adb +++ b/src/vhdl/vhdl-errors.adb @@ -573,6 +573,8 @@ package body Vhdl.Errors is              return "use clause";           when Iir_Kind_Context_Reference =>              return "context reference"; +         when Iir_Kind_PSL_Inherit_Spec => +            return "PSL inherit";           when Iir_Kind_Disconnection_Specification =>              return "disconnection specification";           when Iir_Kind_Step_Limit_Specification => diff --git a/src/vhdl/vhdl-nodes.adb b/src/vhdl/vhdl-nodes.adb index def8a9695..478f59784 100644 --- a/src/vhdl/vhdl-nodes.adb +++ b/src/vhdl/vhdl-nodes.adb @@ -988,6 +988,7 @@ package body Vhdl.Nodes is             | Iir_Kind_Library_Clause             | Iir_Kind_Use_Clause             | Iir_Kind_Context_Reference +           | Iir_Kind_PSL_Inherit_Spec             | Iir_Kind_Integer_Literal             | Iir_Kind_Floating_Point_Literal             | Iir_Kind_Null_Literal @@ -2722,22 +2723,6 @@ package body Vhdl.Nodes is        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); @@ -3517,6 +3502,22 @@ package body Vhdl.Nodes is        Set_Field3 (Target, Chain);     end Set_Context_Reference_Chain; +   function Get_Inherit_Spec_Chain (Target : Iir) return Iir is +   begin +      pragma Assert (Target /= Null_Iir); +      pragma Assert (Has_Inherit_Spec_Chain (Get_Kind (Target)), +                     "no field Inherit_Spec_Chain"); +      return Get_Field3 (Target); +   end Get_Inherit_Spec_Chain; + +   procedure Set_Inherit_Spec_Chain (Target : Iir; Chain : Iir) is +   begin +      pragma Assert (Target /= Null_Iir); +      pragma Assert (Has_Inherit_Spec_Chain (Get_Kind (Target)), +                     "no field Inherit_Spec_Chain"); +      Set_Field3 (Target, Chain); +   end Set_Inherit_Spec_Chain; +     function Get_Selected_Name (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 973e7f748..0e4e07809 100644 --- a/src/vhdl/vhdl-nodes.ads +++ b/src/vhdl/vhdl-nodes.ads @@ -1149,8 +1149,6 @@ package Vhdl.Nodes is     --     --   Get/Set_Hierarchical_Name (Field1)     -- -   --   Get/Set_Inherit_Spec_Chain (Field2) -   --     --   Get/Set_Attribute_Value_Chain (Field5)     --     --   Get/Set_Vunit_Item_Chain (Field6) @@ -2325,6 +2323,16 @@ package Vhdl.Nodes is     --     --   Get/Set_Use_Clause_Chain (Field3) +   -- Iir_Kind_PSL_Inherit_Spec (Short) +   -- +   --   Get/Set_Parent (Field0) +   -- +   --   Get/Set_Name (Field4) +   -- +   --   Get/Set_Inherit_Spec_Chain (Field3) +   -- +   --   Get/Set_Chain (Field2) +     -- Iir_Kind_Context_Reference (Short)     --     --  LRM08 13.4 Context clauses @@ -4826,6 +4834,8 @@ package Vhdl.Nodes is        Iir_Kind_Use_Clause,        Iir_Kind_Context_Reference, +      Iir_Kind_PSL_Inherit_Spec, +     -- Literals.        Iir_Kind_Integer_Literal,        Iir_Kind_Floating_Point_Literal, @@ -7847,10 +7857,6 @@ package Vhdl.Nodes is     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: Field6 Chain     function Get_Vunit_Item_Chain (Vunit : Iir) return Iir;     procedure Set_Vunit_Item_Chain (Vunit : Iir; Chain : Iir); @@ -8109,6 +8115,10 @@ package Vhdl.Nodes is     function Get_Context_Reference_Chain (Target : Iir) return Iir;     procedure Set_Context_Reference_Chain (Target : Iir; Chain : Iir); +   --  Field: Field3 Chain +   function Get_Inherit_Spec_Chain (Target : Iir) return Iir; +   procedure Set_Inherit_Spec_Chain (Target : Iir; Chain : Iir); +     --  Selected name of an use_clause or context_reference     --  Field: Field1     function Get_Selected_Name (Target : Iir) return Iir; diff --git a/src/vhdl/vhdl-nodes_meta.adb b/src/vhdl/vhdl-nodes_meta.adb index 1dc02eb4b..1dca644ec 100644 --- a/src/vhdl/vhdl-nodes_meta.adb +++ b/src/vhdl/vhdl-nodes_meta.adb @@ -101,7 +101,6 @@ package body Vhdl.Nodes_Meta is        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_Bound_Vunit_Chain => Type_Iir,        Field_Verification_Block_Configuration => Type_Iir, @@ -149,6 +148,7 @@ package body Vhdl.Nodes_Meta is        Field_Element_Position => Type_Iir_Index32,        Field_Use_Clause_Chain => Type_Iir,        Field_Context_Reference_Chain => Type_Iir, +      Field_Inherit_Spec_Chain => Type_Iir,        Field_Selected_Name => Type_Iir,        Field_Type_Declarator => Type_Iir,        Field_Complete_Type_Definition => Type_Iir, @@ -567,8 +567,6 @@ package body Vhdl.Nodes_Meta is              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_Bound_Vunit_Chain => @@ -663,6 +661,8 @@ package body Vhdl.Nodes_Meta is              return "use_clause_chain";           when Field_Context_Reference_Chain =>              return "context_reference_chain"; +         when Field_Inherit_Spec_Chain => +            return "inherit_spec_chain";           when Field_Selected_Name =>              return "selected_name";           when Field_Type_Declarator => @@ -1165,6 +1165,8 @@ package body Vhdl.Nodes_Meta is              return "use_clause";           when Iir_Kind_Context_Reference =>              return "context_reference"; +         when Iir_Kind_PSL_Inherit_Spec => +            return "psl_inherit_spec";           when Iir_Kind_Integer_Literal =>              return "integer_literal";           when Iir_Kind_Floating_Point_Literal => @@ -1959,8 +1961,6 @@ package body Vhdl.Nodes_Meta is              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_Bound_Vunit_Chain => @@ -2055,6 +2055,8 @@ package body Vhdl.Nodes_Meta is              return Attr_None;           when Field_Context_Reference_Chain =>              return Attr_None; +         when Field_Inherit_Spec_Chain => +            return Attr_Chain;           when Field_Selected_Name =>              return Attr_None;           when Field_Type_Declarator => @@ -2603,6 +2605,11 @@ package body Vhdl.Nodes_Meta is        Field_Selected_Name,        Field_Chain,        Field_Context_Reference_Chain, +      --  Iir_Kind_PSL_Inherit_Spec +      Field_Parent, +      Field_Name, +      Field_Inherit_Spec_Chain, +      Field_Chain,        --  Iir_Kind_Integer_Literal        Field_Literal_Length,        Field_Value, @@ -3242,7 +3249,6 @@ package body Vhdl.Nodes_Meta is        Field_End_Has_Identifier,        Field_Parent,        Field_Hierarchical_Name, -      Field_Inherit_Spec_Chain,        Field_Attribute_Value_Chain,        Field_Vunit_Item_Chain,        Field_Verification_Block_Configuration, @@ -3255,7 +3261,6 @@ package body Vhdl.Nodes_Meta is        Field_End_Has_Identifier,        Field_Parent,        Field_Hierarchical_Name, -      Field_Inherit_Spec_Chain,        Field_Attribute_Value_Chain,        Field_Vunit_Item_Chain,        Field_Verification_Block_Configuration, @@ -3268,7 +3273,6 @@ package body Vhdl.Nodes_Meta is        Field_End_Has_Identifier,        Field_Parent,        Field_Hierarchical_Name, -      Field_Inherit_Spec_Chain,        Field_Attribute_Value_Chain,        Field_Vunit_Item_Chain,        Field_Verification_Block_Configuration, @@ -5255,316 +5259,317 @@ package body Vhdl.Nodes_Meta is        Iir_Kind_Library_Clause => 46,        Iir_Kind_Use_Clause => 50,        Iir_Kind_Context_Reference => 54, -      Iir_Kind_Integer_Literal => 59, -      Iir_Kind_Floating_Point_Literal => 64, -      Iir_Kind_Null_Literal => 66, -      Iir_Kind_String_Literal8 => 77, -      Iir_Kind_Physical_Int_Literal => 83, -      Iir_Kind_Physical_Fp_Literal => 89, -      Iir_Kind_Simple_Aggregate => 94, -      Iir_Kind_Overflow_Literal => 97, -      Iir_Kind_Unaffected_Waveform => 98, -      Iir_Kind_Waveform_Element => 101, -      Iir_Kind_Conditional_Waveform => 105, -      Iir_Kind_Conditional_Expression => 109, -      Iir_Kind_Association_Element_By_Expression => 117, -      Iir_Kind_Association_Element_By_Name => 125, -      Iir_Kind_Association_Element_By_Individual => 134, -      Iir_Kind_Association_Element_Open => 140, -      Iir_Kind_Association_Element_Package => 146, -      Iir_Kind_Association_Element_Type => 154, -      Iir_Kind_Association_Element_Subprogram => 160, -      Iir_Kind_Association_Element_Terminal => 166, -      Iir_Kind_Choice_By_Range => 174, -      Iir_Kind_Choice_By_Expression => 182, -      Iir_Kind_Choice_By_Others => 188, -      Iir_Kind_Choice_By_None => 194, -      Iir_Kind_Choice_By_Name => 201, -      Iir_Kind_Entity_Aspect_Entity => 203, -      Iir_Kind_Entity_Aspect_Configuration => 204, -      Iir_Kind_Entity_Aspect_Open => 204, -      Iir_Kind_Psl_Hierarchical_Name => 206, -      Iir_Kind_Block_Configuration => 212, -      Iir_Kind_Block_Header => 216, -      Iir_Kind_Component_Configuration => 223, -      Iir_Kind_Binding_Indication => 227, -      Iir_Kind_Entity_Class => 229, -      Iir_Kind_Attribute_Value => 237, -      Iir_Kind_Signature => 240, -      Iir_Kind_Aggregate_Info => 247, -      Iir_Kind_Procedure_Call => 251, -      Iir_Kind_Record_Element_Constraint => 259, -      Iir_Kind_Array_Element_Resolution => 261, -      Iir_Kind_Record_Resolution => 262, -      Iir_Kind_Record_Element_Resolution => 265, -      Iir_Kind_Break_Element => 269, -      Iir_Kind_Attribute_Specification => 278, -      Iir_Kind_Disconnection_Specification => 284, -      Iir_Kind_Step_Limit_Specification => 290, -      Iir_Kind_Configuration_Specification => 296, -      Iir_Kind_Access_Type_Definition => 303, -      Iir_Kind_Incomplete_Type_Definition => 310, -      Iir_Kind_Interface_Type_Definition => 316, -      Iir_Kind_File_Type_Definition => 322, -      Iir_Kind_Protected_Type_Declaration => 331, -      Iir_Kind_Record_Type_Definition => 341, -      Iir_Kind_Array_Type_Definition => 352, -      Iir_Kind_Array_Subtype_Definition => 369, -      Iir_Kind_Record_Subtype_Definition => 382, -      Iir_Kind_Access_Subtype_Definition => 390, -      Iir_Kind_Physical_Subtype_Definition => 400, -      Iir_Kind_Floating_Subtype_Definition => 411, -      Iir_Kind_Integer_Subtype_Definition => 421, -      Iir_Kind_Enumeration_Subtype_Definition => 431, -      Iir_Kind_Enumeration_Type_Definition => 442, -      Iir_Kind_Integer_Type_Definition => 450, -      Iir_Kind_Floating_Type_Definition => 458, -      Iir_Kind_Physical_Type_Definition => 469, -      Iir_Kind_Range_Expression => 477, -      Iir_Kind_Protected_Type_Body => 485, -      Iir_Kind_Wildcard_Type_Definition => 489, -      Iir_Kind_Subtype_Definition => 496, -      Iir_Kind_Scalar_Nature_Definition => 504, -      Iir_Kind_Record_Nature_Definition => 517, -      Iir_Kind_Array_Nature_Definition => 531, -      Iir_Kind_Array_Subnature_Definition => 546, -      Iir_Kind_Overload_List => 547, -      Iir_Kind_Entity_Declaration => 560, -      Iir_Kind_Configuration_Declaration => 570, -      Iir_Kind_Context_Declaration => 576, -      Iir_Kind_Package_Declaration => 591, -      Iir_Kind_Package_Instantiation_Declaration => 605, -      Iir_Kind_Vmode_Declaration => 617, -      Iir_Kind_Vprop_Declaration => 629, -      Iir_Kind_Vunit_Declaration => 642, -      Iir_Kind_Package_Body => 650, -      Iir_Kind_Architecture_Body => 663, -      Iir_Kind_Type_Declaration => 670, -      Iir_Kind_Anonymous_Type_Declaration => 676, -      Iir_Kind_Subtype_Declaration => 684, -      Iir_Kind_Nature_Declaration => 690, -      Iir_Kind_Subnature_Declaration => 697, -      Iir_Kind_Package_Header => 699, -      Iir_Kind_Unit_Declaration => 708, -      Iir_Kind_Library_Declaration => 716, -      Iir_Kind_Component_Declaration => 726, -      Iir_Kind_Attribute_Declaration => 733, -      Iir_Kind_Group_Template_Declaration => 739, -      Iir_Kind_Group_Declaration => 746, -      Iir_Kind_Element_Declaration => 754, -      Iir_Kind_Nature_Element_Declaration => 761, -      Iir_Kind_Non_Object_Alias_Declaration => 769, -      Iir_Kind_Psl_Declaration => 777, -      Iir_Kind_Psl_Endpoint_Declaration => 791, -      Iir_Kind_Enumeration_Literal => 803, -      Iir_Kind_Function_Declaration => 828, -      Iir_Kind_Procedure_Declaration => 852, -      Iir_Kind_Function_Body => 862, -      Iir_Kind_Procedure_Body => 873, -      Iir_Kind_Function_Instantiation_Declaration => 884, -      Iir_Kind_Procedure_Instantiation_Declaration => 894, -      Iir_Kind_Terminal_Declaration => 903, -      Iir_Kind_Object_Alias_Declaration => 915, -      Iir_Kind_Free_Quantity_Declaration => 927, -      Iir_Kind_Spectrum_Quantity_Declaration => 940, -      Iir_Kind_Noise_Quantity_Declaration => 952, -      Iir_Kind_Across_Quantity_Declaration => 968, -      Iir_Kind_Through_Quantity_Declaration => 984, -      Iir_Kind_File_Declaration => 999, -      Iir_Kind_Guard_Signal_Declaration => 1013, -      Iir_Kind_Signal_Declaration => 1030, -      Iir_Kind_Variable_Declaration => 1043, -      Iir_Kind_Constant_Declaration => 1057, -      Iir_Kind_Iterator_Declaration => 1069, -      Iir_Kind_Interface_Constant_Declaration => 1086, -      Iir_Kind_Interface_Variable_Declaration => 1102, -      Iir_Kind_Interface_Signal_Declaration => 1123, -      Iir_Kind_Interface_File_Declaration => 1139, -      Iir_Kind_Interface_Quantity_Declaration => 1155, -      Iir_Kind_Interface_Terminal_Declaration => 1167, -      Iir_Kind_Interface_Type_Declaration => 1178, -      Iir_Kind_Interface_Package_Declaration => 1191, -      Iir_Kind_Interface_Function_Declaration => 1209, -      Iir_Kind_Interface_Procedure_Declaration => 1223, -      Iir_Kind_Signal_Attribute_Declaration => 1226, -      Iir_Kind_Identity_Operator => 1230, -      Iir_Kind_Negation_Operator => 1234, -      Iir_Kind_Absolute_Operator => 1238, -      Iir_Kind_Not_Operator => 1242, -      Iir_Kind_Implicit_Condition_Operator => 1246, -      Iir_Kind_Condition_Operator => 1250, -      Iir_Kind_Reduction_And_Operator => 1254, -      Iir_Kind_Reduction_Or_Operator => 1258, -      Iir_Kind_Reduction_Nand_Operator => 1262, -      Iir_Kind_Reduction_Nor_Operator => 1266, -      Iir_Kind_Reduction_Xor_Operator => 1270, -      Iir_Kind_Reduction_Xnor_Operator => 1274, -      Iir_Kind_And_Operator => 1279, -      Iir_Kind_Or_Operator => 1284, -      Iir_Kind_Nand_Operator => 1289, -      Iir_Kind_Nor_Operator => 1294, -      Iir_Kind_Xor_Operator => 1299, -      Iir_Kind_Xnor_Operator => 1304, -      Iir_Kind_Equality_Operator => 1309, -      Iir_Kind_Inequality_Operator => 1314, -      Iir_Kind_Less_Than_Operator => 1319, -      Iir_Kind_Less_Than_Or_Equal_Operator => 1324, -      Iir_Kind_Greater_Than_Operator => 1329, -      Iir_Kind_Greater_Than_Or_Equal_Operator => 1334, -      Iir_Kind_Match_Equality_Operator => 1339, -      Iir_Kind_Match_Inequality_Operator => 1344, -      Iir_Kind_Match_Less_Than_Operator => 1349, -      Iir_Kind_Match_Less_Than_Or_Equal_Operator => 1354, -      Iir_Kind_Match_Greater_Than_Operator => 1359, -      Iir_Kind_Match_Greater_Than_Or_Equal_Operator => 1364, -      Iir_Kind_Sll_Operator => 1369, -      Iir_Kind_Sla_Operator => 1374, -      Iir_Kind_Srl_Operator => 1379, -      Iir_Kind_Sra_Operator => 1384, -      Iir_Kind_Rol_Operator => 1389, -      Iir_Kind_Ror_Operator => 1394, -      Iir_Kind_Addition_Operator => 1399, -      Iir_Kind_Substraction_Operator => 1404, -      Iir_Kind_Concatenation_Operator => 1409, -      Iir_Kind_Multiplication_Operator => 1414, -      Iir_Kind_Division_Operator => 1419, -      Iir_Kind_Modulus_Operator => 1424, -      Iir_Kind_Remainder_Operator => 1429, -      Iir_Kind_Exponentiation_Operator => 1434, -      Iir_Kind_Function_Call => 1442, -      Iir_Kind_Aggregate => 1449, -      Iir_Kind_Parenthesis_Expression => 1452, -      Iir_Kind_Qualified_Expression => 1456, -      Iir_Kind_Type_Conversion => 1461, -      Iir_Kind_Allocator_By_Expression => 1466, -      Iir_Kind_Allocator_By_Subtype => 1472, -      Iir_Kind_Selected_Element => 1480, -      Iir_Kind_Dereference => 1485, -      Iir_Kind_Implicit_Dereference => 1490, -      Iir_Kind_Slice_Name => 1497, -      Iir_Kind_Indexed_Name => 1503, -      Iir_Kind_Psl_Prev => 1509, -      Iir_Kind_Psl_Stable => 1514, -      Iir_Kind_Psl_Rose => 1519, -      Iir_Kind_Psl_Fell => 1524, -      Iir_Kind_Psl_Onehot => 1527, -      Iir_Kind_Psl_Onehot0 => 1530, -      Iir_Kind_Psl_Expression => 1532, -      Iir_Kind_Sensitized_Process_Statement => 1553, -      Iir_Kind_Process_Statement => 1573, -      Iir_Kind_Concurrent_Simple_Signal_Assignment => 1586, -      Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1599, -      Iir_Kind_Concurrent_Selected_Signal_Assignment => 1613, -      Iir_Kind_Concurrent_Assertion_Statement => 1621, -      Iir_Kind_Concurrent_Procedure_Call_Statement => 1628, -      Iir_Kind_Concurrent_Break_Statement => 1636, -      Iir_Kind_Psl_Assert_Directive => 1650, -      Iir_Kind_Psl_Assume_Directive => 1662, -      Iir_Kind_Psl_Cover_Directive => 1674, -      Iir_Kind_Psl_Restrict_Directive => 1685, -      Iir_Kind_Block_Statement => 1699, -      Iir_Kind_If_Generate_Statement => 1710, -      Iir_Kind_Case_Generate_Statement => 1719, -      Iir_Kind_For_Generate_Statement => 1728, -      Iir_Kind_Component_Instantiation_Statement => 1739, -      Iir_Kind_Psl_Default_Clock => 1742, -      Iir_Kind_Generate_Statement_Body => 1753, -      Iir_Kind_If_Generate_Else_Clause => 1759, -      Iir_Kind_Simple_Simultaneous_Statement => 1766, -      Iir_Kind_Simultaneous_Null_Statement => 1770, -      Iir_Kind_Simultaneous_Procedural_Statement => 1781, -      Iir_Kind_Simultaneous_Case_Statement => 1790, -      Iir_Kind_Simultaneous_If_Statement => 1799, -      Iir_Kind_Simultaneous_Elsif => 1805, -      Iir_Kind_Simple_Signal_Assignment_Statement => 1816, -      Iir_Kind_Conditional_Signal_Assignment_Statement => 1827, -      Iir_Kind_Selected_Waveform_Assignment_Statement => 1839, -      Iir_Kind_Signal_Force_Assignment_Statement => 1849, -      Iir_Kind_Signal_Release_Assignment_Statement => 1858, -      Iir_Kind_Null_Statement => 1862, -      Iir_Kind_Assertion_Statement => 1869, -      Iir_Kind_Report_Statement => 1875, -      Iir_Kind_Wait_Statement => 1883, -      Iir_Kind_Variable_Assignment_Statement => 1890, -      Iir_Kind_Conditional_Variable_Assignment_Statement => 1897, -      Iir_Kind_Return_Statement => 1903, -      Iir_Kind_For_Loop_Statement => 1914, -      Iir_Kind_While_Loop_Statement => 1925, -      Iir_Kind_Next_Statement => 1932, -      Iir_Kind_Exit_Statement => 1939, -      Iir_Kind_Case_Statement => 1948, -      Iir_Kind_Procedure_Call_Statement => 1954, -      Iir_Kind_Break_Statement => 1961, -      Iir_Kind_If_Statement => 1971, -      Iir_Kind_Elsif => 1977, -      Iir_Kind_Character_Literal => 1984, -      Iir_Kind_Simple_Name => 1991, -      Iir_Kind_Selected_Name => 1999, -      Iir_Kind_Operator_Symbol => 2004, -      Iir_Kind_Reference_Name => 2009, -      Iir_Kind_External_Constant_Name => 2018, -      Iir_Kind_External_Signal_Name => 2027, -      Iir_Kind_External_Variable_Name => 2037, -      Iir_Kind_Selected_By_All_Name => 2043, -      Iir_Kind_Parenthesis_Name => 2048, -      Iir_Kind_Package_Pathname => 2052, -      Iir_Kind_Absolute_Pathname => 2053, -      Iir_Kind_Relative_Pathname => 2054, -      Iir_Kind_Pathname_Element => 2059, -      Iir_Kind_Base_Attribute => 2061, -      Iir_Kind_Subtype_Attribute => 2066, -      Iir_Kind_Element_Attribute => 2071, -      Iir_Kind_Across_Attribute => 2076, -      Iir_Kind_Through_Attribute => 2081, -      Iir_Kind_Nature_Reference_Attribute => 2085, -      Iir_Kind_Left_Type_Attribute => 2090, -      Iir_Kind_Right_Type_Attribute => 2095, -      Iir_Kind_High_Type_Attribute => 2100, -      Iir_Kind_Low_Type_Attribute => 2105, -      Iir_Kind_Ascending_Type_Attribute => 2110, -      Iir_Kind_Image_Attribute => 2116, -      Iir_Kind_Value_Attribute => 2122, -      Iir_Kind_Pos_Attribute => 2128, -      Iir_Kind_Val_Attribute => 2134, -      Iir_Kind_Succ_Attribute => 2140, -      Iir_Kind_Pred_Attribute => 2146, -      Iir_Kind_Leftof_Attribute => 2152, -      Iir_Kind_Rightof_Attribute => 2158, -      Iir_Kind_Signal_Slew_Attribute => 2166, -      Iir_Kind_Quantity_Slew_Attribute => 2174, -      Iir_Kind_Ramp_Attribute => 2182, -      Iir_Kind_Zoh_Attribute => 2190, -      Iir_Kind_Ltf_Attribute => 2198, -      Iir_Kind_Ztf_Attribute => 2208, -      Iir_Kind_Dot_Attribute => 2215, -      Iir_Kind_Integ_Attribute => 2222, -      Iir_Kind_Above_Attribute => 2230, -      Iir_Kind_Quantity_Delayed_Attribute => 2238, -      Iir_Kind_Delayed_Attribute => 2247, -      Iir_Kind_Stable_Attribute => 2256, -      Iir_Kind_Quiet_Attribute => 2265, -      Iir_Kind_Transaction_Attribute => 2274, -      Iir_Kind_Event_Attribute => 2278, -      Iir_Kind_Active_Attribute => 2282, -      Iir_Kind_Last_Event_Attribute => 2286, -      Iir_Kind_Last_Active_Attribute => 2290, -      Iir_Kind_Last_Value_Attribute => 2294, -      Iir_Kind_Driving_Attribute => 2298, -      Iir_Kind_Driving_Value_Attribute => 2302, -      Iir_Kind_Behavior_Attribute => 2302, -      Iir_Kind_Structure_Attribute => 2302, -      Iir_Kind_Simple_Name_Attribute => 2309, -      Iir_Kind_Instance_Name_Attribute => 2314, -      Iir_Kind_Path_Name_Attribute => 2319, -      Iir_Kind_Left_Array_Attribute => 2326, -      Iir_Kind_Right_Array_Attribute => 2333, -      Iir_Kind_High_Array_Attribute => 2340, -      Iir_Kind_Low_Array_Attribute => 2347, -      Iir_Kind_Length_Array_Attribute => 2354, -      Iir_Kind_Ascending_Array_Attribute => 2361, -      Iir_Kind_Range_Array_Attribute => 2368, -      Iir_Kind_Reverse_Range_Array_Attribute => 2375, -      Iir_Kind_Attribute_Name => 2384 +      Iir_Kind_PSL_Inherit_Spec => 58, +      Iir_Kind_Integer_Literal => 63, +      Iir_Kind_Floating_Point_Literal => 68, +      Iir_Kind_Null_Literal => 70, +      Iir_Kind_String_Literal8 => 81, +      Iir_Kind_Physical_Int_Literal => 87, +      Iir_Kind_Physical_Fp_Literal => 93, +      Iir_Kind_Simple_Aggregate => 98, +      Iir_Kind_Overflow_Literal => 101, +      Iir_Kind_Unaffected_Waveform => 102, +      Iir_Kind_Waveform_Element => 105, +      Iir_Kind_Conditional_Waveform => 109, +      Iir_Kind_Conditional_Expression => 113, +      Iir_Kind_Association_Element_By_Expression => 121, +      Iir_Kind_Association_Element_By_Name => 129, +      Iir_Kind_Association_Element_By_Individual => 138, +      Iir_Kind_Association_Element_Open => 144, +      Iir_Kind_Association_Element_Package => 150, +      Iir_Kind_Association_Element_Type => 158, +      Iir_Kind_Association_Element_Subprogram => 164, +      Iir_Kind_Association_Element_Terminal => 170, +      Iir_Kind_Choice_By_Range => 178, +      Iir_Kind_Choice_By_Expression => 186, +      Iir_Kind_Choice_By_Others => 192, +      Iir_Kind_Choice_By_None => 198, +      Iir_Kind_Choice_By_Name => 205, +      Iir_Kind_Entity_Aspect_Entity => 207, +      Iir_Kind_Entity_Aspect_Configuration => 208, +      Iir_Kind_Entity_Aspect_Open => 208, +      Iir_Kind_Psl_Hierarchical_Name => 210, +      Iir_Kind_Block_Configuration => 216, +      Iir_Kind_Block_Header => 220, +      Iir_Kind_Component_Configuration => 227, +      Iir_Kind_Binding_Indication => 231, +      Iir_Kind_Entity_Class => 233, +      Iir_Kind_Attribute_Value => 241, +      Iir_Kind_Signature => 244, +      Iir_Kind_Aggregate_Info => 251, +      Iir_Kind_Procedure_Call => 255, +      Iir_Kind_Record_Element_Constraint => 263, +      Iir_Kind_Array_Element_Resolution => 265, +      Iir_Kind_Record_Resolution => 266, +      Iir_Kind_Record_Element_Resolution => 269, +      Iir_Kind_Break_Element => 273, +      Iir_Kind_Attribute_Specification => 282, +      Iir_Kind_Disconnection_Specification => 288, +      Iir_Kind_Step_Limit_Specification => 294, +      Iir_Kind_Configuration_Specification => 300, +      Iir_Kind_Access_Type_Definition => 307, +      Iir_Kind_Incomplete_Type_Definition => 314, +      Iir_Kind_Interface_Type_Definition => 320, +      Iir_Kind_File_Type_Definition => 326, +      Iir_Kind_Protected_Type_Declaration => 335, +      Iir_Kind_Record_Type_Definition => 345, +      Iir_Kind_Array_Type_Definition => 356, +      Iir_Kind_Array_Subtype_Definition => 373, +      Iir_Kind_Record_Subtype_Definition => 386, +      Iir_Kind_Access_Subtype_Definition => 394, +      Iir_Kind_Physical_Subtype_Definition => 404, +      Iir_Kind_Floating_Subtype_Definition => 415, +      Iir_Kind_Integer_Subtype_Definition => 425, +      Iir_Kind_Enumeration_Subtype_Definition => 435, +      Iir_Kind_Enumeration_Type_Definition => 446, +      Iir_Kind_Integer_Type_Definition => 454, +      Iir_Kind_Floating_Type_Definition => 462, +      Iir_Kind_Physical_Type_Definition => 473, +      Iir_Kind_Range_Expression => 481, +      Iir_Kind_Protected_Type_Body => 489, +      Iir_Kind_Wildcard_Type_Definition => 493, +      Iir_Kind_Subtype_Definition => 500, +      Iir_Kind_Scalar_Nature_Definition => 508, +      Iir_Kind_Record_Nature_Definition => 521, +      Iir_Kind_Array_Nature_Definition => 535, +      Iir_Kind_Array_Subnature_Definition => 550, +      Iir_Kind_Overload_List => 551, +      Iir_Kind_Entity_Declaration => 564, +      Iir_Kind_Configuration_Declaration => 574, +      Iir_Kind_Context_Declaration => 580, +      Iir_Kind_Package_Declaration => 595, +      Iir_Kind_Package_Instantiation_Declaration => 609, +      Iir_Kind_Vmode_Declaration => 620, +      Iir_Kind_Vprop_Declaration => 631, +      Iir_Kind_Vunit_Declaration => 643, +      Iir_Kind_Package_Body => 651, +      Iir_Kind_Architecture_Body => 664, +      Iir_Kind_Type_Declaration => 671, +      Iir_Kind_Anonymous_Type_Declaration => 677, +      Iir_Kind_Subtype_Declaration => 685, +      Iir_Kind_Nature_Declaration => 691, +      Iir_Kind_Subnature_Declaration => 698, +      Iir_Kind_Package_Header => 700, +      Iir_Kind_Unit_Declaration => 709, +      Iir_Kind_Library_Declaration => 717, +      Iir_Kind_Component_Declaration => 727, +      Iir_Kind_Attribute_Declaration => 734, +      Iir_Kind_Group_Template_Declaration => 740, +      Iir_Kind_Group_Declaration => 747, +      Iir_Kind_Element_Declaration => 755, +      Iir_Kind_Nature_Element_Declaration => 762, +      Iir_Kind_Non_Object_Alias_Declaration => 770, +      Iir_Kind_Psl_Declaration => 778, +      Iir_Kind_Psl_Endpoint_Declaration => 792, +      Iir_Kind_Enumeration_Literal => 804, +      Iir_Kind_Function_Declaration => 829, +      Iir_Kind_Procedure_Declaration => 853, +      Iir_Kind_Function_Body => 863, +      Iir_Kind_Procedure_Body => 874, +      Iir_Kind_Function_Instantiation_Declaration => 885, +      Iir_Kind_Procedure_Instantiation_Declaration => 895, +      Iir_Kind_Terminal_Declaration => 904, +      Iir_Kind_Object_Alias_Declaration => 916, +      Iir_Kind_Free_Quantity_Declaration => 928, +      Iir_Kind_Spectrum_Quantity_Declaration => 941, +      Iir_Kind_Noise_Quantity_Declaration => 953, +      Iir_Kind_Across_Quantity_Declaration => 969, +      Iir_Kind_Through_Quantity_Declaration => 985, +      Iir_Kind_File_Declaration => 1000, +      Iir_Kind_Guard_Signal_Declaration => 1014, +      Iir_Kind_Signal_Declaration => 1031, +      Iir_Kind_Variable_Declaration => 1044, +      Iir_Kind_Constant_Declaration => 1058, +      Iir_Kind_Iterator_Declaration => 1070, +      Iir_Kind_Interface_Constant_Declaration => 1087, +      Iir_Kind_Interface_Variable_Declaration => 1103, +      Iir_Kind_Interface_Signal_Declaration => 1124, +      Iir_Kind_Interface_File_Declaration => 1140, +      Iir_Kind_Interface_Quantity_Declaration => 1156, +      Iir_Kind_Interface_Terminal_Declaration => 1168, +      Iir_Kind_Interface_Type_Declaration => 1179, +      Iir_Kind_Interface_Package_Declaration => 1192, +      Iir_Kind_Interface_Function_Declaration => 1210, +      Iir_Kind_Interface_Procedure_Declaration => 1224, +      Iir_Kind_Signal_Attribute_Declaration => 1227, +      Iir_Kind_Identity_Operator => 1231, +      Iir_Kind_Negation_Operator => 1235, +      Iir_Kind_Absolute_Operator => 1239, +      Iir_Kind_Not_Operator => 1243, +      Iir_Kind_Implicit_Condition_Operator => 1247, +      Iir_Kind_Condition_Operator => 1251, +      Iir_Kind_Reduction_And_Operator => 1255, +      Iir_Kind_Reduction_Or_Operator => 1259, +      Iir_Kind_Reduction_Nand_Operator => 1263, +      Iir_Kind_Reduction_Nor_Operator => 1267, +      Iir_Kind_Reduction_Xor_Operator => 1271, +      Iir_Kind_Reduction_Xnor_Operator => 1275, +      Iir_Kind_And_Operator => 1280, +      Iir_Kind_Or_Operator => 1285, +      Iir_Kind_Nand_Operator => 1290, +      Iir_Kind_Nor_Operator => 1295, +      Iir_Kind_Xor_Operator => 1300, +      Iir_Kind_Xnor_Operator => 1305, +      Iir_Kind_Equality_Operator => 1310, +      Iir_Kind_Inequality_Operator => 1315, +      Iir_Kind_Less_Than_Operator => 1320, +      Iir_Kind_Less_Than_Or_Equal_Operator => 1325, +      Iir_Kind_Greater_Than_Operator => 1330, +      Iir_Kind_Greater_Than_Or_Equal_Operator => 1335, +      Iir_Kind_Match_Equality_Operator => 1340, +      Iir_Kind_Match_Inequality_Operator => 1345, +      Iir_Kind_Match_Less_Than_Operator => 1350, +      Iir_Kind_Match_Less_Than_Or_Equal_Operator => 1355, +      Iir_Kind_Match_Greater_Than_Operator => 1360, +      Iir_Kind_Match_Greater_Than_Or_Equal_Operator => 1365, +      Iir_Kind_Sll_Operator => 1370, +      Iir_Kind_Sla_Operator => 1375, +      Iir_Kind_Srl_Operator => 1380, +      Iir_Kind_Sra_Operator => 1385, +      Iir_Kind_Rol_Operator => 1390, +      Iir_Kind_Ror_Operator => 1395, +      Iir_Kind_Addition_Operator => 1400, +      Iir_Kind_Substraction_Operator => 1405, +      Iir_Kind_Concatenation_Operator => 1410, +      Iir_Kind_Multiplication_Operator => 1415, +      Iir_Kind_Division_Operator => 1420, +      Iir_Kind_Modulus_Operator => 1425, +      Iir_Kind_Remainder_Operator => 1430, +      Iir_Kind_Exponentiation_Operator => 1435, +      Iir_Kind_Function_Call => 1443, +      Iir_Kind_Aggregate => 1450, +      Iir_Kind_Parenthesis_Expression => 1453, +      Iir_Kind_Qualified_Expression => 1457, +      Iir_Kind_Type_Conversion => 1462, +      Iir_Kind_Allocator_By_Expression => 1467, +      Iir_Kind_Allocator_By_Subtype => 1473, +      Iir_Kind_Selected_Element => 1481, +      Iir_Kind_Dereference => 1486, +      Iir_Kind_Implicit_Dereference => 1491, +      Iir_Kind_Slice_Name => 1498, +      Iir_Kind_Indexed_Name => 1504, +      Iir_Kind_Psl_Prev => 1510, +      Iir_Kind_Psl_Stable => 1515, +      Iir_Kind_Psl_Rose => 1520, +      Iir_Kind_Psl_Fell => 1525, +      Iir_Kind_Psl_Onehot => 1528, +      Iir_Kind_Psl_Onehot0 => 1531, +      Iir_Kind_Psl_Expression => 1533, +      Iir_Kind_Sensitized_Process_Statement => 1554, +      Iir_Kind_Process_Statement => 1574, +      Iir_Kind_Concurrent_Simple_Signal_Assignment => 1587, +      Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1600, +      Iir_Kind_Concurrent_Selected_Signal_Assignment => 1614, +      Iir_Kind_Concurrent_Assertion_Statement => 1622, +      Iir_Kind_Concurrent_Procedure_Call_Statement => 1629, +      Iir_Kind_Concurrent_Break_Statement => 1637, +      Iir_Kind_Psl_Assert_Directive => 1651, +      Iir_Kind_Psl_Assume_Directive => 1663, +      Iir_Kind_Psl_Cover_Directive => 1675, +      Iir_Kind_Psl_Restrict_Directive => 1686, +      Iir_Kind_Block_Statement => 1700, +      Iir_Kind_If_Generate_Statement => 1711, +      Iir_Kind_Case_Generate_Statement => 1720, +      Iir_Kind_For_Generate_Statement => 1729, +      Iir_Kind_Component_Instantiation_Statement => 1740, +      Iir_Kind_Psl_Default_Clock => 1743, +      Iir_Kind_Generate_Statement_Body => 1754, +      Iir_Kind_If_Generate_Else_Clause => 1760, +      Iir_Kind_Simple_Simultaneous_Statement => 1767, +      Iir_Kind_Simultaneous_Null_Statement => 1771, +      Iir_Kind_Simultaneous_Procedural_Statement => 1782, +      Iir_Kind_Simultaneous_Case_Statement => 1791, +      Iir_Kind_Simultaneous_If_Statement => 1800, +      Iir_Kind_Simultaneous_Elsif => 1806, +      Iir_Kind_Simple_Signal_Assignment_Statement => 1817, +      Iir_Kind_Conditional_Signal_Assignment_Statement => 1828, +      Iir_Kind_Selected_Waveform_Assignment_Statement => 1840, +      Iir_Kind_Signal_Force_Assignment_Statement => 1850, +      Iir_Kind_Signal_Release_Assignment_Statement => 1859, +      Iir_Kind_Null_Statement => 1863, +      Iir_Kind_Assertion_Statement => 1870, +      Iir_Kind_Report_Statement => 1876, +      Iir_Kind_Wait_Statement => 1884, +      Iir_Kind_Variable_Assignment_Statement => 1891, +      Iir_Kind_Conditional_Variable_Assignment_Statement => 1898, +      Iir_Kind_Return_Statement => 1904, +      Iir_Kind_For_Loop_Statement => 1915, +      Iir_Kind_While_Loop_Statement => 1926, +      Iir_Kind_Next_Statement => 1933, +      Iir_Kind_Exit_Statement => 1940, +      Iir_Kind_Case_Statement => 1949, +      Iir_Kind_Procedure_Call_Statement => 1955, +      Iir_Kind_Break_Statement => 1962, +      Iir_Kind_If_Statement => 1972, +      Iir_Kind_Elsif => 1978, +      Iir_Kind_Character_Literal => 1985, +      Iir_Kind_Simple_Name => 1992, +      Iir_Kind_Selected_Name => 2000, +      Iir_Kind_Operator_Symbol => 2005, +      Iir_Kind_Reference_Name => 2010, +      Iir_Kind_External_Constant_Name => 2019, +      Iir_Kind_External_Signal_Name => 2028, +      Iir_Kind_External_Variable_Name => 2038, +      Iir_Kind_Selected_By_All_Name => 2044, +      Iir_Kind_Parenthesis_Name => 2049, +      Iir_Kind_Package_Pathname => 2053, +      Iir_Kind_Absolute_Pathname => 2054, +      Iir_Kind_Relative_Pathname => 2055, +      Iir_Kind_Pathname_Element => 2060, +      Iir_Kind_Base_Attribute => 2062, +      Iir_Kind_Subtype_Attribute => 2067, +      Iir_Kind_Element_Attribute => 2072, +      Iir_Kind_Across_Attribute => 2077, +      Iir_Kind_Through_Attribute => 2082, +      Iir_Kind_Nature_Reference_Attribute => 2086, +      Iir_Kind_Left_Type_Attribute => 2091, +      Iir_Kind_Right_Type_Attribute => 2096, +      Iir_Kind_High_Type_Attribute => 2101, +      Iir_Kind_Low_Type_Attribute => 2106, +      Iir_Kind_Ascending_Type_Attribute => 2111, +      Iir_Kind_Image_Attribute => 2117, +      Iir_Kind_Value_Attribute => 2123, +      Iir_Kind_Pos_Attribute => 2129, +      Iir_Kind_Val_Attribute => 2135, +      Iir_Kind_Succ_Attribute => 2141, +      Iir_Kind_Pred_Attribute => 2147, +      Iir_Kind_Leftof_Attribute => 2153, +      Iir_Kind_Rightof_Attribute => 2159, +      Iir_Kind_Signal_Slew_Attribute => 2167, +      Iir_Kind_Quantity_Slew_Attribute => 2175, +      Iir_Kind_Ramp_Attribute => 2183, +      Iir_Kind_Zoh_Attribute => 2191, +      Iir_Kind_Ltf_Attribute => 2199, +      Iir_Kind_Ztf_Attribute => 2209, +      Iir_Kind_Dot_Attribute => 2216, +      Iir_Kind_Integ_Attribute => 2223, +      Iir_Kind_Above_Attribute => 2231, +      Iir_Kind_Quantity_Delayed_Attribute => 2239, +      Iir_Kind_Delayed_Attribute => 2248, +      Iir_Kind_Stable_Attribute => 2257, +      Iir_Kind_Quiet_Attribute => 2266, +      Iir_Kind_Transaction_Attribute => 2275, +      Iir_Kind_Event_Attribute => 2279, +      Iir_Kind_Active_Attribute => 2283, +      Iir_Kind_Last_Event_Attribute => 2287, +      Iir_Kind_Last_Active_Attribute => 2291, +      Iir_Kind_Last_Value_Attribute => 2295, +      Iir_Kind_Driving_Attribute => 2299, +      Iir_Kind_Driving_Value_Attribute => 2303, +      Iir_Kind_Behavior_Attribute => 2303, +      Iir_Kind_Structure_Attribute => 2303, +      Iir_Kind_Simple_Name_Attribute => 2310, +      Iir_Kind_Instance_Name_Attribute => 2315, +      Iir_Kind_Path_Name_Attribute => 2320, +      Iir_Kind_Left_Array_Attribute => 2327, +      Iir_Kind_Right_Array_Attribute => 2334, +      Iir_Kind_High_Array_Attribute => 2341, +      Iir_Kind_Low_Array_Attribute => 2348, +      Iir_Kind_Length_Array_Attribute => 2355, +      Iir_Kind_Ascending_Array_Attribute => 2362, +      Iir_Kind_Range_Array_Attribute => 2369, +      Iir_Kind_Reverse_Range_Array_Attribute => 2376, +      Iir_Kind_Attribute_Name => 2385       );     function Get_Fields_First (K : Iir_Kind) return Fields_Index is @@ -6113,8 +6118,6 @@ package body Vhdl.Nodes_Meta is              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_Bound_Vunit_Chain => @@ -6187,6 +6190,8 @@ package body Vhdl.Nodes_Meta is              return Get_Use_Clause_Chain (N);           when Field_Context_Reference_Chain =>              return Get_Context_Reference_Chain (N); +         when Field_Inherit_Spec_Chain => +            return Get_Inherit_Spec_Chain (N);           when Field_Selected_Name =>              return Get_Selected_Name (N);           when Field_Type_Declarator => @@ -6569,8 +6574,6 @@ package body Vhdl.Nodes_Meta is              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_Bound_Vunit_Chain => @@ -6643,6 +6646,8 @@ package body Vhdl.Nodes_Meta is              Set_Use_Clause_Chain (N, V);           when Field_Context_Reference_Chain =>              Set_Context_Reference_Chain (N, V); +         when Field_Inherit_Spec_Chain => +            Set_Inherit_Spec_Chain (N, V);           when Field_Selected_Name =>              Set_Selected_Name (N, V);           when Field_Type_Declarator => @@ -8421,18 +8426,6 @@ package body Vhdl.Nodes_Meta is        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 @@ -8503,6 +8496,7 @@ package body Vhdl.Nodes_Meta is             | Iir_Kind_Library_Clause             | Iir_Kind_Use_Clause             | Iir_Kind_Context_Reference +           | Iir_Kind_PSL_Inherit_Spec             | Iir_Kind_Unaffected_Waveform             | Iir_Kind_Waveform_Element             | Iir_Kind_Conditional_Waveform @@ -9321,6 +9315,11 @@ package body Vhdl.Nodes_Meta is        return K = Iir_Kind_Context_Reference;     end Has_Context_Reference_Chain; +   function Has_Inherit_Spec_Chain (K : Iir_Kind) return Boolean is +   begin +      return K = Iir_Kind_PSL_Inherit_Spec; +   end Has_Inherit_Spec_Chain; +     function Has_Selected_Name (K : Iir_Kind) return Boolean is     begin        case K is @@ -10915,6 +10914,7 @@ package body Vhdl.Nodes_Meta is             | Iir_Kind_Library_Clause             | Iir_Kind_Use_Clause             | Iir_Kind_Context_Reference +           | Iir_Kind_PSL_Inherit_Spec             | Iir_Kind_Choice_By_Range             | Iir_Kind_Choice_By_Expression             | Iir_Kind_Choice_By_Others @@ -11447,7 +11447,8 @@ package body Vhdl.Nodes_Meta is     function Has_Name (K : Iir_Kind) return Boolean is     begin        case K is -         when Iir_Kind_Non_Object_Alias_Declaration +         when Iir_Kind_PSL_Inherit_Spec +           | Iir_Kind_Non_Object_Alias_Declaration             | Iir_Kind_Object_Alias_Declaration =>              return True;           when others => diff --git a/src/vhdl/vhdl-nodes_meta.ads b/src/vhdl/vhdl-nodes_meta.ads index f72a697e3..44ae8b048 100644 --- a/src/vhdl/vhdl-nodes_meta.ads +++ b/src/vhdl/vhdl-nodes_meta.ads @@ -145,7 +145,6 @@ package Vhdl.Nodes_Meta is        Field_Macro_Expanded_Flag,        Field_Need_Instance_Bodies,        Field_Hierarchical_Name, -      Field_Inherit_Spec_Chain,        Field_Vunit_Item_Chain,        Field_Bound_Vunit_Chain,        Field_Verification_Block_Configuration, @@ -193,6 +192,7 @@ package Vhdl.Nodes_Meta is        Field_Element_Position,        Field_Use_Clause_Chain,        Field_Context_Reference_Chain, +      Field_Inherit_Spec_Chain,        Field_Selected_Name,        Field_Type_Declarator,        Field_Complete_Type_Definition, @@ -729,7 +729,6 @@ package Vhdl.Nodes_Meta is     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_Bound_Vunit_Chain (K : Iir_Kind) return Boolean;     function Has_Verification_Block_Configuration (K : Iir_Kind) @@ -779,6 +778,7 @@ package Vhdl.Nodes_Meta is     function Has_Element_Position (K : Iir_Kind) return Boolean;     function Has_Use_Clause_Chain (K : Iir_Kind) return Boolean;     function Has_Context_Reference_Chain (K : Iir_Kind) return Boolean; +   function Has_Inherit_Spec_Chain (K : Iir_Kind) return Boolean;     function Has_Selected_Name (K : Iir_Kind) return Boolean;     function Has_Type_Declarator (K : Iir_Kind) return Boolean;     function Has_Complete_Type_Definition (K : Iir_Kind) return Boolean; diff --git a/src/vhdl/vhdl-parse.adb b/src/vhdl/vhdl-parse.adb index 7605da5f8..a5c62bb79 100644 --- a/src/vhdl/vhdl-parse.adb +++ b/src/vhdl/vhdl-parse.adb @@ -11225,6 +11225,36 @@ package body Vhdl.Parse is     end Parse_Package;     --  1850-2005 7.2 Verification units +   --  inherit_spec ::= +   --    [ NONTRANSITIVE ] INHERIT vunit_Name { , vunit_name } ; +   function Parse_PSL_Inherit_Spec return Iir +   is +      N : Iir; +      First, Last : Iir; +      Name : Iir; +   begin +      Chain_Init (First, Last); +      loop +         N := Create_Iir (Iir_Kind_PSL_Inherit_Spec); +         Set_Location (N); +         Chain_Append (First, Last, N); + +         -- Skip 'inherit' or ','. +         Scan; + +         Name := Parse_Name; +         Set_Name (N, Name); + +         exit when Current_Token /= Tok_Comma; +      end loop; + +      Expect_Scan (Tok_Semi_Colon, +                   "';' expected at the end of an inherit spec"); + +      return First; +   end Parse_PSL_Inherit_Spec; + +   --  1850-2005 7.2 Verification units     --  verification_unit ::=     --    vunit_type PSL_Identifier [ ( hierachical_hdl_name ) ] {     --      { inherit_spec } @@ -11280,8 +11310,6 @@ package body Vhdl.Parse is        --  Skip '{'.        Expect_Scan (Tok_Left_Curly); -      --  TODO: inherit spec. -        --  Vunit items.        Last_Item := Null_Iir;        loop @@ -11326,7 +11354,7 @@ package body Vhdl.Parse is                 | Tok_Package                 | Tok_Default =>                 if Label /= Null_Identifier then -                  Error_Msg_Sem +                  Error_Msg_Parse                      (+Loc, "label not allowed before a declaration");                    Label := Null_Identifier;                 end if; @@ -11348,6 +11376,20 @@ package body Vhdl.Parse is                 | Tok_Right_Curly =>                 exit; +            when Tok_Inherit => +               if Label /= Null_Identifier then +                  Error_Msg_Parse +                    (+Loc, "label not allowed for inherit spec"); +                  Label := Null_Identifier; +               end if; +               if Last_Item /= Null_Iir +                 and then Get_Kind (Last_Item) /= Iir_Kind_PSL_Inherit_Spec +               then +                  Error_Msg_Parse +                    ("inherit spec must be placed at the beginning"); +               end if; +               Item := Parse_PSL_Inherit_Spec; +              when others =>                 --  Do not recognize PSL keywords.  This is required for                 --  'boolean' which is a PSL keyword. diff --git a/src/vhdl/vhdl-utils.adb b/src/vhdl/vhdl-utils.adb index 95261405d..eefdff5ab 100644 --- a/src/vhdl/vhdl-utils.adb +++ b/src/vhdl/vhdl-utils.adb @@ -302,6 +302,7 @@ package body Vhdl.Utils is                 | Iir_Kind_Library_Clause                 | Iir_Kind_Use_Clause                 | Iir_Kind_Context_Reference +               | Iir_Kind_PSL_Inherit_Spec                 | Iir_Kind_Library_Declaration                 | Iir_Kind_Foreign_Module                 | Iir_Kinds_Library_Unit | 
