aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2021-11-04 07:34:04 +0100
committerTristan Gingold <tgingold@free.fr>2021-11-04 07:34:04 +0100
commit46256fac0b1bf55c61deba39a368f53a2297b583 (patch)
tree30017688b7697be0813ca16177cdebca5ff2de3b /src
parentc56db23368ecb4df5eaef3920a46d12150235070 (diff)
downloadghdl-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.adb1
-rw-r--r--src/vhdl/vhdl-elocations.ads2
-rw-r--r--src/vhdl/vhdl-errors.adb2
-rw-r--r--src/vhdl/vhdl-nodes.adb33
-rw-r--r--src/vhdl/vhdl-nodes.ads22
-rw-r--r--src/vhdl/vhdl-nodes_meta.adb671
-rw-r--r--src/vhdl/vhdl-nodes_meta.ads4
-rw-r--r--src/vhdl/vhdl-parse.adb48
-rw-r--r--src/vhdl/vhdl-utils.adb1
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