diff options
Diffstat (limited to 'src/vhdl/nodes_meta.adb')
-rw-r--r-- | src/vhdl/nodes_meta.adb | 178 |
1 files changed, 103 insertions, 75 deletions
diff --git a/src/vhdl/nodes_meta.adb b/src/vhdl/nodes_meta.adb index 2635072cd..7f846dbda 100644 --- a/src/vhdl/nodes_meta.adb +++ b/src/vhdl/nodes_meta.adb @@ -1311,6 +1311,8 @@ package body Nodes_Meta is return "if_generate_statement"; when Iir_Kind_For_Generate_Statement => return "for_generate_statement"; + when Iir_Kind_Case_Generate_Statement => + return "case_generate_statement"; when Iir_Kind_Component_Instantiation_Statement => return "component_instantiation_statement"; when Iir_Kind_Simple_Simultaneous_Statement => @@ -3562,6 +3564,16 @@ package body Nodes_Meta is Field_Chain, Field_Generate_Statement_Body, Field_Parent, + -- Iir_Kind_Case_Generate_Statement + Field_Label, + Field_Visible_Flag, + Field_Is_Within_Flag, + Field_End_Has_Reserved_Id, + Field_End_Has_Identifier, + Field_Case_Statement_Alternative_Chain, + Field_Chain, + Field_Expression, + Field_Parent, -- Iir_Kind_Component_Instantiation_Statement Field_Label, Field_Visible_Flag, @@ -4259,79 +4271,80 @@ package body Nodes_Meta is Iir_Kind_Block_Statement => 1284, Iir_Kind_If_Generate_Statement => 1294, Iir_Kind_For_Generate_Statement => 1303, - Iir_Kind_Component_Instantiation_Statement => 1313, - Iir_Kind_Simple_Simultaneous_Statement => 1320, - Iir_Kind_Generate_Statement_Body => 1331, - Iir_Kind_If_Generate_Else_Clause => 1336, - Iir_Kind_Simple_Signal_Assignment_Statement => 1345, - Iir_Kind_Conditional_Signal_Assignment_Statement => 1354, - Iir_Kind_Null_Statement => 1358, - Iir_Kind_Assertion_Statement => 1365, - Iir_Kind_Report_Statement => 1371, - Iir_Kind_Wait_Statement => 1378, - Iir_Kind_Variable_Assignment_Statement => 1384, - Iir_Kind_Conditional_Variable_Assignment_Statement => 1390, - Iir_Kind_Return_Statement => 1396, - Iir_Kind_For_Loop_Statement => 1405, - Iir_Kind_While_Loop_Statement => 1413, - Iir_Kind_Next_Statement => 1419, - Iir_Kind_Exit_Statement => 1425, - Iir_Kind_Case_Statement => 1433, - Iir_Kind_Procedure_Call_Statement => 1439, - Iir_Kind_If_Statement => 1448, - Iir_Kind_Elsif => 1453, - Iir_Kind_Character_Literal => 1460, - Iir_Kind_Simple_Name => 1467, - Iir_Kind_Selected_Name => 1475, - Iir_Kind_Operator_Symbol => 1480, - Iir_Kind_Selected_By_All_Name => 1485, - Iir_Kind_Parenthesis_Name => 1489, - Iir_Kind_External_Constant_Name => 1498, - Iir_Kind_External_Signal_Name => 1507, - Iir_Kind_External_Variable_Name => 1516, - Iir_Kind_Package_Pathname => 1519, - Iir_Kind_Absolute_Pathname => 1520, - Iir_Kind_Relative_Pathname => 1521, - Iir_Kind_Pathname_Element => 1525, - Iir_Kind_Base_Attribute => 1527, - Iir_Kind_Left_Type_Attribute => 1532, - Iir_Kind_Right_Type_Attribute => 1537, - Iir_Kind_High_Type_Attribute => 1542, - Iir_Kind_Low_Type_Attribute => 1547, - Iir_Kind_Ascending_Type_Attribute => 1552, - Iir_Kind_Image_Attribute => 1558, - Iir_Kind_Value_Attribute => 1564, - Iir_Kind_Pos_Attribute => 1570, - Iir_Kind_Val_Attribute => 1576, - Iir_Kind_Succ_Attribute => 1582, - Iir_Kind_Pred_Attribute => 1588, - Iir_Kind_Leftof_Attribute => 1594, - Iir_Kind_Rightof_Attribute => 1600, - Iir_Kind_Delayed_Attribute => 1608, - Iir_Kind_Stable_Attribute => 1616, - Iir_Kind_Quiet_Attribute => 1624, - Iir_Kind_Transaction_Attribute => 1632, - Iir_Kind_Event_Attribute => 1636, - Iir_Kind_Active_Attribute => 1640, - Iir_Kind_Last_Event_Attribute => 1644, - Iir_Kind_Last_Active_Attribute => 1648, - Iir_Kind_Last_Value_Attribute => 1652, - Iir_Kind_Driving_Attribute => 1656, - Iir_Kind_Driving_Value_Attribute => 1660, - Iir_Kind_Behavior_Attribute => 1660, - Iir_Kind_Structure_Attribute => 1660, - Iir_Kind_Simple_Name_Attribute => 1667, - Iir_Kind_Instance_Name_Attribute => 1672, - Iir_Kind_Path_Name_Attribute => 1677, - Iir_Kind_Left_Array_Attribute => 1684, - Iir_Kind_Right_Array_Attribute => 1691, - Iir_Kind_High_Array_Attribute => 1698, - Iir_Kind_Low_Array_Attribute => 1705, - Iir_Kind_Length_Array_Attribute => 1712, - Iir_Kind_Ascending_Array_Attribute => 1719, - Iir_Kind_Range_Array_Attribute => 1726, - Iir_Kind_Reverse_Range_Array_Attribute => 1733, - Iir_Kind_Attribute_Name => 1741 + Iir_Kind_Case_Generate_Statement => 1312, + Iir_Kind_Component_Instantiation_Statement => 1322, + Iir_Kind_Simple_Simultaneous_Statement => 1329, + Iir_Kind_Generate_Statement_Body => 1340, + Iir_Kind_If_Generate_Else_Clause => 1345, + Iir_Kind_Simple_Signal_Assignment_Statement => 1354, + Iir_Kind_Conditional_Signal_Assignment_Statement => 1363, + Iir_Kind_Null_Statement => 1367, + Iir_Kind_Assertion_Statement => 1374, + Iir_Kind_Report_Statement => 1380, + Iir_Kind_Wait_Statement => 1387, + Iir_Kind_Variable_Assignment_Statement => 1393, + Iir_Kind_Conditional_Variable_Assignment_Statement => 1399, + Iir_Kind_Return_Statement => 1405, + Iir_Kind_For_Loop_Statement => 1414, + Iir_Kind_While_Loop_Statement => 1422, + Iir_Kind_Next_Statement => 1428, + Iir_Kind_Exit_Statement => 1434, + Iir_Kind_Case_Statement => 1442, + Iir_Kind_Procedure_Call_Statement => 1448, + Iir_Kind_If_Statement => 1457, + Iir_Kind_Elsif => 1462, + Iir_Kind_Character_Literal => 1469, + Iir_Kind_Simple_Name => 1476, + Iir_Kind_Selected_Name => 1484, + Iir_Kind_Operator_Symbol => 1489, + Iir_Kind_Selected_By_All_Name => 1494, + Iir_Kind_Parenthesis_Name => 1498, + Iir_Kind_External_Constant_Name => 1507, + Iir_Kind_External_Signal_Name => 1516, + Iir_Kind_External_Variable_Name => 1525, + Iir_Kind_Package_Pathname => 1528, + Iir_Kind_Absolute_Pathname => 1529, + Iir_Kind_Relative_Pathname => 1530, + Iir_Kind_Pathname_Element => 1534, + Iir_Kind_Base_Attribute => 1536, + Iir_Kind_Left_Type_Attribute => 1541, + Iir_Kind_Right_Type_Attribute => 1546, + Iir_Kind_High_Type_Attribute => 1551, + Iir_Kind_Low_Type_Attribute => 1556, + Iir_Kind_Ascending_Type_Attribute => 1561, + Iir_Kind_Image_Attribute => 1567, + Iir_Kind_Value_Attribute => 1573, + Iir_Kind_Pos_Attribute => 1579, + Iir_Kind_Val_Attribute => 1585, + Iir_Kind_Succ_Attribute => 1591, + Iir_Kind_Pred_Attribute => 1597, + Iir_Kind_Leftof_Attribute => 1603, + Iir_Kind_Rightof_Attribute => 1609, + Iir_Kind_Delayed_Attribute => 1617, + Iir_Kind_Stable_Attribute => 1625, + Iir_Kind_Quiet_Attribute => 1633, + Iir_Kind_Transaction_Attribute => 1641, + Iir_Kind_Event_Attribute => 1645, + Iir_Kind_Active_Attribute => 1649, + Iir_Kind_Last_Event_Attribute => 1653, + Iir_Kind_Last_Active_Attribute => 1657, + Iir_Kind_Last_Value_Attribute => 1661, + Iir_Kind_Driving_Attribute => 1665, + Iir_Kind_Driving_Value_Attribute => 1669, + Iir_Kind_Behavior_Attribute => 1669, + Iir_Kind_Structure_Attribute => 1669, + Iir_Kind_Simple_Name_Attribute => 1676, + Iir_Kind_Instance_Name_Attribute => 1681, + Iir_Kind_Path_Name_Attribute => 1686, + Iir_Kind_Left_Array_Attribute => 1693, + Iir_Kind_Right_Array_Attribute => 1700, + Iir_Kind_High_Array_Attribute => 1707, + Iir_Kind_Low_Array_Attribute => 1714, + Iir_Kind_Length_Array_Attribute => 1721, + Iir_Kind_Ascending_Array_Attribute => 1728, + Iir_Kind_Range_Array_Attribute => 1735, + Iir_Kind_Reverse_Range_Array_Attribute => 1742, + Iir_Kind_Attribute_Name => 1750 ); function Get_Fields (K : Iir_Kind) return Fields_Array @@ -6789,6 +6802,7 @@ package body Nodes_Meta is | Iir_Kind_Block_Statement | Iir_Kind_If_Generate_Statement | Iir_Kind_For_Generate_Statement + | Iir_Kind_Case_Generate_Statement | Iir_Kind_Component_Instantiation_Statement | Iir_Kind_Simple_Simultaneous_Statement | Iir_Kind_Simple_Signal_Assignment_Statement @@ -7520,6 +7534,7 @@ package body Nodes_Meta is | Iir_Kind_Block_Statement | Iir_Kind_If_Generate_Statement | Iir_Kind_For_Generate_Statement + | Iir_Kind_Case_Generate_Statement | Iir_Kind_Component_Instantiation_Statement | Iir_Kind_Simple_Simultaneous_Statement | Iir_Kind_Generate_Statement_Body @@ -7568,6 +7583,7 @@ package body Nodes_Meta is | Iir_Kind_Block_Statement | Iir_Kind_If_Generate_Statement | Iir_Kind_For_Generate_Statement + | Iir_Kind_Case_Generate_Statement | Iir_Kind_Component_Instantiation_Statement | Iir_Kind_Simple_Simultaneous_Statement | Iir_Kind_Simple_Signal_Assignment_Statement @@ -7647,6 +7663,7 @@ package body Nodes_Meta is | Iir_Kind_Block_Statement | Iir_Kind_If_Generate_Statement | Iir_Kind_For_Generate_Statement + | Iir_Kind_Case_Generate_Statement | Iir_Kind_Component_Instantiation_Statement | Iir_Kind_Simple_Simultaneous_Statement | Iir_Kind_If_Generate_Else_Clause @@ -8392,6 +8409,7 @@ package body Nodes_Meta is | Iir_Kind_Type_Conversion | Iir_Kind_Allocator_By_Expression | Iir_Kind_Concurrent_Selected_Signal_Assignment + | Iir_Kind_Case_Generate_Statement | Iir_Kind_Variable_Assignment_Statement | Iir_Kind_Return_Statement | Iir_Kind_Case_Statement => @@ -8621,6 +8639,7 @@ package body Nodes_Meta is | Iir_Kind_Block_Statement | Iir_Kind_If_Generate_Statement | Iir_Kind_For_Generate_Statement + | Iir_Kind_Case_Generate_Statement | Iir_Kind_Component_Instantiation_Statement | Iir_Kind_Simple_Simultaneous_Statement | Iir_Kind_Generate_Statement_Body @@ -9312,7 +9331,13 @@ package body Nodes_Meta is function Has_Case_Statement_Alternative_Chain (K : Iir_Kind) return Boolean is begin - return K = Iir_Kind_Case_Statement; + case K is + when Iir_Kind_Case_Generate_Statement + | Iir_Kind_Case_Statement => + return True; + when others => + return False; + end case; end Has_Case_Statement_Alternative_Chain; function Has_Choice_Staticness (K : Iir_Kind) return Boolean is @@ -9511,6 +9536,7 @@ package body Nodes_Meta is | Iir_Kind_Block_Statement | Iir_Kind_If_Generate_Statement | Iir_Kind_For_Generate_Statement + | Iir_Kind_Case_Generate_Statement | Iir_Kind_Generate_Statement_Body | Iir_Kind_For_Loop_Statement => return True; @@ -9627,7 +9653,8 @@ package body Nodes_Meta is | Iir_Kind_Process_Statement | Iir_Kind_Block_Statement | Iir_Kind_If_Generate_Statement - | Iir_Kind_For_Generate_Statement => + | Iir_Kind_For_Generate_Statement + | Iir_Kind_Case_Generate_Statement => return True; when others => return False; @@ -9656,6 +9683,7 @@ package body Nodes_Meta is | Iir_Kind_Block_Statement | Iir_Kind_If_Generate_Statement | Iir_Kind_For_Generate_Statement + | Iir_Kind_Case_Generate_Statement | Iir_Kind_Generate_Statement_Body | Iir_Kind_For_Loop_Statement | Iir_Kind_While_Loop_Statement |