diff options
Diffstat (limited to 'src/vhdl')
-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 | 5 | ||||
-rw-r--r-- | src/vhdl/vhdl-nodes.ads | 26 | ||||
-rw-r--r-- | src/vhdl/vhdl-nodes_meta.adb | 444 | ||||
-rw-r--r-- | src/vhdl/vhdl-nodes_walk.adb | 3 | ||||
-rw-r--r-- | src/vhdl/vhdl-parse_psl.adb | 12 | ||||
-rw-r--r-- | src/vhdl/vhdl-prints.adb | 5 | ||||
-rw-r--r-- | src/vhdl/vhdl-sem_expr.adb | 4 | ||||
-rw-r--r-- | src/vhdl/vhdl-sem_names.adb | 3 | ||||
-rw-r--r-- | src/vhdl/vhdl-sem_psl.adb | 10 | ||||
-rw-r--r-- | src/vhdl/vhdl-utils.adb | 1 |
13 files changed, 292 insertions, 226 deletions
diff --git a/src/vhdl/vhdl-elocations.adb b/src/vhdl/vhdl-elocations.adb index d2e5d5a10..b34e04a1e 100644 --- a/src/vhdl/vhdl-elocations.adb +++ b/src/vhdl/vhdl-elocations.adb @@ -284,6 +284,7 @@ package body Vhdl.Elocations is | Iir_Kind_Nature_Element_Declaration | Iir_Kind_Non_Object_Alias_Declaration | Iir_Kind_Psl_Declaration + | Iir_Kind_Psl_Boolean_Parameter | Iir_Kind_Psl_Endpoint_Declaration | Iir_Kind_Enumeration_Literal | Iir_Kind_Function_Instantiation_Declaration diff --git a/src/vhdl/vhdl-elocations.ads b/src/vhdl/vhdl-elocations.ads index 89dd60869..42449793a 100644 --- a/src/vhdl/vhdl-elocations.ads +++ b/src/vhdl/vhdl-elocations.ads @@ -315,6 +315,8 @@ package Vhdl.Elocations is -- Iir_Kind_Psl_Declaration (None) + -- Iir_Kind_Psl_Boolean_Parameter (None) + -- Iir_Kind_Terminal_Declaration (None) -- Iir_Kind_Free_Quantity_Declaration (None) diff --git a/src/vhdl/vhdl-errors.adb b/src/vhdl/vhdl-errors.adb index a5e75f212..8410cb767 100644 --- a/src/vhdl/vhdl-errors.adb +++ b/src/vhdl/vhdl-errors.adb @@ -629,6 +629,8 @@ package body Vhdl.Errors is when Iir_Kind_Psl_Declaration => return Disp_Identifier (Node, "PSL declaration"); + when Iir_Kind_Psl_Boolean_Parameter => + return Disp_Identifier (Node, "PSL boolean parameter"); when Iir_Kind_Psl_Endpoint_Declaration => return Disp_Identifier (Node, "PSL endpoint declaration"); diff --git a/src/vhdl/vhdl-nodes.adb b/src/vhdl/vhdl-nodes.adb index 1ba32f6f6..5fac95d66 100644 --- a/src/vhdl/vhdl-nodes.adb +++ b/src/vhdl/vhdl-nodes.adb @@ -1067,6 +1067,7 @@ package body Vhdl.Nodes is | Iir_Kind_Element_Declaration | Iir_Kind_Nature_Element_Declaration | Iir_Kind_Non_Object_Alias_Declaration + | Iir_Kind_Psl_Boolean_Parameter | Iir_Kind_Enumeration_Literal | Iir_Kind_Terminal_Declaration | Iir_Kind_Object_Alias_Declaration @@ -7320,7 +7321,7 @@ package body Vhdl.Nodes is pragma Assert (Decl /= Null_Iir); pragma Assert (Has_Psl_Declaration (Get_Kind (Decl)), "no field Psl_Declaration"); - return Iir_To_PSL_Node (Get_Field6 (Decl)); + return Iir_To_PSL_Node (Get_Field5 (Decl)); end Get_Psl_Declaration; procedure Set_Psl_Declaration (Decl : Iir; Prop : PSL_Node) is @@ -7328,7 +7329,7 @@ package body Vhdl.Nodes is pragma Assert (Decl /= Null_Iir); pragma Assert (Has_Psl_Declaration (Get_Kind (Decl)), "no field Psl_Declaration"); - Set_Field6 (Decl, PSL_Node_To_Iir (Prop)); + Set_Field5 (Decl, PSL_Node_To_Iir (Prop)); end Set_Psl_Declaration; function Get_Psl_Expression (Decl : Iir) return PSL_Node is diff --git a/src/vhdl/vhdl-nodes.ads b/src/vhdl/vhdl-nodes.ads index e375ffbc9..4ef9b466a 100644 --- a/src/vhdl/vhdl-nodes.ads +++ b/src/vhdl/vhdl-nodes.ads @@ -2151,7 +2151,7 @@ package Vhdl.Nodes is -- -- Get/Set_Identifier (Field3) -- - -- Get/Set_Psl_Declaration (Field6) + -- Get/Set_Psl_Declaration (Field5) -- -- Get/Set_PSL_Clock (Field7) -- @@ -2182,7 +2182,7 @@ package Vhdl.Nodes is -- -- Get/Set_Identifier (Field3) -- - -- Get/Set_Psl_Declaration (Field6) + -- Get/Set_Psl_Declaration (Field5) -- -- Valid only for property declaration. -- Get/Set_PSL_Clock (Field7) @@ -2194,6 +2194,25 @@ package Vhdl.Nodes is -- -- Get/Set_Use_Flag (Flag6) + -- Iir_Kind_Psl_Boolean_Parameter (Short) + -- A psl boolean parameter. + -- + -- Get/Set_Parent (Field0) + -- + -- Get/Set_Identifier (Field3) + -- + -- Get/Set_Psl_Declaration (Field5) + -- + -- Get/Set_Type (Field1) + -- + -- Get/Set_Chain (Field2) + -- + -- Get/Set_Expr_Staticness (State1) + -- + -- Get/Set_Visible_Flag (Flag4) + -- + -- Get/Set_Use_Flag (Flag6) + -- Iir_Kind_Terminal_Declaration (Short) -- -- Get/Set_Parent (Field0) @@ -5038,6 +5057,7 @@ package Vhdl.Nodes is Iir_Kind_Non_Object_Alias_Declaration, Iir_Kind_Psl_Declaration, + Iir_Kind_Psl_Boolean_Parameter, Iir_Kind_Psl_Endpoint_Declaration, Iir_Kind_Enumeration_Literal, @@ -9540,7 +9560,7 @@ package Vhdl.Nodes is function Get_Psl_Sequence (Decl : Iir) return PSL_Node; procedure Set_Psl_Sequence (Decl : Iir; Prop : PSL_Node); - -- Field: Field6 (uc) + -- Field: Field5 (uc) function Get_Psl_Declaration (Decl : Iir) return PSL_Node; procedure Set_Psl_Declaration (Decl : Iir; Prop : PSL_Node); diff --git a/src/vhdl/vhdl-nodes_meta.adb b/src/vhdl/vhdl-nodes_meta.adb index 782f21e20..9ddb1a3dd 100644 --- a/src/vhdl/vhdl-nodes_meta.adb +++ b/src/vhdl/vhdl-nodes_meta.adb @@ -1401,6 +1401,8 @@ package body Vhdl.Nodes_Meta is return "non_object_alias_declaration"; when Iir_Kind_Psl_Declaration => return "psl_declaration"; + when Iir_Kind_Psl_Boolean_Parameter => + return "psl_boolean_parameter"; when Iir_Kind_Psl_Endpoint_Declaration => return "psl_endpoint_declaration"; when Iir_Kind_Enumeration_Literal => @@ -3503,6 +3505,15 @@ package body Vhdl.Nodes_Meta is Field_Use_Flag, Field_Parent, Field_Chain, + -- Iir_Kind_Psl_Boolean_Parameter + Field_Identifier, + Field_Psl_Declaration, + Field_Visible_Flag, + Field_Use_Flag, + Field_Expr_Staticness, + Field_Parent, + Field_Type, + Field_Chain, -- Iir_Kind_Psl_Endpoint_Declaration Field_Identifier, Field_Psl_Declaration, @@ -5451,218 +5462,219 @@ package body Vhdl.Nodes_Meta is Iir_Kind_Nature_Element_Declaration => 775, Iir_Kind_Non_Object_Alias_Declaration => 783, Iir_Kind_Psl_Declaration => 791, - Iir_Kind_Psl_Endpoint_Declaration => 805, - Iir_Kind_Enumeration_Literal => 817, - Iir_Kind_Function_Declaration => 843, - Iir_Kind_Procedure_Declaration => 866, - Iir_Kind_Function_Body => 876, - Iir_Kind_Procedure_Body => 887, - Iir_Kind_Function_Instantiation_Declaration => 898, - Iir_Kind_Procedure_Instantiation_Declaration => 908, - Iir_Kind_Terminal_Declaration => 918, - Iir_Kind_Object_Alias_Declaration => 930, - Iir_Kind_Free_Quantity_Declaration => 942, - Iir_Kind_Spectrum_Quantity_Declaration => 955, - Iir_Kind_Noise_Quantity_Declaration => 967, - Iir_Kind_Across_Quantity_Declaration => 983, - Iir_Kind_Through_Quantity_Declaration => 999, - Iir_Kind_File_Declaration => 1014, - Iir_Kind_Guard_Signal_Declaration => 1028, - Iir_Kind_Signal_Declaration => 1045, - Iir_Kind_Variable_Declaration => 1058, - Iir_Kind_Constant_Declaration => 1072, - Iir_Kind_Iterator_Declaration => 1084, - Iir_Kind_Interface_Constant_Declaration => 1101, - Iir_Kind_Interface_Variable_Declaration => 1117, - Iir_Kind_Interface_Signal_Declaration => 1138, - Iir_Kind_Interface_File_Declaration => 1154, - Iir_Kind_Interface_Quantity_Declaration => 1170, - Iir_Kind_Interface_Terminal_Declaration => 1182, - Iir_Kind_Interface_Type_Declaration => 1194, - Iir_Kind_Interface_Package_Declaration => 1207, - Iir_Kind_Interface_Function_Declaration => 1226, - Iir_Kind_Interface_Procedure_Declaration => 1241, - Iir_Kind_Attribute_Implicit_Declaration => 1244, - Iir_Kind_Suspend_State_Declaration => 1247, - Iir_Kind_Identity_Operator => 1251, - Iir_Kind_Negation_Operator => 1255, - Iir_Kind_Absolute_Operator => 1259, - Iir_Kind_Not_Operator => 1263, - Iir_Kind_Implicit_Condition_Operator => 1267, - Iir_Kind_Condition_Operator => 1271, - Iir_Kind_Reduction_And_Operator => 1275, - Iir_Kind_Reduction_Or_Operator => 1279, - Iir_Kind_Reduction_Nand_Operator => 1283, - Iir_Kind_Reduction_Nor_Operator => 1287, - Iir_Kind_Reduction_Xor_Operator => 1291, - Iir_Kind_Reduction_Xnor_Operator => 1295, - Iir_Kind_And_Operator => 1300, - Iir_Kind_Or_Operator => 1305, - Iir_Kind_Nand_Operator => 1310, - Iir_Kind_Nor_Operator => 1315, - Iir_Kind_Xor_Operator => 1320, - Iir_Kind_Xnor_Operator => 1325, - Iir_Kind_Equality_Operator => 1330, - Iir_Kind_Inequality_Operator => 1335, - Iir_Kind_Less_Than_Operator => 1340, - Iir_Kind_Less_Than_Or_Equal_Operator => 1345, - Iir_Kind_Greater_Than_Operator => 1350, - Iir_Kind_Greater_Than_Or_Equal_Operator => 1355, - Iir_Kind_Match_Equality_Operator => 1360, - Iir_Kind_Match_Inequality_Operator => 1365, - Iir_Kind_Match_Less_Than_Operator => 1370, - Iir_Kind_Match_Less_Than_Or_Equal_Operator => 1375, - Iir_Kind_Match_Greater_Than_Operator => 1380, - Iir_Kind_Match_Greater_Than_Or_Equal_Operator => 1385, - Iir_Kind_Sll_Operator => 1390, - Iir_Kind_Sla_Operator => 1395, - Iir_Kind_Srl_Operator => 1400, - Iir_Kind_Sra_Operator => 1405, - Iir_Kind_Rol_Operator => 1410, - Iir_Kind_Ror_Operator => 1415, - Iir_Kind_Addition_Operator => 1420, - Iir_Kind_Substraction_Operator => 1425, - Iir_Kind_Concatenation_Operator => 1430, - Iir_Kind_Multiplication_Operator => 1435, - Iir_Kind_Division_Operator => 1440, - Iir_Kind_Modulus_Operator => 1445, - Iir_Kind_Remainder_Operator => 1450, - Iir_Kind_Exponentiation_Operator => 1455, - Iir_Kind_Function_Call => 1463, - Iir_Kind_Aggregate => 1471, - Iir_Kind_Parenthesis_Expression => 1474, - Iir_Kind_Qualified_Expression => 1478, - Iir_Kind_Type_Conversion => 1483, - Iir_Kind_Allocator_By_Expression => 1488, - Iir_Kind_Allocator_By_Subtype => 1494, - Iir_Kind_Selected_Element => 1502, - Iir_Kind_Dereference => 1507, - Iir_Kind_Implicit_Dereference => 1512, - Iir_Kind_Slice_Name => 1519, - Iir_Kind_Indexed_Name => 1525, - Iir_Kind_Psl_Prev => 1531, - Iir_Kind_Psl_Stable => 1536, - Iir_Kind_Psl_Rose => 1541, - Iir_Kind_Psl_Fell => 1546, - Iir_Kind_Psl_Onehot => 1549, - Iir_Kind_Psl_Onehot0 => 1552, - Iir_Kind_Psl_Expression => 1554, - Iir_Kind_Sensitized_Process_Statement => 1576, - Iir_Kind_Process_Statement => 1597, - Iir_Kind_Concurrent_Simple_Signal_Assignment => 1610, - Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1623, - Iir_Kind_Concurrent_Selected_Signal_Assignment => 1637, - Iir_Kind_Concurrent_Assertion_Statement => 1645, - Iir_Kind_Concurrent_Procedure_Call_Statement => 1652, - Iir_Kind_Concurrent_Break_Statement => 1660, - Iir_Kind_Psl_Assert_Directive => 1674, - Iir_Kind_Psl_Assume_Directive => 1686, - Iir_Kind_Psl_Cover_Directive => 1698, - Iir_Kind_Psl_Restrict_Directive => 1709, - Iir_Kind_Block_Statement => 1723, - Iir_Kind_If_Generate_Statement => 1734, - Iir_Kind_Case_Generate_Statement => 1743, - Iir_Kind_For_Generate_Statement => 1752, - Iir_Kind_Component_Instantiation_Statement => 1763, - Iir_Kind_Psl_Default_Clock => 1766, - Iir_Kind_Generate_Statement_Body => 1777, - Iir_Kind_If_Generate_Else_Clause => 1783, - Iir_Kind_Simple_Simultaneous_Statement => 1790, - Iir_Kind_Simultaneous_Null_Statement => 1794, - Iir_Kind_Simultaneous_Procedural_Statement => 1805, - Iir_Kind_Simultaneous_Case_Statement => 1814, - Iir_Kind_Simultaneous_If_Statement => 1823, - Iir_Kind_Simultaneous_Elsif => 1829, - Iir_Kind_Simple_Signal_Assignment_Statement => 1840, - Iir_Kind_Conditional_Signal_Assignment_Statement => 1851, - Iir_Kind_Selected_Waveform_Assignment_Statement => 1863, - Iir_Kind_Signal_Force_Assignment_Statement => 1873, - Iir_Kind_Signal_Release_Assignment_Statement => 1882, - Iir_Kind_Null_Statement => 1886, - Iir_Kind_Assertion_Statement => 1893, - Iir_Kind_Report_Statement => 1899, - Iir_Kind_Wait_Statement => 1907, - Iir_Kind_Variable_Assignment_Statement => 1914, - Iir_Kind_Conditional_Variable_Assignment_Statement => 1921, - Iir_Kind_Return_Statement => 1927, - Iir_Kind_For_Loop_Statement => 1938, - Iir_Kind_While_Loop_Statement => 1949, - Iir_Kind_Next_Statement => 1956, - Iir_Kind_Exit_Statement => 1963, - Iir_Kind_Case_Statement => 1972, - Iir_Kind_Procedure_Call_Statement => 1978, - Iir_Kind_Break_Statement => 1985, - Iir_Kind_If_Statement => 1995, - Iir_Kind_Suspend_State_Statement => 1999, - Iir_Kind_Elsif => 2005, - Iir_Kind_Character_Literal => 2012, - Iir_Kind_Simple_Name => 2019, - Iir_Kind_Selected_Name => 2027, - Iir_Kind_Operator_Symbol => 2032, - Iir_Kind_Reference_Name => 2037, - Iir_Kind_External_Constant_Name => 2046, - Iir_Kind_External_Signal_Name => 2055, - Iir_Kind_External_Variable_Name => 2065, - Iir_Kind_Selected_By_All_Name => 2071, - Iir_Kind_Parenthesis_Name => 2076, - Iir_Kind_Package_Pathname => 2080, - Iir_Kind_Absolute_Pathname => 2081, - Iir_Kind_Relative_Pathname => 2082, - Iir_Kind_Pathname_Element => 2087, - Iir_Kind_Base_Attribute => 2089, - Iir_Kind_Subtype_Attribute => 2094, - Iir_Kind_Element_Attribute => 2099, - Iir_Kind_Across_Attribute => 2104, - Iir_Kind_Through_Attribute => 2109, - Iir_Kind_Nature_Reference_Attribute => 2113, - Iir_Kind_Left_Type_Attribute => 2118, - Iir_Kind_Right_Type_Attribute => 2123, - Iir_Kind_High_Type_Attribute => 2128, - Iir_Kind_Low_Type_Attribute => 2133, - Iir_Kind_Ascending_Type_Attribute => 2138, - Iir_Kind_Image_Attribute => 2144, - Iir_Kind_Value_Attribute => 2150, - Iir_Kind_Pos_Attribute => 2156, - Iir_Kind_Val_Attribute => 2162, - Iir_Kind_Succ_Attribute => 2168, - Iir_Kind_Pred_Attribute => 2174, - Iir_Kind_Leftof_Attribute => 2180, - Iir_Kind_Rightof_Attribute => 2186, - Iir_Kind_Signal_Slew_Attribute => 2194, - Iir_Kind_Quantity_Slew_Attribute => 2202, - Iir_Kind_Ramp_Attribute => 2210, - Iir_Kind_Zoh_Attribute => 2218, - Iir_Kind_Ltf_Attribute => 2226, - Iir_Kind_Ztf_Attribute => 2236, - Iir_Kind_Dot_Attribute => 2243, - Iir_Kind_Integ_Attribute => 2250, - Iir_Kind_Quantity_Delayed_Attribute => 2258, - Iir_Kind_Above_Attribute => 2266, - Iir_Kind_Delayed_Attribute => 2275, - Iir_Kind_Stable_Attribute => 2284, - Iir_Kind_Quiet_Attribute => 2293, - Iir_Kind_Transaction_Attribute => 2302, - Iir_Kind_Event_Attribute => 2306, - Iir_Kind_Active_Attribute => 2310, - Iir_Kind_Last_Event_Attribute => 2314, - Iir_Kind_Last_Active_Attribute => 2318, - Iir_Kind_Last_Value_Attribute => 2322, - Iir_Kind_Driving_Attribute => 2326, - Iir_Kind_Driving_Value_Attribute => 2330, - Iir_Kind_Behavior_Attribute => 2330, - Iir_Kind_Structure_Attribute => 2330, - Iir_Kind_Simple_Name_Attribute => 2337, - Iir_Kind_Instance_Name_Attribute => 2342, - Iir_Kind_Path_Name_Attribute => 2347, - Iir_Kind_Left_Array_Attribute => 2354, - Iir_Kind_Right_Array_Attribute => 2361, - Iir_Kind_High_Array_Attribute => 2368, - Iir_Kind_Low_Array_Attribute => 2375, - Iir_Kind_Length_Array_Attribute => 2382, - Iir_Kind_Ascending_Array_Attribute => 2389, - Iir_Kind_Range_Array_Attribute => 2396, - Iir_Kind_Reverse_Range_Array_Attribute => 2403, - Iir_Kind_Attribute_Name => 2412 + Iir_Kind_Psl_Boolean_Parameter => 799, + Iir_Kind_Psl_Endpoint_Declaration => 813, + Iir_Kind_Enumeration_Literal => 825, + Iir_Kind_Function_Declaration => 851, + Iir_Kind_Procedure_Declaration => 874, + Iir_Kind_Function_Body => 884, + Iir_Kind_Procedure_Body => 895, + Iir_Kind_Function_Instantiation_Declaration => 906, + Iir_Kind_Procedure_Instantiation_Declaration => 916, + Iir_Kind_Terminal_Declaration => 926, + Iir_Kind_Object_Alias_Declaration => 938, + Iir_Kind_Free_Quantity_Declaration => 950, + Iir_Kind_Spectrum_Quantity_Declaration => 963, + Iir_Kind_Noise_Quantity_Declaration => 975, + Iir_Kind_Across_Quantity_Declaration => 991, + Iir_Kind_Through_Quantity_Declaration => 1007, + Iir_Kind_File_Declaration => 1022, + Iir_Kind_Guard_Signal_Declaration => 1036, + Iir_Kind_Signal_Declaration => 1053, + Iir_Kind_Variable_Declaration => 1066, + Iir_Kind_Constant_Declaration => 1080, + Iir_Kind_Iterator_Declaration => 1092, + Iir_Kind_Interface_Constant_Declaration => 1109, + Iir_Kind_Interface_Variable_Declaration => 1125, + Iir_Kind_Interface_Signal_Declaration => 1146, + Iir_Kind_Interface_File_Declaration => 1162, + Iir_Kind_Interface_Quantity_Declaration => 1178, + Iir_Kind_Interface_Terminal_Declaration => 1190, + Iir_Kind_Interface_Type_Declaration => 1202, + Iir_Kind_Interface_Package_Declaration => 1215, + Iir_Kind_Interface_Function_Declaration => 1234, + Iir_Kind_Interface_Procedure_Declaration => 1249, + Iir_Kind_Attribute_Implicit_Declaration => 1252, + Iir_Kind_Suspend_State_Declaration => 1255, + Iir_Kind_Identity_Operator => 1259, + Iir_Kind_Negation_Operator => 1263, + Iir_Kind_Absolute_Operator => 1267, + Iir_Kind_Not_Operator => 1271, + Iir_Kind_Implicit_Condition_Operator => 1275, + Iir_Kind_Condition_Operator => 1279, + Iir_Kind_Reduction_And_Operator => 1283, + Iir_Kind_Reduction_Or_Operator => 1287, + Iir_Kind_Reduction_Nand_Operator => 1291, + Iir_Kind_Reduction_Nor_Operator => 1295, + Iir_Kind_Reduction_Xor_Operator => 1299, + Iir_Kind_Reduction_Xnor_Operator => 1303, + Iir_Kind_And_Operator => 1308, + Iir_Kind_Or_Operator => 1313, + Iir_Kind_Nand_Operator => 1318, + Iir_Kind_Nor_Operator => 1323, + Iir_Kind_Xor_Operator => 1328, + Iir_Kind_Xnor_Operator => 1333, + Iir_Kind_Equality_Operator => 1338, + Iir_Kind_Inequality_Operator => 1343, + Iir_Kind_Less_Than_Operator => 1348, + Iir_Kind_Less_Than_Or_Equal_Operator => 1353, + Iir_Kind_Greater_Than_Operator => 1358, + Iir_Kind_Greater_Than_Or_Equal_Operator => 1363, + Iir_Kind_Match_Equality_Operator => 1368, + Iir_Kind_Match_Inequality_Operator => 1373, + Iir_Kind_Match_Less_Than_Operator => 1378, + Iir_Kind_Match_Less_Than_Or_Equal_Operator => 1383, + Iir_Kind_Match_Greater_Than_Operator => 1388, + Iir_Kind_Match_Greater_Than_Or_Equal_Operator => 1393, + Iir_Kind_Sll_Operator => 1398, + Iir_Kind_Sla_Operator => 1403, + Iir_Kind_Srl_Operator => 1408, + Iir_Kind_Sra_Operator => 1413, + Iir_Kind_Rol_Operator => 1418, + Iir_Kind_Ror_Operator => 1423, + Iir_Kind_Addition_Operator => 1428, + Iir_Kind_Substraction_Operator => 1433, + Iir_Kind_Concatenation_Operator => 1438, + Iir_Kind_Multiplication_Operator => 1443, + Iir_Kind_Division_Operator => 1448, + Iir_Kind_Modulus_Operator => 1453, + Iir_Kind_Remainder_Operator => 1458, + Iir_Kind_Exponentiation_Operator => 1463, + Iir_Kind_Function_Call => 1471, + Iir_Kind_Aggregate => 1479, + Iir_Kind_Parenthesis_Expression => 1482, + Iir_Kind_Qualified_Expression => 1486, + Iir_Kind_Type_Conversion => 1491, + Iir_Kind_Allocator_By_Expression => 1496, + Iir_Kind_Allocator_By_Subtype => 1502, + Iir_Kind_Selected_Element => 1510, + Iir_Kind_Dereference => 1515, + Iir_Kind_Implicit_Dereference => 1520, + Iir_Kind_Slice_Name => 1527, + Iir_Kind_Indexed_Name => 1533, + Iir_Kind_Psl_Prev => 1539, + Iir_Kind_Psl_Stable => 1544, + Iir_Kind_Psl_Rose => 1549, + Iir_Kind_Psl_Fell => 1554, + Iir_Kind_Psl_Onehot => 1557, + Iir_Kind_Psl_Onehot0 => 1560, + Iir_Kind_Psl_Expression => 1562, + Iir_Kind_Sensitized_Process_Statement => 1584, + Iir_Kind_Process_Statement => 1605, + Iir_Kind_Concurrent_Simple_Signal_Assignment => 1618, + Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1631, + Iir_Kind_Concurrent_Selected_Signal_Assignment => 1645, + Iir_Kind_Concurrent_Assertion_Statement => 1653, + Iir_Kind_Concurrent_Procedure_Call_Statement => 1660, + Iir_Kind_Concurrent_Break_Statement => 1668, + Iir_Kind_Psl_Assert_Directive => 1682, + Iir_Kind_Psl_Assume_Directive => 1694, + Iir_Kind_Psl_Cover_Directive => 1706, + Iir_Kind_Psl_Restrict_Directive => 1717, + Iir_Kind_Block_Statement => 1731, + Iir_Kind_If_Generate_Statement => 1742, + Iir_Kind_Case_Generate_Statement => 1751, + Iir_Kind_For_Generate_Statement => 1760, + Iir_Kind_Component_Instantiation_Statement => 1771, + Iir_Kind_Psl_Default_Clock => 1774, + Iir_Kind_Generate_Statement_Body => 1785, + Iir_Kind_If_Generate_Else_Clause => 1791, + Iir_Kind_Simple_Simultaneous_Statement => 1798, + Iir_Kind_Simultaneous_Null_Statement => 1802, + Iir_Kind_Simultaneous_Procedural_Statement => 1813, + Iir_Kind_Simultaneous_Case_Statement => 1822, + Iir_Kind_Simultaneous_If_Statement => 1831, + Iir_Kind_Simultaneous_Elsif => 1837, + Iir_Kind_Simple_Signal_Assignment_Statement => 1848, + Iir_Kind_Conditional_Signal_Assignment_Statement => 1859, + Iir_Kind_Selected_Waveform_Assignment_Statement => 1871, + Iir_Kind_Signal_Force_Assignment_Statement => 1881, + Iir_Kind_Signal_Release_Assignment_Statement => 1890, + Iir_Kind_Null_Statement => 1894, + Iir_Kind_Assertion_Statement => 1901, + Iir_Kind_Report_Statement => 1907, + Iir_Kind_Wait_Statement => 1915, + Iir_Kind_Variable_Assignment_Statement => 1922, + Iir_Kind_Conditional_Variable_Assignment_Statement => 1929, + Iir_Kind_Return_Statement => 1935, + Iir_Kind_For_Loop_Statement => 1946, + Iir_Kind_While_Loop_Statement => 1957, + Iir_Kind_Next_Statement => 1964, + Iir_Kind_Exit_Statement => 1971, + Iir_Kind_Case_Statement => 1980, + Iir_Kind_Procedure_Call_Statement => 1986, + Iir_Kind_Break_Statement => 1993, + Iir_Kind_If_Statement => 2003, + Iir_Kind_Suspend_State_Statement => 2007, + Iir_Kind_Elsif => 2013, + Iir_Kind_Character_Literal => 2020, + Iir_Kind_Simple_Name => 2027, + Iir_Kind_Selected_Name => 2035, + Iir_Kind_Operator_Symbol => 2040, + Iir_Kind_Reference_Name => 2045, + Iir_Kind_External_Constant_Name => 2054, + Iir_Kind_External_Signal_Name => 2063, + Iir_Kind_External_Variable_Name => 2073, + Iir_Kind_Selected_By_All_Name => 2079, + Iir_Kind_Parenthesis_Name => 2084, + Iir_Kind_Package_Pathname => 2088, + Iir_Kind_Absolute_Pathname => 2089, + Iir_Kind_Relative_Pathname => 2090, + Iir_Kind_Pathname_Element => 2095, + Iir_Kind_Base_Attribute => 2097, + Iir_Kind_Subtype_Attribute => 2102, + Iir_Kind_Element_Attribute => 2107, + Iir_Kind_Across_Attribute => 2112, + Iir_Kind_Through_Attribute => 2117, + Iir_Kind_Nature_Reference_Attribute => 2121, + Iir_Kind_Left_Type_Attribute => 2126, + Iir_Kind_Right_Type_Attribute => 2131, + Iir_Kind_High_Type_Attribute => 2136, + Iir_Kind_Low_Type_Attribute => 2141, + Iir_Kind_Ascending_Type_Attribute => 2146, + Iir_Kind_Image_Attribute => 2152, + Iir_Kind_Value_Attribute => 2158, + Iir_Kind_Pos_Attribute => 2164, + Iir_Kind_Val_Attribute => 2170, + Iir_Kind_Succ_Attribute => 2176, + Iir_Kind_Pred_Attribute => 2182, + Iir_Kind_Leftof_Attribute => 2188, + Iir_Kind_Rightof_Attribute => 2194, + Iir_Kind_Signal_Slew_Attribute => 2202, + Iir_Kind_Quantity_Slew_Attribute => 2210, + Iir_Kind_Ramp_Attribute => 2218, + Iir_Kind_Zoh_Attribute => 2226, + Iir_Kind_Ltf_Attribute => 2234, + Iir_Kind_Ztf_Attribute => 2244, + Iir_Kind_Dot_Attribute => 2251, + Iir_Kind_Integ_Attribute => 2258, + Iir_Kind_Quantity_Delayed_Attribute => 2266, + Iir_Kind_Above_Attribute => 2274, + Iir_Kind_Delayed_Attribute => 2283, + Iir_Kind_Stable_Attribute => 2292, + Iir_Kind_Quiet_Attribute => 2301, + Iir_Kind_Transaction_Attribute => 2310, + Iir_Kind_Event_Attribute => 2314, + Iir_Kind_Active_Attribute => 2318, + Iir_Kind_Last_Event_Attribute => 2322, + Iir_Kind_Last_Active_Attribute => 2326, + Iir_Kind_Last_Value_Attribute => 2330, + Iir_Kind_Driving_Attribute => 2334, + Iir_Kind_Driving_Value_Attribute => 2338, + Iir_Kind_Behavior_Attribute => 2338, + Iir_Kind_Structure_Attribute => 2338, + Iir_Kind_Simple_Name_Attribute => 2345, + Iir_Kind_Instance_Name_Attribute => 2350, + Iir_Kind_Path_Name_Attribute => 2355, + Iir_Kind_Left_Array_Attribute => 2362, + Iir_Kind_Right_Array_Attribute => 2369, + Iir_Kind_High_Array_Attribute => 2376, + Iir_Kind_Low_Array_Attribute => 2383, + Iir_Kind_Length_Array_Attribute => 2390, + Iir_Kind_Ascending_Array_Attribute => 2397, + Iir_Kind_Range_Array_Attribute => 2404, + Iir_Kind_Reverse_Range_Array_Attribute => 2411, + Iir_Kind_Attribute_Name => 2420 ); function Get_Fields_First (K : Iir_Kind) return Fields_Index is @@ -8662,6 +8674,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Group_Declaration | Iir_Kind_Non_Object_Alias_Declaration | Iir_Kind_Psl_Declaration + | Iir_Kind_Psl_Boolean_Parameter | Iir_Kind_Psl_Endpoint_Declaration | Iir_Kind_Function_Declaration | Iir_Kind_Procedure_Declaration @@ -8799,6 +8812,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Unit_Declaration | Iir_Kind_Attribute_Declaration | Iir_Kind_Element_Declaration + | Iir_Kind_Psl_Boolean_Parameter | Iir_Kind_Psl_Endpoint_Declaration | Iir_Kind_Enumeration_Literal | Iir_Kind_Function_Declaration @@ -9590,6 +9604,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Nature_Element_Declaration | Iir_Kind_Non_Object_Alias_Declaration | Iir_Kind_Psl_Declaration + | Iir_Kind_Psl_Boolean_Parameter | Iir_Kind_Psl_Endpoint_Declaration | Iir_Kind_Enumeration_Literal | Iir_Kind_Function_Declaration @@ -9759,6 +9774,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Nature_Element_Declaration | Iir_Kind_Non_Object_Alias_Declaration | Iir_Kind_Psl_Declaration + | Iir_Kind_Psl_Boolean_Parameter | Iir_Kind_Psl_Endpoint_Declaration | Iir_Kind_Enumeration_Literal | Iir_Kind_Function_Declaration @@ -11116,6 +11132,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Nature_Element_Declaration | Iir_Kind_Non_Object_Alias_Declaration | Iir_Kind_Psl_Declaration + | Iir_Kind_Psl_Boolean_Parameter | Iir_Kind_Psl_Endpoint_Declaration | Iir_Kind_Enumeration_Literal | Iir_Kind_Function_Declaration @@ -11326,6 +11343,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Attribute_Value | Iir_Kind_Range_Expression | Iir_Kind_Unit_Declaration + | Iir_Kind_Psl_Boolean_Parameter | Iir_Kind_Psl_Endpoint_Declaration | Iir_Kind_Enumeration_Literal | Iir_Kind_Object_Alias_Declaration @@ -12362,6 +12380,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Group_Declaration | Iir_Kind_Non_Object_Alias_Declaration | Iir_Kind_Psl_Declaration + | Iir_Kind_Psl_Boolean_Parameter | Iir_Kind_Psl_Endpoint_Declaration | Iir_Kind_Enumeration_Literal | Iir_Kind_Function_Declaration @@ -12797,6 +12816,7 @@ package body Vhdl.Nodes_Meta is begin case K is when Iir_Kind_Psl_Declaration + | Iir_Kind_Psl_Boolean_Parameter | Iir_Kind_Psl_Endpoint_Declaration => return True; when others => diff --git a/src/vhdl/vhdl-nodes_walk.adb b/src/vhdl/vhdl-nodes_walk.adb index bf4839d3b..63deb3b53 100644 --- a/src/vhdl/vhdl-nodes_walk.adb +++ b/src/vhdl/vhdl-nodes_walk.adb @@ -158,7 +158,8 @@ package body Vhdl.Nodes_Walk is when Iir_Kinds_Simple_Concurrent_Statement | Iir_Kind_Component_Instantiation_Statement | Iir_Kinds_Simultaneous_Statement - | Iir_Kind_Psl_Default_Clock => + | Iir_Kind_Psl_Default_Clock + | Iir_Kind_Psl_Declaration => Status := Cb.all (Stmt); when Iir_Kind_Block_Statement => Status := Cb.all (Stmt); diff --git a/src/vhdl/vhdl-parse_psl.adb b/src/vhdl/vhdl-parse_psl.adb index d6168ca23..55e65e4ef 100644 --- a/src/vhdl/vhdl-parse_psl.adb +++ b/src/vhdl/vhdl-parse_psl.adb @@ -1125,7 +1125,7 @@ package body Vhdl.Parse_Psl is if Current_Token = Tok_Left_Paren then Last_Param := Null_Node; loop - -- precond: '(' or ';'. + -- Skip '(' or ';'. Scan; case Current_Token is when Tok_Psl_Const => @@ -1142,7 +1142,7 @@ package body Vhdl.Parse_Psl is -- Formal parameters. loop - -- precond: parameter_type or ',' + -- Skip parameter_type or ','. Scan; Param := Create_Node_Loc (Pkind); if Current_Token /= Tok_Identifier then @@ -1156,15 +1156,21 @@ package body Vhdl.Parse_Psl is Set_Chain (Last_Param, Param); end if; Last_Param := Param; + + -- Skip identifier. Scan; + exit when Current_Token /= Tok_Comma; + Set_Has_Identifier_List (Last_Param, True); end loop; exit when Current_Token = Tok_Right_Paren; if Current_Token /= Tok_Semi_Colon then - Error_Msg_Parse ("';' expected between formal parameter"); + Error_Msg_Parse ("';' expected between formal parameters"); end if; end loop; + + -- Skip ')'. Scan; end if; diff --git a/src/vhdl/vhdl-prints.adb b/src/vhdl/vhdl-prints.adb index c15f55788..509eb223c 100644 --- a/src/vhdl/vhdl-prints.adb +++ b/src/vhdl/vhdl-prints.adb @@ -254,7 +254,8 @@ package body Vhdl.Prints is | Iir_Kind_Group_Template_Declaration | Iir_Kind_Character_Literal | Iir_Kinds_Process_Statement - | Iir_Kind_Psl_Endpoint_Declaration => + | Iir_Kind_Psl_Endpoint_Declaration + | Iir_Kind_Psl_Boolean_Parameter => Disp_Identifier (Ctxt, Decl); when Iir_Kind_Anonymous_Type_Declaration => Start_Lit (Ctxt, Tok_Identifier); @@ -4966,6 +4967,8 @@ package body Vhdl.Prints is Disp_Psl_Assume_Directive (Ctxt, Expr); when Iir_Kind_Psl_Restrict_Directive => Disp_Psl_Restrict_Directive (Ctxt, Expr); + when Iir_Kind_Psl_Boolean_Parameter => + Disp_Name_Of (Ctxt, Expr); when Iir_Kind_Error => declare diff --git a/src/vhdl/vhdl-sem_expr.adb b/src/vhdl/vhdl-sem_expr.adb index 992d66827..e1938b1a4 100644 --- a/src/vhdl/vhdl-sem_expr.adb +++ b/src/vhdl/vhdl-sem_expr.adb @@ -442,6 +442,7 @@ package body Vhdl.Sem_Expr is | Iir_Kind_Function_Call => return Expr; when Iir_Kind_Psl_Endpoint_Declaration + | Iir_Kind_Psl_Boolean_Parameter | Iir_Kind_Psl_Prev | Iir_Kind_Psl_Stable | Iir_Kind_Psl_Rose @@ -4824,7 +4825,8 @@ package body Vhdl.Sem_Expr is return; when Iir_Kinds_External_Name => return; - when Iir_Kind_Psl_Endpoint_Declaration => + when Iir_Kind_Psl_Endpoint_Declaration + | Iir_Kind_Psl_Boolean_Parameter => return; when Iir_Kind_File_Declaration | Iir_Kind_Interface_File_Declaration => diff --git a/src/vhdl/vhdl-sem_names.adb b/src/vhdl/vhdl-sem_names.adb index dc7c0ab60..6962072df 100644 --- a/src/vhdl/vhdl-sem_names.adb +++ b/src/vhdl/vhdl-sem_names.adb @@ -2038,7 +2038,8 @@ package body Vhdl.Sem_Names is return Res; when Iir_Kind_Psl_Expression => return Res; - when Iir_Kind_Psl_Declaration => + when Iir_Kind_Psl_Declaration + | Iir_Kind_Psl_Boolean_Parameter => return Name; when Iir_Kind_Element_Declaration => -- Certainly an error! diff --git a/src/vhdl/vhdl-sem_psl.adb b/src/vhdl/vhdl-sem_psl.adb index fc2c15fab..f498f0115 100644 --- a/src/vhdl/vhdl-sem_psl.adb +++ b/src/vhdl/vhdl-sem_psl.adb @@ -300,7 +300,8 @@ package body Vhdl.Sem_Psl is when Iir_Kind_Overload_List => -- FIXME: todo. raise Internal_Error; - when Iir_Kind_Psl_Declaration => + when Iir_Kind_Psl_Declaration + | Iir_Kind_Psl_Boolean_Parameter => Decl := Get_Psl_Declaration (Name); case Get_Kind (Decl) is when N_Sequence_Declaration => @@ -704,7 +705,12 @@ package body Vhdl.Sem_Psl is -- Make formal parameters visible. Formal := Get_Parameter_List (Decl); while Formal /= Null_PSL_Node loop - El := Create_Iir (Iir_Kind_Psl_Declaration); + if Get_Kind (Formal) = N_Boolean_Parameter then + El := Create_Iir (Iir_Kind_Psl_Boolean_Parameter); + Set_Type (El, Std_Package.Boolean_Type_Definition); + else + El := Create_Iir (Iir_Kind_Psl_Declaration); + end if; Set_Location (El, Get_Location (Formal)); Set_Identifier (El, Get_Identifier (Formal)); Set_Psl_Declaration (El, Formal); diff --git a/src/vhdl/vhdl-utils.adb b/src/vhdl/vhdl-utils.adb index 9b7e84c04..6f362073d 100644 --- a/src/vhdl/vhdl-utils.adb +++ b/src/vhdl/vhdl-utils.adb @@ -364,6 +364,7 @@ package body Vhdl.Utils is | Iir_Kind_Element_Declaration | Iir_Kind_Nature_Element_Declaration | Iir_Kind_Psl_Endpoint_Declaration + | Iir_Kind_Psl_Boolean_Parameter | Iir_Kind_Psl_Declaration | Iir_Kind_Psl_Default_Clock | Iir_Kind_Package_Pathname |