diff options
-rw-r--r-- | pyGHDL/libghdl/vhdl/nodes.py | 647 | ||||
-rw-r--r-- | pyGHDL/libghdl/vhdl/nodes_meta.py | 108 | ||||
-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 |
11 files changed, 800 insertions, 739 deletions
diff --git a/pyGHDL/libghdl/vhdl/nodes.py b/pyGHDL/libghdl/vhdl/nodes.py index 36cc357e8..d9f882b71 100644 --- a/pyGHDL/libghdl/vhdl/nodes.py +++ b/pyGHDL/libghdl/vhdl/nodes.py @@ -52,316 +52,317 @@ class Iir_Kind(IntEnum): Library_Clause = 5 Use_Clause = 6 Context_Reference = 7 - Integer_Literal = 8 - Floating_Point_Literal = 9 - Null_Literal = 10 - String_Literal8 = 11 - Physical_Int_Literal = 12 - Physical_Fp_Literal = 13 - Simple_Aggregate = 14 - Overflow_Literal = 15 - Unaffected_Waveform = 16 - Waveform_Element = 17 - Conditional_Waveform = 18 - Conditional_Expression = 19 - Association_Element_By_Expression = 20 - Association_Element_By_Name = 21 - Association_Element_By_Individual = 22 - Association_Element_Open = 23 - Association_Element_Package = 24 - Association_Element_Type = 25 - Association_Element_Subprogram = 26 - Association_Element_Terminal = 27 - Choice_By_Range = 28 - Choice_By_Expression = 29 - Choice_By_Others = 30 - Choice_By_None = 31 - Choice_By_Name = 32 - Entity_Aspect_Entity = 33 - Entity_Aspect_Configuration = 34 - Entity_Aspect_Open = 35 - Psl_Hierarchical_Name = 36 - Block_Configuration = 37 - Block_Header = 38 - Component_Configuration = 39 - Binding_Indication = 40 - Entity_Class = 41 - Attribute_Value = 42 - Signature = 43 - Aggregate_Info = 44 - Procedure_Call = 45 - Record_Element_Constraint = 46 - Array_Element_Resolution = 47 - Record_Resolution = 48 - Record_Element_Resolution = 49 - Break_Element = 50 - Attribute_Specification = 51 - Disconnection_Specification = 52 - Step_Limit_Specification = 53 - Configuration_Specification = 54 - Access_Type_Definition = 55 - Incomplete_Type_Definition = 56 - Interface_Type_Definition = 57 - File_Type_Definition = 58 - Protected_Type_Declaration = 59 - Record_Type_Definition = 60 - Array_Type_Definition = 61 - Array_Subtype_Definition = 62 - Record_Subtype_Definition = 63 - Access_Subtype_Definition = 64 - Physical_Subtype_Definition = 65 - Floating_Subtype_Definition = 66 - Integer_Subtype_Definition = 67 - Enumeration_Subtype_Definition = 68 - Enumeration_Type_Definition = 69 - Integer_Type_Definition = 70 - Floating_Type_Definition = 71 - Physical_Type_Definition = 72 - Range_Expression = 73 - Protected_Type_Body = 74 - Wildcard_Type_Definition = 75 - Subtype_Definition = 76 - Scalar_Nature_Definition = 77 - Record_Nature_Definition = 78 - Array_Nature_Definition = 79 - Array_Subnature_Definition = 80 - Overload_List = 81 - Entity_Declaration = 82 - Configuration_Declaration = 83 - Context_Declaration = 84 - Package_Declaration = 85 - Package_Instantiation_Declaration = 86 - Vmode_Declaration = 87 - Vprop_Declaration = 88 - Vunit_Declaration = 89 - Package_Body = 90 - Architecture_Body = 91 - Type_Declaration = 92 - Anonymous_Type_Declaration = 93 - Subtype_Declaration = 94 - Nature_Declaration = 95 - Subnature_Declaration = 96 - Package_Header = 97 - Unit_Declaration = 98 - Library_Declaration = 99 - Component_Declaration = 100 - Attribute_Declaration = 101 - Group_Template_Declaration = 102 - Group_Declaration = 103 - Element_Declaration = 104 - Nature_Element_Declaration = 105 - Non_Object_Alias_Declaration = 106 - Psl_Declaration = 107 - Psl_Endpoint_Declaration = 108 - Enumeration_Literal = 109 - Function_Declaration = 110 - Procedure_Declaration = 111 - Function_Body = 112 - Procedure_Body = 113 - Function_Instantiation_Declaration = 114 - Procedure_Instantiation_Declaration = 115 - Terminal_Declaration = 116 - Object_Alias_Declaration = 117 - Free_Quantity_Declaration = 118 - Spectrum_Quantity_Declaration = 119 - Noise_Quantity_Declaration = 120 - Across_Quantity_Declaration = 121 - Through_Quantity_Declaration = 122 - File_Declaration = 123 - Guard_Signal_Declaration = 124 - Signal_Declaration = 125 - Variable_Declaration = 126 - Constant_Declaration = 127 - Iterator_Declaration = 128 - Interface_Constant_Declaration = 129 - Interface_Variable_Declaration = 130 - Interface_Signal_Declaration = 131 - Interface_File_Declaration = 132 - Interface_Quantity_Declaration = 133 - Interface_Terminal_Declaration = 134 - Interface_Type_Declaration = 135 - Interface_Package_Declaration = 136 - Interface_Function_Declaration = 137 - Interface_Procedure_Declaration = 138 - Signal_Attribute_Declaration = 139 - Identity_Operator = 140 - Negation_Operator = 141 - Absolute_Operator = 142 - Not_Operator = 143 - Implicit_Condition_Operator = 144 - Condition_Operator = 145 - Reduction_And_Operator = 146 - Reduction_Or_Operator = 147 - Reduction_Nand_Operator = 148 - Reduction_Nor_Operator = 149 - Reduction_Xor_Operator = 150 - Reduction_Xnor_Operator = 151 - And_Operator = 152 - Or_Operator = 153 - Nand_Operator = 154 - Nor_Operator = 155 - Xor_Operator = 156 - Xnor_Operator = 157 - Equality_Operator = 158 - Inequality_Operator = 159 - Less_Than_Operator = 160 - Less_Than_Or_Equal_Operator = 161 - Greater_Than_Operator = 162 - Greater_Than_Or_Equal_Operator = 163 - Match_Equality_Operator = 164 - Match_Inequality_Operator = 165 - Match_Less_Than_Operator = 166 - Match_Less_Than_Or_Equal_Operator = 167 - Match_Greater_Than_Operator = 168 - Match_Greater_Than_Or_Equal_Operator = 169 - Sll_Operator = 170 - Sla_Operator = 171 - Srl_Operator = 172 - Sra_Operator = 173 - Rol_Operator = 174 - Ror_Operator = 175 - Addition_Operator = 176 - Substraction_Operator = 177 - Concatenation_Operator = 178 - Multiplication_Operator = 179 - Division_Operator = 180 - Modulus_Operator = 181 - Remainder_Operator = 182 - Exponentiation_Operator = 183 - Function_Call = 184 - Aggregate = 185 - Parenthesis_Expression = 186 - Qualified_Expression = 187 - Type_Conversion = 188 - Allocator_By_Expression = 189 - Allocator_By_Subtype = 190 - Selected_Element = 191 - Dereference = 192 - Implicit_Dereference = 193 - Slice_Name = 194 - Indexed_Name = 195 - Psl_Prev = 196 - Psl_Stable = 197 - Psl_Rose = 198 - Psl_Fell = 199 - Psl_Onehot = 200 - Psl_Onehot0 = 201 - Psl_Expression = 202 - Sensitized_Process_Statement = 203 - Process_Statement = 204 - Concurrent_Simple_Signal_Assignment = 205 - Concurrent_Conditional_Signal_Assignment = 206 - Concurrent_Selected_Signal_Assignment = 207 - Concurrent_Assertion_Statement = 208 - Concurrent_Procedure_Call_Statement = 209 - Concurrent_Break_Statement = 210 - Psl_Assert_Directive = 211 - Psl_Assume_Directive = 212 - Psl_Cover_Directive = 213 - Psl_Restrict_Directive = 214 - Block_Statement = 215 - If_Generate_Statement = 216 - Case_Generate_Statement = 217 - For_Generate_Statement = 218 - Component_Instantiation_Statement = 219 - Psl_Default_Clock = 220 - Generate_Statement_Body = 221 - If_Generate_Else_Clause = 222 - Simple_Simultaneous_Statement = 223 - Simultaneous_Null_Statement = 224 - Simultaneous_Procedural_Statement = 225 - Simultaneous_Case_Statement = 226 - Simultaneous_If_Statement = 227 - Simultaneous_Elsif = 228 - Simple_Signal_Assignment_Statement = 229 - Conditional_Signal_Assignment_Statement = 230 - Selected_Waveform_Assignment_Statement = 231 - Signal_Force_Assignment_Statement = 232 - Signal_Release_Assignment_Statement = 233 - Null_Statement = 234 - Assertion_Statement = 235 - Report_Statement = 236 - Wait_Statement = 237 - Variable_Assignment_Statement = 238 - Conditional_Variable_Assignment_Statement = 239 - Return_Statement = 240 - For_Loop_Statement = 241 - While_Loop_Statement = 242 - Next_Statement = 243 - Exit_Statement = 244 - Case_Statement = 245 - Procedure_Call_Statement = 246 - Break_Statement = 247 - If_Statement = 248 - Elsif = 249 - Character_Literal = 250 - Simple_Name = 251 - Selected_Name = 252 - Operator_Symbol = 253 - Reference_Name = 254 - External_Constant_Name = 255 - External_Signal_Name = 256 - External_Variable_Name = 257 - Selected_By_All_Name = 258 - Parenthesis_Name = 259 - Package_Pathname = 260 - Absolute_Pathname = 261 - Relative_Pathname = 262 - Pathname_Element = 263 - Base_Attribute = 264 - Subtype_Attribute = 265 - Element_Attribute = 266 - Across_Attribute = 267 - Through_Attribute = 268 - Nature_Reference_Attribute = 269 - Left_Type_Attribute = 270 - Right_Type_Attribute = 271 - High_Type_Attribute = 272 - Low_Type_Attribute = 273 - Ascending_Type_Attribute = 274 - Image_Attribute = 275 - Value_Attribute = 276 - Pos_Attribute = 277 - Val_Attribute = 278 - Succ_Attribute = 279 - Pred_Attribute = 280 - Leftof_Attribute = 281 - Rightof_Attribute = 282 - Signal_Slew_Attribute = 283 - Quantity_Slew_Attribute = 284 - Ramp_Attribute = 285 - Zoh_Attribute = 286 - Ltf_Attribute = 287 - Ztf_Attribute = 288 - Dot_Attribute = 289 - Integ_Attribute = 290 - Above_Attribute = 291 - Quantity_Delayed_Attribute = 292 - Delayed_Attribute = 293 - Stable_Attribute = 294 - Quiet_Attribute = 295 - Transaction_Attribute = 296 - Event_Attribute = 297 - Active_Attribute = 298 - Last_Event_Attribute = 299 - Last_Active_Attribute = 300 - Last_Value_Attribute = 301 - Driving_Attribute = 302 - Driving_Value_Attribute = 303 - Behavior_Attribute = 304 - Structure_Attribute = 305 - Simple_Name_Attribute = 306 - Instance_Name_Attribute = 307 - Path_Name_Attribute = 308 - Left_Array_Attribute = 309 - Right_Array_Attribute = 310 - High_Array_Attribute = 311 - Low_Array_Attribute = 312 - Length_Array_Attribute = 313 - Ascending_Array_Attribute = 314 - Range_Array_Attribute = 315 - Reverse_Range_Array_Attribute = 316 - Attribute_Name = 317 + PSL_Inherit_Spec = 8 + Integer_Literal = 9 + Floating_Point_Literal = 10 + Null_Literal = 11 + String_Literal8 = 12 + Physical_Int_Literal = 13 + Physical_Fp_Literal = 14 + Simple_Aggregate = 15 + Overflow_Literal = 16 + Unaffected_Waveform = 17 + Waveform_Element = 18 + Conditional_Waveform = 19 + Conditional_Expression = 20 + Association_Element_By_Expression = 21 + Association_Element_By_Name = 22 + Association_Element_By_Individual = 23 + Association_Element_Open = 24 + Association_Element_Package = 25 + Association_Element_Type = 26 + Association_Element_Subprogram = 27 + Association_Element_Terminal = 28 + Choice_By_Range = 29 + Choice_By_Expression = 30 + Choice_By_Others = 31 + Choice_By_None = 32 + Choice_By_Name = 33 + Entity_Aspect_Entity = 34 + Entity_Aspect_Configuration = 35 + Entity_Aspect_Open = 36 + Psl_Hierarchical_Name = 37 + Block_Configuration = 38 + Block_Header = 39 + Component_Configuration = 40 + Binding_Indication = 41 + Entity_Class = 42 + Attribute_Value = 43 + Signature = 44 + Aggregate_Info = 45 + Procedure_Call = 46 + Record_Element_Constraint = 47 + Array_Element_Resolution = 48 + Record_Resolution = 49 + Record_Element_Resolution = 50 + Break_Element = 51 + Attribute_Specification = 52 + Disconnection_Specification = 53 + Step_Limit_Specification = 54 + Configuration_Specification = 55 + Access_Type_Definition = 56 + Incomplete_Type_Definition = 57 + Interface_Type_Definition = 58 + File_Type_Definition = 59 + Protected_Type_Declaration = 60 + Record_Type_Definition = 61 + Array_Type_Definition = 62 + Array_Subtype_Definition = 63 + Record_Subtype_Definition = 64 + Access_Subtype_Definition = 65 + Physical_Subtype_Definition = 66 + Floating_Subtype_Definition = 67 + Integer_Subtype_Definition = 68 + Enumeration_Subtype_Definition = 69 + Enumeration_Type_Definition = 70 + Integer_Type_Definition = 71 + Floating_Type_Definition = 72 + Physical_Type_Definition = 73 + Range_Expression = 74 + Protected_Type_Body = 75 + Wildcard_Type_Definition = 76 + Subtype_Definition = 77 + Scalar_Nature_Definition = 78 + Record_Nature_Definition = 79 + Array_Nature_Definition = 80 + Array_Subnature_Definition = 81 + Overload_List = 82 + Entity_Declaration = 83 + Configuration_Declaration = 84 + Context_Declaration = 85 + Package_Declaration = 86 + Package_Instantiation_Declaration = 87 + Vmode_Declaration = 88 + Vprop_Declaration = 89 + Vunit_Declaration = 90 + Package_Body = 91 + Architecture_Body = 92 + Type_Declaration = 93 + Anonymous_Type_Declaration = 94 + Subtype_Declaration = 95 + Nature_Declaration = 96 + Subnature_Declaration = 97 + Package_Header = 98 + Unit_Declaration = 99 + Library_Declaration = 100 + Component_Declaration = 101 + Attribute_Declaration = 102 + Group_Template_Declaration = 103 + Group_Declaration = 104 + Element_Declaration = 105 + Nature_Element_Declaration = 106 + Non_Object_Alias_Declaration = 107 + Psl_Declaration = 108 + Psl_Endpoint_Declaration = 109 + Enumeration_Literal = 110 + Function_Declaration = 111 + Procedure_Declaration = 112 + Function_Body = 113 + Procedure_Body = 114 + Function_Instantiation_Declaration = 115 + Procedure_Instantiation_Declaration = 116 + Terminal_Declaration = 117 + Object_Alias_Declaration = 118 + Free_Quantity_Declaration = 119 + Spectrum_Quantity_Declaration = 120 + Noise_Quantity_Declaration = 121 + Across_Quantity_Declaration = 122 + Through_Quantity_Declaration = 123 + File_Declaration = 124 + Guard_Signal_Declaration = 125 + Signal_Declaration = 126 + Variable_Declaration = 127 + Constant_Declaration = 128 + Iterator_Declaration = 129 + Interface_Constant_Declaration = 130 + Interface_Variable_Declaration = 131 + Interface_Signal_Declaration = 132 + Interface_File_Declaration = 133 + Interface_Quantity_Declaration = 134 + Interface_Terminal_Declaration = 135 + Interface_Type_Declaration = 136 + Interface_Package_Declaration = 137 + Interface_Function_Declaration = 138 + Interface_Procedure_Declaration = 139 + Signal_Attribute_Declaration = 140 + Identity_Operator = 141 + Negation_Operator = 142 + Absolute_Operator = 143 + Not_Operator = 144 + Implicit_Condition_Operator = 145 + Condition_Operator = 146 + Reduction_And_Operator = 147 + Reduction_Or_Operator = 148 + Reduction_Nand_Operator = 149 + Reduction_Nor_Operator = 150 + Reduction_Xor_Operator = 151 + Reduction_Xnor_Operator = 152 + And_Operator = 153 + Or_Operator = 154 + Nand_Operator = 155 + Nor_Operator = 156 + Xor_Operator = 157 + Xnor_Operator = 158 + Equality_Operator = 159 + Inequality_Operator = 160 + Less_Than_Operator = 161 + Less_Than_Or_Equal_Operator = 162 + Greater_Than_Operator = 163 + Greater_Than_Or_Equal_Operator = 164 + Match_Equality_Operator = 165 + Match_Inequality_Operator = 166 + Match_Less_Than_Operator = 167 + Match_Less_Than_Or_Equal_Operator = 168 + Match_Greater_Than_Operator = 169 + Match_Greater_Than_Or_Equal_Operator = 170 + Sll_Operator = 171 + Sla_Operator = 172 + Srl_Operator = 173 + Sra_Operator = 174 + Rol_Operator = 175 + Ror_Operator = 176 + Addition_Operator = 177 + Substraction_Operator = 178 + Concatenation_Operator = 179 + Multiplication_Operator = 180 + Division_Operator = 181 + Modulus_Operator = 182 + Remainder_Operator = 183 + Exponentiation_Operator = 184 + Function_Call = 185 + Aggregate = 186 + Parenthesis_Expression = 187 + Qualified_Expression = 188 + Type_Conversion = 189 + Allocator_By_Expression = 190 + Allocator_By_Subtype = 191 + Selected_Element = 192 + Dereference = 193 + Implicit_Dereference = 194 + Slice_Name = 195 + Indexed_Name = 196 + Psl_Prev = 197 + Psl_Stable = 198 + Psl_Rose = 199 + Psl_Fell = 200 + Psl_Onehot = 201 + Psl_Onehot0 = 202 + Psl_Expression = 203 + Sensitized_Process_Statement = 204 + Process_Statement = 205 + Concurrent_Simple_Signal_Assignment = 206 + Concurrent_Conditional_Signal_Assignment = 207 + Concurrent_Selected_Signal_Assignment = 208 + Concurrent_Assertion_Statement = 209 + Concurrent_Procedure_Call_Statement = 210 + Concurrent_Break_Statement = 211 + Psl_Assert_Directive = 212 + Psl_Assume_Directive = 213 + Psl_Cover_Directive = 214 + Psl_Restrict_Directive = 215 + Block_Statement = 216 + If_Generate_Statement = 217 + Case_Generate_Statement = 218 + For_Generate_Statement = 219 + Component_Instantiation_Statement = 220 + Psl_Default_Clock = 221 + Generate_Statement_Body = 222 + If_Generate_Else_Clause = 223 + Simple_Simultaneous_Statement = 224 + Simultaneous_Null_Statement = 225 + Simultaneous_Procedural_Statement = 226 + Simultaneous_Case_Statement = 227 + Simultaneous_If_Statement = 228 + Simultaneous_Elsif = 229 + Simple_Signal_Assignment_Statement = 230 + Conditional_Signal_Assignment_Statement = 231 + Selected_Waveform_Assignment_Statement = 232 + Signal_Force_Assignment_Statement = 233 + Signal_Release_Assignment_Statement = 234 + Null_Statement = 235 + Assertion_Statement = 236 + Report_Statement = 237 + Wait_Statement = 238 + Variable_Assignment_Statement = 239 + Conditional_Variable_Assignment_Statement = 240 + Return_Statement = 241 + For_Loop_Statement = 242 + While_Loop_Statement = 243 + Next_Statement = 244 + Exit_Statement = 245 + Case_Statement = 246 + Procedure_Call_Statement = 247 + Break_Statement = 248 + If_Statement = 249 + Elsif = 250 + Character_Literal = 251 + Simple_Name = 252 + Selected_Name = 253 + Operator_Symbol = 254 + Reference_Name = 255 + External_Constant_Name = 256 + External_Signal_Name = 257 + External_Variable_Name = 258 + Selected_By_All_Name = 259 + Parenthesis_Name = 260 + Package_Pathname = 261 + Absolute_Pathname = 262 + Relative_Pathname = 263 + Pathname_Element = 264 + Base_Attribute = 265 + Subtype_Attribute = 266 + Element_Attribute = 267 + Across_Attribute = 268 + Through_Attribute = 269 + Nature_Reference_Attribute = 270 + Left_Type_Attribute = 271 + Right_Type_Attribute = 272 + High_Type_Attribute = 273 + Low_Type_Attribute = 274 + Ascending_Type_Attribute = 275 + Image_Attribute = 276 + Value_Attribute = 277 + Pos_Attribute = 278 + Val_Attribute = 279 + Succ_Attribute = 280 + Pred_Attribute = 281 + Leftof_Attribute = 282 + Rightof_Attribute = 283 + Signal_Slew_Attribute = 284 + Quantity_Slew_Attribute = 285 + Ramp_Attribute = 286 + Zoh_Attribute = 287 + Ltf_Attribute = 288 + Ztf_Attribute = 289 + Dot_Attribute = 290 + Integ_Attribute = 291 + Above_Attribute = 292 + Quantity_Delayed_Attribute = 293 + Delayed_Attribute = 294 + Stable_Attribute = 295 + Quiet_Attribute = 296 + Transaction_Attribute = 297 + Event_Attribute = 298 + Active_Attribute = 299 + Last_Event_Attribute = 300 + Last_Active_Attribute = 301 + Last_Value_Attribute = 302 + Driving_Attribute = 303 + Driving_Value_Attribute = 304 + Behavior_Attribute = 305 + Structure_Attribute = 306 + Simple_Name_Attribute = 307 + Instance_Name_Attribute = 308 + Path_Name_Attribute = 309 + Left_Array_Attribute = 310 + Right_Array_Attribute = 311 + High_Array_Attribute = 312 + Low_Array_Attribute = 313 + Length_Array_Attribute = 314 + Ascending_Array_Attribute = 315 + Range_Array_Attribute = 316 + Reverse_Range_Array_Attribute = 317 + Attribute_Name = 318 @export @@ -2930,19 +2931,6 @@ def Set_Hierarchical_Name(obj: Iir, value: Iir) -> None: @export -@BindToLibGHDL("vhdl__nodes__get_inherit_spec_chain") -def Get_Inherit_Spec_Chain(obj: Iir) -> Iir: - """""" - return 0 - - -@export -@BindToLibGHDL("vhdl__nodes__set_inherit_spec_chain") -def Set_Inherit_Spec_Chain(obj: Iir, value: Iir) -> None: - """""" - - -@export @BindToLibGHDL("vhdl__nodes__get_vunit_item_chain") def Get_Vunit_Item_Chain(obj: Iir) -> Iir: """""" @@ -3554,6 +3542,19 @@ def Set_Context_Reference_Chain(obj: Iir, value: Iir) -> None: @export +@BindToLibGHDL("vhdl__nodes__get_inherit_spec_chain") +def Get_Inherit_Spec_Chain(obj: Iir) -> Iir: + """""" + return 0 + + +@export +@BindToLibGHDL("vhdl__nodes__set_inherit_spec_chain") +def Set_Inherit_Spec_Chain(obj: Iir, value: Iir) -> None: + """""" + + +@export @BindToLibGHDL("vhdl__nodes__get_selected_name") def Get_Selected_Name(obj: Iir) -> Iir: """""" diff --git a/pyGHDL/libghdl/vhdl/nodes_meta.py b/pyGHDL/libghdl/vhdl/nodes_meta.py index 4e66fae44..726d885be 100644 --- a/pyGHDL/libghdl/vhdl/nodes_meta.py +++ b/pyGHDL/libghdl/vhdl/nodes_meta.py @@ -201,54 +201,54 @@ class fields(IntEnum): Macro_Expanded_Flag = 81 Need_Instance_Bodies = 82 Hierarchical_Name = 83 - Inherit_Spec_Chain = 84 - Vunit_Item_Chain = 85 - Bound_Vunit_Chain = 86 - Verification_Block_Configuration = 87 - Block_Configuration = 88 - Concurrent_Statement_Chain = 89 - Chain = 90 - Port_Chain = 91 - Generic_Chain = 92 - Type = 93 - Subtype_Indication = 94 - Discrete_Range = 95 - Type_Definition = 96 - Subtype_Definition = 97 - Incomplete_Type_Declaration = 98 - Interface_Type_Subprograms = 99 - Nature_Definition = 100 - Nature = 101 - Subnature_Indication = 102 - Mode = 103 - Guarded_Signal_Flag = 104 - Signal_Kind = 105 - Base_Name = 106 - Interface_Declaration_Chain = 107 - Subprogram_Specification = 108 - Sequential_Statement_Chain = 109 - Simultaneous_Statement_Chain = 110 - Subprogram_Body = 111 - Overload_Number = 112 - Subprogram_Depth = 113 - Subprogram_Hash = 114 - Impure_Depth = 115 - Return_Type = 116 - Implicit_Definition = 117 - Uninstantiated_Subprogram_Name = 118 - Default_Value = 119 - Deferred_Declaration = 120 - Deferred_Declaration_Flag = 121 - Shared_Flag = 122 - Design_Unit = 123 - Block_Statement = 124 - Signal_Driver = 125 - Declaration_Chain = 126 - File_Logical_Name = 127 - File_Open_Kind = 128 - Element_Position = 129 - Use_Clause_Chain = 130 - Context_Reference_Chain = 131 + Vunit_Item_Chain = 84 + Bound_Vunit_Chain = 85 + Verification_Block_Configuration = 86 + Block_Configuration = 87 + Concurrent_Statement_Chain = 88 + Chain = 89 + Port_Chain = 90 + Generic_Chain = 91 + Type = 92 + Subtype_Indication = 93 + Discrete_Range = 94 + Type_Definition = 95 + Subtype_Definition = 96 + Incomplete_Type_Declaration = 97 + Interface_Type_Subprograms = 98 + Nature_Definition = 99 + Nature = 100 + Subnature_Indication = 101 + Mode = 102 + Guarded_Signal_Flag = 103 + Signal_Kind = 104 + Base_Name = 105 + Interface_Declaration_Chain = 106 + Subprogram_Specification = 107 + Sequential_Statement_Chain = 108 + Simultaneous_Statement_Chain = 109 + Subprogram_Body = 110 + Overload_Number = 111 + Subprogram_Depth = 112 + Subprogram_Hash = 113 + Impure_Depth = 114 + Return_Type = 115 + Implicit_Definition = 116 + Uninstantiated_Subprogram_Name = 117 + Default_Value = 118 + Deferred_Declaration = 119 + Deferred_Declaration_Flag = 120 + Shared_Flag = 121 + Design_Unit = 122 + Block_Statement = 123 + Signal_Driver = 124 + Declaration_Chain = 125 + File_Logical_Name = 126 + File_Open_Kind = 127 + Element_Position = 128 + Use_Clause_Chain = 129 + Context_Reference_Chain = 130 + Inherit_Spec_Chain = 131 Selected_Name = 132 Type_Declarator = 133 Complete_Type_Definition = 134 @@ -1128,12 +1128,6 @@ def Has_Hierarchical_Name(kind: IirKind) -> bool: @export -@BindToLibGHDL("vhdl__nodes_meta__has_inherit_spec_chain") -def Has_Inherit_Spec_Chain(kind: IirKind) -> bool: - """""" - - -@export @BindToLibGHDL("vhdl__nodes_meta__has_vunit_item_chain") def Has_Vunit_Item_Chain(kind: IirKind) -> bool: """""" @@ -1416,6 +1410,12 @@ def Has_Context_Reference_Chain(kind: IirKind) -> bool: @export +@BindToLibGHDL("vhdl__nodes_meta__has_inherit_spec_chain") +def Has_Inherit_Spec_Chain(kind: IirKind) -> bool: + """""" + + +@export @BindToLibGHDL("vhdl__nodes_meta__has_selected_name") def Has_Selected_Name(kind: IirKind) -> bool: """""" 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 |