aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2021-11-04 07:34:04 +0100
committerTristan Gingold <tgingold@free.fr>2021-11-04 07:34:04 +0100
commit46256fac0b1bf55c61deba39a368f53a2297b583 (patch)
tree30017688b7697be0813ca16177cdebca5ff2de3b
parentc56db23368ecb4df5eaef3920a46d12150235070 (diff)
downloadghdl-46256fac0b1bf55c61deba39a368f53a2297b583.tar.gz
ghdl-46256fac0b1bf55c61deba39a368f53a2297b583.tar.bz2
ghdl-46256fac0b1bf55c61deba39a368f53a2297b583.zip
vhdl: parse PSL inherit spec. For #1899
-rw-r--r--pyGHDL/libghdl/vhdl/nodes.py647
-rw-r--r--pyGHDL/libghdl/vhdl/nodes_meta.py108
-rw-r--r--src/vhdl/vhdl-elocations.adb1
-rw-r--r--src/vhdl/vhdl-elocations.ads2
-rw-r--r--src/vhdl/vhdl-errors.adb2
-rw-r--r--src/vhdl/vhdl-nodes.adb33
-rw-r--r--src/vhdl/vhdl-nodes.ads22
-rw-r--r--src/vhdl/vhdl-nodes_meta.adb671
-rw-r--r--src/vhdl/vhdl-nodes_meta.ads4
-rw-r--r--src/vhdl/vhdl-parse.adb48
-rw-r--r--src/vhdl/vhdl-utils.adb1
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