aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2022-08-15 09:15:10 +0200
committerTristan Gingold <tgingold@free.fr>2022-08-15 16:54:37 +0200
commit988eebde6d076261da5e94344b38445e6ed764f0 (patch)
treee4bf9fcbd2a16b786721cefe0cbf40dfe12dfa8d
parentda59184128af74905eb378b43df3e2047c86a9ec (diff)
downloadghdl-988eebde6d076261da5e94344b38445e6ed764f0.tar.gz
ghdl-988eebde6d076261da5e94344b38445e6ed764f0.tar.bz2
ghdl-988eebde6d076261da5e94344b38445e6ed764f0.zip
vhdl: add iir_kind_psl_boolean_parameter node. For #2178
-rw-r--r--pyGHDL/libghdl/vhdl/nodes.py425
-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.adb5
-rw-r--r--src/vhdl/vhdl-nodes.ads26
-rw-r--r--src/vhdl/vhdl-nodes_meta.adb444
-rw-r--r--src/vhdl/vhdl-nodes_walk.adb3
-rw-r--r--src/vhdl/vhdl-parse_psl.adb12
-rw-r--r--src/vhdl/vhdl-prints.adb5
-rw-r--r--src/vhdl/vhdl-sem_expr.adb4
-rw-r--r--src/vhdl/vhdl-sem_names.adb3
-rw-r--r--src/vhdl/vhdl-sem_psl.adb10
-rw-r--r--src/vhdl/vhdl-utils.adb1
14 files changed, 505 insertions, 438 deletions
diff --git a/pyGHDL/libghdl/vhdl/nodes.py b/pyGHDL/libghdl/vhdl/nodes.py
index 181dd4525..40492a9e2 100644
--- a/pyGHDL/libghdl/vhdl/nodes.py
+++ b/pyGHDL/libghdl/vhdl/nodes.py
@@ -155,218 +155,219 @@ class Iir_Kind(IntEnum):
Nature_Element_Declaration = 108
Non_Object_Alias_Declaration = 109
Psl_Declaration = 110
- Psl_Endpoint_Declaration = 111
- Enumeration_Literal = 112
- Function_Declaration = 113
- Procedure_Declaration = 114
- Function_Body = 115
- Procedure_Body = 116
- Function_Instantiation_Declaration = 117
- Procedure_Instantiation_Declaration = 118
- Terminal_Declaration = 119
- Object_Alias_Declaration = 120
- Free_Quantity_Declaration = 121
- Spectrum_Quantity_Declaration = 122
- Noise_Quantity_Declaration = 123
- Across_Quantity_Declaration = 124
- Through_Quantity_Declaration = 125
- File_Declaration = 126
- Guard_Signal_Declaration = 127
- Signal_Declaration = 128
- Variable_Declaration = 129
- Constant_Declaration = 130
- Iterator_Declaration = 131
- Interface_Constant_Declaration = 132
- Interface_Variable_Declaration = 133
- Interface_Signal_Declaration = 134
- Interface_File_Declaration = 135
- Interface_Quantity_Declaration = 136
- Interface_Terminal_Declaration = 137
- Interface_Type_Declaration = 138
- Interface_Package_Declaration = 139
- Interface_Function_Declaration = 140
- Interface_Procedure_Declaration = 141
- Attribute_Implicit_Declaration = 142
- Suspend_State_Declaration = 143
- Identity_Operator = 144
- Negation_Operator = 145
- Absolute_Operator = 146
- Not_Operator = 147
- Implicit_Condition_Operator = 148
- Condition_Operator = 149
- Reduction_And_Operator = 150
- Reduction_Or_Operator = 151
- Reduction_Nand_Operator = 152
- Reduction_Nor_Operator = 153
- Reduction_Xor_Operator = 154
- Reduction_Xnor_Operator = 155
- And_Operator = 156
- Or_Operator = 157
- Nand_Operator = 158
- Nor_Operator = 159
- Xor_Operator = 160
- Xnor_Operator = 161
- Equality_Operator = 162
- Inequality_Operator = 163
- Less_Than_Operator = 164
- Less_Than_Or_Equal_Operator = 165
- Greater_Than_Operator = 166
- Greater_Than_Or_Equal_Operator = 167
- Match_Equality_Operator = 168
- Match_Inequality_Operator = 169
- Match_Less_Than_Operator = 170
- Match_Less_Than_Or_Equal_Operator = 171
- Match_Greater_Than_Operator = 172
- Match_Greater_Than_Or_Equal_Operator = 173
- Sll_Operator = 174
- Sla_Operator = 175
- Srl_Operator = 176
- Sra_Operator = 177
- Rol_Operator = 178
- Ror_Operator = 179
- Addition_Operator = 180
- Substraction_Operator = 181
- Concatenation_Operator = 182
- Multiplication_Operator = 183
- Division_Operator = 184
- Modulus_Operator = 185
- Remainder_Operator = 186
- Exponentiation_Operator = 187
- Function_Call = 188
- Aggregate = 189
- Parenthesis_Expression = 190
- Qualified_Expression = 191
- Type_Conversion = 192
- Allocator_By_Expression = 193
- Allocator_By_Subtype = 194
- Selected_Element = 195
- Dereference = 196
- Implicit_Dereference = 197
- Slice_Name = 198
- Indexed_Name = 199
- Psl_Prev = 200
- Psl_Stable = 201
- Psl_Rose = 202
- Psl_Fell = 203
- Psl_Onehot = 204
- Psl_Onehot0 = 205
- Psl_Expression = 206
- Sensitized_Process_Statement = 207
- Process_Statement = 208
- Concurrent_Simple_Signal_Assignment = 209
- Concurrent_Conditional_Signal_Assignment = 210
- Concurrent_Selected_Signal_Assignment = 211
- Concurrent_Assertion_Statement = 212
- Concurrent_Procedure_Call_Statement = 213
- Concurrent_Break_Statement = 214
- Psl_Assert_Directive = 215
- Psl_Assume_Directive = 216
- Psl_Cover_Directive = 217
- Psl_Restrict_Directive = 218
- Block_Statement = 219
- If_Generate_Statement = 220
- Case_Generate_Statement = 221
- For_Generate_Statement = 222
- Component_Instantiation_Statement = 223
- Psl_Default_Clock = 224
- Generate_Statement_Body = 225
- If_Generate_Else_Clause = 226
- Simple_Simultaneous_Statement = 227
- Simultaneous_Null_Statement = 228
- Simultaneous_Procedural_Statement = 229
- Simultaneous_Case_Statement = 230
- Simultaneous_If_Statement = 231
- Simultaneous_Elsif = 232
- Simple_Signal_Assignment_Statement = 233
- Conditional_Signal_Assignment_Statement = 234
- Selected_Waveform_Assignment_Statement = 235
- Signal_Force_Assignment_Statement = 236
- Signal_Release_Assignment_Statement = 237
- Null_Statement = 238
- Assertion_Statement = 239
- Report_Statement = 240
- Wait_Statement = 241
- Variable_Assignment_Statement = 242
- Conditional_Variable_Assignment_Statement = 243
- Return_Statement = 244
- For_Loop_Statement = 245
- While_Loop_Statement = 246
- Next_Statement = 247
- Exit_Statement = 248
- Case_Statement = 249
- Procedure_Call_Statement = 250
- Break_Statement = 251
- If_Statement = 252
- Suspend_State_Statement = 253
- Elsif = 254
- Character_Literal = 255
- Simple_Name = 256
- Selected_Name = 257
- Operator_Symbol = 258
- Reference_Name = 259
- External_Constant_Name = 260
- External_Signal_Name = 261
- External_Variable_Name = 262
- Selected_By_All_Name = 263
- Parenthesis_Name = 264
- Package_Pathname = 265
- Absolute_Pathname = 266
- Relative_Pathname = 267
- Pathname_Element = 268
- Base_Attribute = 269
- Subtype_Attribute = 270
- Element_Attribute = 271
- Across_Attribute = 272
- Through_Attribute = 273
- Nature_Reference_Attribute = 274
- Left_Type_Attribute = 275
- Right_Type_Attribute = 276
- High_Type_Attribute = 277
- Low_Type_Attribute = 278
- Ascending_Type_Attribute = 279
- Image_Attribute = 280
- Value_Attribute = 281
- Pos_Attribute = 282
- Val_Attribute = 283
- Succ_Attribute = 284
- Pred_Attribute = 285
- Leftof_Attribute = 286
- Rightof_Attribute = 287
- Signal_Slew_Attribute = 288
- Quantity_Slew_Attribute = 289
- Ramp_Attribute = 290
- Zoh_Attribute = 291
- Ltf_Attribute = 292
- Ztf_Attribute = 293
- Dot_Attribute = 294
- Integ_Attribute = 295
- Quantity_Delayed_Attribute = 296
- Above_Attribute = 297
- Delayed_Attribute = 298
- Stable_Attribute = 299
- Quiet_Attribute = 300
- Transaction_Attribute = 301
- Event_Attribute = 302
- Active_Attribute = 303
- Last_Event_Attribute = 304
- Last_Active_Attribute = 305
- Last_Value_Attribute = 306
- Driving_Attribute = 307
- Driving_Value_Attribute = 308
- Behavior_Attribute = 309
- Structure_Attribute = 310
- Simple_Name_Attribute = 311
- Instance_Name_Attribute = 312
- Path_Name_Attribute = 313
- Left_Array_Attribute = 314
- Right_Array_Attribute = 315
- High_Array_Attribute = 316
- Low_Array_Attribute = 317
- Length_Array_Attribute = 318
- Ascending_Array_Attribute = 319
- Range_Array_Attribute = 320
- Reverse_Range_Array_Attribute = 321
- Attribute_Name = 322
+ Psl_Boolean_Parameter = 111
+ Psl_Endpoint_Declaration = 112
+ Enumeration_Literal = 113
+ Function_Declaration = 114
+ Procedure_Declaration = 115
+ Function_Body = 116
+ Procedure_Body = 117
+ Function_Instantiation_Declaration = 118
+ Procedure_Instantiation_Declaration = 119
+ Terminal_Declaration = 120
+ Object_Alias_Declaration = 121
+ Free_Quantity_Declaration = 122
+ Spectrum_Quantity_Declaration = 123
+ Noise_Quantity_Declaration = 124
+ Across_Quantity_Declaration = 125
+ Through_Quantity_Declaration = 126
+ File_Declaration = 127
+ Guard_Signal_Declaration = 128
+ Signal_Declaration = 129
+ Variable_Declaration = 130
+ Constant_Declaration = 131
+ Iterator_Declaration = 132
+ Interface_Constant_Declaration = 133
+ Interface_Variable_Declaration = 134
+ Interface_Signal_Declaration = 135
+ Interface_File_Declaration = 136
+ Interface_Quantity_Declaration = 137
+ Interface_Terminal_Declaration = 138
+ Interface_Type_Declaration = 139
+ Interface_Package_Declaration = 140
+ Interface_Function_Declaration = 141
+ Interface_Procedure_Declaration = 142
+ Attribute_Implicit_Declaration = 143
+ Suspend_State_Declaration = 144
+ Identity_Operator = 145
+ Negation_Operator = 146
+ Absolute_Operator = 147
+ Not_Operator = 148
+ Implicit_Condition_Operator = 149
+ Condition_Operator = 150
+ Reduction_And_Operator = 151
+ Reduction_Or_Operator = 152
+ Reduction_Nand_Operator = 153
+ Reduction_Nor_Operator = 154
+ Reduction_Xor_Operator = 155
+ Reduction_Xnor_Operator = 156
+ And_Operator = 157
+ Or_Operator = 158
+ Nand_Operator = 159
+ Nor_Operator = 160
+ Xor_Operator = 161
+ Xnor_Operator = 162
+ Equality_Operator = 163
+ Inequality_Operator = 164
+ Less_Than_Operator = 165
+ Less_Than_Or_Equal_Operator = 166
+ Greater_Than_Operator = 167
+ Greater_Than_Or_Equal_Operator = 168
+ Match_Equality_Operator = 169
+ Match_Inequality_Operator = 170
+ Match_Less_Than_Operator = 171
+ Match_Less_Than_Or_Equal_Operator = 172
+ Match_Greater_Than_Operator = 173
+ Match_Greater_Than_Or_Equal_Operator = 174
+ Sll_Operator = 175
+ Sla_Operator = 176
+ Srl_Operator = 177
+ Sra_Operator = 178
+ Rol_Operator = 179
+ Ror_Operator = 180
+ Addition_Operator = 181
+ Substraction_Operator = 182
+ Concatenation_Operator = 183
+ Multiplication_Operator = 184
+ Division_Operator = 185
+ Modulus_Operator = 186
+ Remainder_Operator = 187
+ Exponentiation_Operator = 188
+ Function_Call = 189
+ Aggregate = 190
+ Parenthesis_Expression = 191
+ Qualified_Expression = 192
+ Type_Conversion = 193
+ Allocator_By_Expression = 194
+ Allocator_By_Subtype = 195
+ Selected_Element = 196
+ Dereference = 197
+ Implicit_Dereference = 198
+ Slice_Name = 199
+ Indexed_Name = 200
+ Psl_Prev = 201
+ Psl_Stable = 202
+ Psl_Rose = 203
+ Psl_Fell = 204
+ Psl_Onehot = 205
+ Psl_Onehot0 = 206
+ Psl_Expression = 207
+ Sensitized_Process_Statement = 208
+ Process_Statement = 209
+ Concurrent_Simple_Signal_Assignment = 210
+ Concurrent_Conditional_Signal_Assignment = 211
+ Concurrent_Selected_Signal_Assignment = 212
+ Concurrent_Assertion_Statement = 213
+ Concurrent_Procedure_Call_Statement = 214
+ Concurrent_Break_Statement = 215
+ Psl_Assert_Directive = 216
+ Psl_Assume_Directive = 217
+ Psl_Cover_Directive = 218
+ Psl_Restrict_Directive = 219
+ Block_Statement = 220
+ If_Generate_Statement = 221
+ Case_Generate_Statement = 222
+ For_Generate_Statement = 223
+ Component_Instantiation_Statement = 224
+ Psl_Default_Clock = 225
+ Generate_Statement_Body = 226
+ If_Generate_Else_Clause = 227
+ Simple_Simultaneous_Statement = 228
+ Simultaneous_Null_Statement = 229
+ Simultaneous_Procedural_Statement = 230
+ Simultaneous_Case_Statement = 231
+ Simultaneous_If_Statement = 232
+ Simultaneous_Elsif = 233
+ Simple_Signal_Assignment_Statement = 234
+ Conditional_Signal_Assignment_Statement = 235
+ Selected_Waveform_Assignment_Statement = 236
+ Signal_Force_Assignment_Statement = 237
+ Signal_Release_Assignment_Statement = 238
+ Null_Statement = 239
+ Assertion_Statement = 240
+ Report_Statement = 241
+ Wait_Statement = 242
+ Variable_Assignment_Statement = 243
+ Conditional_Variable_Assignment_Statement = 244
+ Return_Statement = 245
+ For_Loop_Statement = 246
+ While_Loop_Statement = 247
+ Next_Statement = 248
+ Exit_Statement = 249
+ Case_Statement = 250
+ Procedure_Call_Statement = 251
+ Break_Statement = 252
+ If_Statement = 253
+ Suspend_State_Statement = 254
+ Elsif = 255
+ Character_Literal = 256
+ Simple_Name = 257
+ Selected_Name = 258
+ Operator_Symbol = 259
+ Reference_Name = 260
+ External_Constant_Name = 261
+ External_Signal_Name = 262
+ External_Variable_Name = 263
+ Selected_By_All_Name = 264
+ Parenthesis_Name = 265
+ Package_Pathname = 266
+ Absolute_Pathname = 267
+ Relative_Pathname = 268
+ Pathname_Element = 269
+ Base_Attribute = 270
+ Subtype_Attribute = 271
+ Element_Attribute = 272
+ Across_Attribute = 273
+ Through_Attribute = 274
+ Nature_Reference_Attribute = 275
+ Left_Type_Attribute = 276
+ Right_Type_Attribute = 277
+ High_Type_Attribute = 278
+ Low_Type_Attribute = 279
+ Ascending_Type_Attribute = 280
+ Image_Attribute = 281
+ Value_Attribute = 282
+ Pos_Attribute = 283
+ Val_Attribute = 284
+ Succ_Attribute = 285
+ Pred_Attribute = 286
+ Leftof_Attribute = 287
+ Rightof_Attribute = 288
+ Signal_Slew_Attribute = 289
+ Quantity_Slew_Attribute = 290
+ Ramp_Attribute = 291
+ Zoh_Attribute = 292
+ Ltf_Attribute = 293
+ Ztf_Attribute = 294
+ Dot_Attribute = 295
+ Integ_Attribute = 296
+ Quantity_Delayed_Attribute = 297
+ Above_Attribute = 298
+ Delayed_Attribute = 299
+ Stable_Attribute = 300
+ Quiet_Attribute = 301
+ Transaction_Attribute = 302
+ Event_Attribute = 303
+ Active_Attribute = 304
+ Last_Event_Attribute = 305
+ Last_Active_Attribute = 306
+ Last_Value_Attribute = 307
+ Driving_Attribute = 308
+ Driving_Value_Attribute = 309
+ Behavior_Attribute = 310
+ Structure_Attribute = 311
+ Simple_Name_Attribute = 312
+ Instance_Name_Attribute = 313
+ Path_Name_Attribute = 314
+ Left_Array_Attribute = 315
+ Right_Array_Attribute = 316
+ High_Array_Attribute = 317
+ Low_Array_Attribute = 318
+ Length_Array_Attribute = 319
+ Ascending_Array_Attribute = 320
+ Range_Array_Attribute = 321
+ Reverse_Range_Array_Attribute = 322
+ Attribute_Name = 323
@export
diff --git a/src/vhdl/vhdl-elocations.adb b/src/vhdl/vhdl-elocations.adb
index d2e5d5a10..b34e04a1e 100644
--- a/src/vhdl/vhdl-elocations.adb
+++ b/src/vhdl/vhdl-elocations.adb
@@ -284,6 +284,7 @@ package body Vhdl.Elocations is
| Iir_Kind_Nature_Element_Declaration
| Iir_Kind_Non_Object_Alias_Declaration
| Iir_Kind_Psl_Declaration
+ | Iir_Kind_Psl_Boolean_Parameter
| Iir_Kind_Psl_Endpoint_Declaration
| Iir_Kind_Enumeration_Literal
| Iir_Kind_Function_Instantiation_Declaration
diff --git a/src/vhdl/vhdl-elocations.ads b/src/vhdl/vhdl-elocations.ads
index 89dd60869..42449793a 100644
--- a/src/vhdl/vhdl-elocations.ads
+++ b/src/vhdl/vhdl-elocations.ads
@@ -315,6 +315,8 @@ package Vhdl.Elocations is
-- Iir_Kind_Psl_Declaration (None)
+ -- Iir_Kind_Psl_Boolean_Parameter (None)
+
-- Iir_Kind_Terminal_Declaration (None)
-- Iir_Kind_Free_Quantity_Declaration (None)
diff --git a/src/vhdl/vhdl-errors.adb b/src/vhdl/vhdl-errors.adb
index a5e75f212..8410cb767 100644
--- a/src/vhdl/vhdl-errors.adb
+++ b/src/vhdl/vhdl-errors.adb
@@ -629,6 +629,8 @@ package body Vhdl.Errors is
when Iir_Kind_Psl_Declaration =>
return Disp_Identifier (Node, "PSL declaration");
+ when Iir_Kind_Psl_Boolean_Parameter =>
+ return Disp_Identifier (Node, "PSL boolean parameter");
when Iir_Kind_Psl_Endpoint_Declaration =>
return Disp_Identifier (Node, "PSL endpoint declaration");
diff --git a/src/vhdl/vhdl-nodes.adb b/src/vhdl/vhdl-nodes.adb
index 1ba32f6f6..5fac95d66 100644
--- a/src/vhdl/vhdl-nodes.adb
+++ b/src/vhdl/vhdl-nodes.adb
@@ -1067,6 +1067,7 @@ package body Vhdl.Nodes is
| Iir_Kind_Element_Declaration
| Iir_Kind_Nature_Element_Declaration
| Iir_Kind_Non_Object_Alias_Declaration
+ | Iir_Kind_Psl_Boolean_Parameter
| Iir_Kind_Enumeration_Literal
| Iir_Kind_Terminal_Declaration
| Iir_Kind_Object_Alias_Declaration
@@ -7320,7 +7321,7 @@ package body Vhdl.Nodes is
pragma Assert (Decl /= Null_Iir);
pragma Assert (Has_Psl_Declaration (Get_Kind (Decl)),
"no field Psl_Declaration");
- return Iir_To_PSL_Node (Get_Field6 (Decl));
+ return Iir_To_PSL_Node (Get_Field5 (Decl));
end Get_Psl_Declaration;
procedure Set_Psl_Declaration (Decl : Iir; Prop : PSL_Node) is
@@ -7328,7 +7329,7 @@ package body Vhdl.Nodes is
pragma Assert (Decl /= Null_Iir);
pragma Assert (Has_Psl_Declaration (Get_Kind (Decl)),
"no field Psl_Declaration");
- Set_Field6 (Decl, PSL_Node_To_Iir (Prop));
+ Set_Field5 (Decl, PSL_Node_To_Iir (Prop));
end Set_Psl_Declaration;
function Get_Psl_Expression (Decl : Iir) return PSL_Node is
diff --git a/src/vhdl/vhdl-nodes.ads b/src/vhdl/vhdl-nodes.ads
index e375ffbc9..4ef9b466a 100644
--- a/src/vhdl/vhdl-nodes.ads
+++ b/src/vhdl/vhdl-nodes.ads
@@ -2151,7 +2151,7 @@ package Vhdl.Nodes is
--
-- Get/Set_Identifier (Field3)
--
- -- Get/Set_Psl_Declaration (Field6)
+ -- Get/Set_Psl_Declaration (Field5)
--
-- Get/Set_PSL_Clock (Field7)
--
@@ -2182,7 +2182,7 @@ package Vhdl.Nodes is
--
-- Get/Set_Identifier (Field3)
--
- -- Get/Set_Psl_Declaration (Field6)
+ -- Get/Set_Psl_Declaration (Field5)
--
-- Valid only for property declaration.
-- Get/Set_PSL_Clock (Field7)
@@ -2194,6 +2194,25 @@ package Vhdl.Nodes is
--
-- Get/Set_Use_Flag (Flag6)
+ -- Iir_Kind_Psl_Boolean_Parameter (Short)
+ -- A psl boolean parameter.
+ --
+ -- Get/Set_Parent (Field0)
+ --
+ -- Get/Set_Identifier (Field3)
+ --
+ -- Get/Set_Psl_Declaration (Field5)
+ --
+ -- Get/Set_Type (Field1)
+ --
+ -- Get/Set_Chain (Field2)
+ --
+ -- Get/Set_Expr_Staticness (State1)
+ --
+ -- Get/Set_Visible_Flag (Flag4)
+ --
+ -- Get/Set_Use_Flag (Flag6)
+
-- Iir_Kind_Terminal_Declaration (Short)
--
-- Get/Set_Parent (Field0)
@@ -5038,6 +5057,7 @@ package Vhdl.Nodes is
Iir_Kind_Non_Object_Alias_Declaration,
Iir_Kind_Psl_Declaration,
+ Iir_Kind_Psl_Boolean_Parameter,
Iir_Kind_Psl_Endpoint_Declaration,
Iir_Kind_Enumeration_Literal,
@@ -9540,7 +9560,7 @@ package Vhdl.Nodes is
function Get_Psl_Sequence (Decl : Iir) return PSL_Node;
procedure Set_Psl_Sequence (Decl : Iir; Prop : PSL_Node);
- -- Field: Field6 (uc)
+ -- Field: Field5 (uc)
function Get_Psl_Declaration (Decl : Iir) return PSL_Node;
procedure Set_Psl_Declaration (Decl : Iir; Prop : PSL_Node);
diff --git a/src/vhdl/vhdl-nodes_meta.adb b/src/vhdl/vhdl-nodes_meta.adb
index 782f21e20..9ddb1a3dd 100644
--- a/src/vhdl/vhdl-nodes_meta.adb
+++ b/src/vhdl/vhdl-nodes_meta.adb
@@ -1401,6 +1401,8 @@ package body Vhdl.Nodes_Meta is
return "non_object_alias_declaration";
when Iir_Kind_Psl_Declaration =>
return "psl_declaration";
+ when Iir_Kind_Psl_Boolean_Parameter =>
+ return "psl_boolean_parameter";
when Iir_Kind_Psl_Endpoint_Declaration =>
return "psl_endpoint_declaration";
when Iir_Kind_Enumeration_Literal =>
@@ -3503,6 +3505,15 @@ package body Vhdl.Nodes_Meta is
Field_Use_Flag,
Field_Parent,
Field_Chain,
+ -- Iir_Kind_Psl_Boolean_Parameter
+ Field_Identifier,
+ Field_Psl_Declaration,
+ Field_Visible_Flag,
+ Field_Use_Flag,
+ Field_Expr_Staticness,
+ Field_Parent,
+ Field_Type,
+ Field_Chain,
-- Iir_Kind_Psl_Endpoint_Declaration
Field_Identifier,
Field_Psl_Declaration,
@@ -5451,218 +5462,219 @@ package body Vhdl.Nodes_Meta is
Iir_Kind_Nature_Element_Declaration => 775,
Iir_Kind_Non_Object_Alias_Declaration => 783,
Iir_Kind_Psl_Declaration => 791,
- Iir_Kind_Psl_Endpoint_Declaration => 805,
- Iir_Kind_Enumeration_Literal => 817,
- Iir_Kind_Function_Declaration => 843,
- Iir_Kind_Procedure_Declaration => 866,
- Iir_Kind_Function_Body => 876,
- Iir_Kind_Procedure_Body => 887,
- Iir_Kind_Function_Instantiation_Declaration => 898,
- Iir_Kind_Procedure_Instantiation_Declaration => 908,
- Iir_Kind_Terminal_Declaration => 918,
- Iir_Kind_Object_Alias_Declaration => 930,
- Iir_Kind_Free_Quantity_Declaration => 942,
- Iir_Kind_Spectrum_Quantity_Declaration => 955,
- Iir_Kind_Noise_Quantity_Declaration => 967,
- Iir_Kind_Across_Quantity_Declaration => 983,
- Iir_Kind_Through_Quantity_Declaration => 999,
- Iir_Kind_File_Declaration => 1014,
- Iir_Kind_Guard_Signal_Declaration => 1028,
- Iir_Kind_Signal_Declaration => 1045,
- Iir_Kind_Variable_Declaration => 1058,
- Iir_Kind_Constant_Declaration => 1072,
- Iir_Kind_Iterator_Declaration => 1084,
- Iir_Kind_Interface_Constant_Declaration => 1101,
- Iir_Kind_Interface_Variable_Declaration => 1117,
- Iir_Kind_Interface_Signal_Declaration => 1138,
- Iir_Kind_Interface_File_Declaration => 1154,
- Iir_Kind_Interface_Quantity_Declaration => 1170,
- Iir_Kind_Interface_Terminal_Declaration => 1182,
- Iir_Kind_Interface_Type_Declaration => 1194,
- Iir_Kind_Interface_Package_Declaration => 1207,
- Iir_Kind_Interface_Function_Declaration => 1226,
- Iir_Kind_Interface_Procedure_Declaration => 1241,
- Iir_Kind_Attribute_Implicit_Declaration => 1244,
- Iir_Kind_Suspend_State_Declaration => 1247,
- Iir_Kind_Identity_Operator => 1251,
- Iir_Kind_Negation_Operator => 1255,
- Iir_Kind_Absolute_Operator => 1259,
- Iir_Kind_Not_Operator => 1263,
- Iir_Kind_Implicit_Condition_Operator => 1267,
- Iir_Kind_Condition_Operator => 1271,
- Iir_Kind_Reduction_And_Operator => 1275,
- Iir_Kind_Reduction_Or_Operator => 1279,
- Iir_Kind_Reduction_Nand_Operator => 1283,
- Iir_Kind_Reduction_Nor_Operator => 1287,
- Iir_Kind_Reduction_Xor_Operator => 1291,
- Iir_Kind_Reduction_Xnor_Operator => 1295,
- Iir_Kind_And_Operator => 1300,
- Iir_Kind_Or_Operator => 1305,
- Iir_Kind_Nand_Operator => 1310,
- Iir_Kind_Nor_Operator => 1315,
- Iir_Kind_Xor_Operator => 1320,
- Iir_Kind_Xnor_Operator => 1325,
- Iir_Kind_Equality_Operator => 1330,
- Iir_Kind_Inequality_Operator => 1335,
- Iir_Kind_Less_Than_Operator => 1340,
- Iir_Kind_Less_Than_Or_Equal_Operator => 1345,
- Iir_Kind_Greater_Than_Operator => 1350,
- Iir_Kind_Greater_Than_Or_Equal_Operator => 1355,
- Iir_Kind_Match_Equality_Operator => 1360,
- Iir_Kind_Match_Inequality_Operator => 1365,
- Iir_Kind_Match_Less_Than_Operator => 1370,
- Iir_Kind_Match_Less_Than_Or_Equal_Operator => 1375,
- Iir_Kind_Match_Greater_Than_Operator => 1380,
- Iir_Kind_Match_Greater_Than_Or_Equal_Operator => 1385,
- Iir_Kind_Sll_Operator => 1390,
- Iir_Kind_Sla_Operator => 1395,
- Iir_Kind_Srl_Operator => 1400,
- Iir_Kind_Sra_Operator => 1405,
- Iir_Kind_Rol_Operator => 1410,
- Iir_Kind_Ror_Operator => 1415,
- Iir_Kind_Addition_Operator => 1420,
- Iir_Kind_Substraction_Operator => 1425,
- Iir_Kind_Concatenation_Operator => 1430,
- Iir_Kind_Multiplication_Operator => 1435,
- Iir_Kind_Division_Operator => 1440,
- Iir_Kind_Modulus_Operator => 1445,
- Iir_Kind_Remainder_Operator => 1450,
- Iir_Kind_Exponentiation_Operator => 1455,
- Iir_Kind_Function_Call => 1463,
- Iir_Kind_Aggregate => 1471,
- Iir_Kind_Parenthesis_Expression => 1474,
- Iir_Kind_Qualified_Expression => 1478,
- Iir_Kind_Type_Conversion => 1483,
- Iir_Kind_Allocator_By_Expression => 1488,
- Iir_Kind_Allocator_By_Subtype => 1494,
- Iir_Kind_Selected_Element => 1502,
- Iir_Kind_Dereference => 1507,
- Iir_Kind_Implicit_Dereference => 1512,
- Iir_Kind_Slice_Name => 1519,
- Iir_Kind_Indexed_Name => 1525,
- Iir_Kind_Psl_Prev => 1531,
- Iir_Kind_Psl_Stable => 1536,
- Iir_Kind_Psl_Rose => 1541,
- Iir_Kind_Psl_Fell => 1546,
- Iir_Kind_Psl_Onehot => 1549,
- Iir_Kind_Psl_Onehot0 => 1552,
- Iir_Kind_Psl_Expression => 1554,
- Iir_Kind_Sensitized_Process_Statement => 1576,
- Iir_Kind_Process_Statement => 1597,
- Iir_Kind_Concurrent_Simple_Signal_Assignment => 1610,
- Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1623,
- Iir_Kind_Concurrent_Selected_Signal_Assignment => 1637,
- Iir_Kind_Concurrent_Assertion_Statement => 1645,
- Iir_Kind_Concurrent_Procedure_Call_Statement => 1652,
- Iir_Kind_Concurrent_Break_Statement => 1660,
- Iir_Kind_Psl_Assert_Directive => 1674,
- Iir_Kind_Psl_Assume_Directive => 1686,
- Iir_Kind_Psl_Cover_Directive => 1698,
- Iir_Kind_Psl_Restrict_Directive => 1709,
- Iir_Kind_Block_Statement => 1723,
- Iir_Kind_If_Generate_Statement => 1734,
- Iir_Kind_Case_Generate_Statement => 1743,
- Iir_Kind_For_Generate_Statement => 1752,
- Iir_Kind_Component_Instantiation_Statement => 1763,
- Iir_Kind_Psl_Default_Clock => 1766,
- Iir_Kind_Generate_Statement_Body => 1777,
- Iir_Kind_If_Generate_Else_Clause => 1783,
- Iir_Kind_Simple_Simultaneous_Statement => 1790,
- Iir_Kind_Simultaneous_Null_Statement => 1794,
- Iir_Kind_Simultaneous_Procedural_Statement => 1805,
- Iir_Kind_Simultaneous_Case_Statement => 1814,
- Iir_Kind_Simultaneous_If_Statement => 1823,
- Iir_Kind_Simultaneous_Elsif => 1829,
- Iir_Kind_Simple_Signal_Assignment_Statement => 1840,
- Iir_Kind_Conditional_Signal_Assignment_Statement => 1851,
- Iir_Kind_Selected_Waveform_Assignment_Statement => 1863,
- Iir_Kind_Signal_Force_Assignment_Statement => 1873,
- Iir_Kind_Signal_Release_Assignment_Statement => 1882,
- Iir_Kind_Null_Statement => 1886,
- Iir_Kind_Assertion_Statement => 1893,
- Iir_Kind_Report_Statement => 1899,
- Iir_Kind_Wait_Statement => 1907,
- Iir_Kind_Variable_Assignment_Statement => 1914,
- Iir_Kind_Conditional_Variable_Assignment_Statement => 1921,
- Iir_Kind_Return_Statement => 1927,
- Iir_Kind_For_Loop_Statement => 1938,
- Iir_Kind_While_Loop_Statement => 1949,
- Iir_Kind_Next_Statement => 1956,
- Iir_Kind_Exit_Statement => 1963,
- Iir_Kind_Case_Statement => 1972,
- Iir_Kind_Procedure_Call_Statement => 1978,
- Iir_Kind_Break_Statement => 1985,
- Iir_Kind_If_Statement => 1995,
- Iir_Kind_Suspend_State_Statement => 1999,
- Iir_Kind_Elsif => 2005,
- Iir_Kind_Character_Literal => 2012,
- Iir_Kind_Simple_Name => 2019,
- Iir_Kind_Selected_Name => 2027,
- Iir_Kind_Operator_Symbol => 2032,
- Iir_Kind_Reference_Name => 2037,
- Iir_Kind_External_Constant_Name => 2046,
- Iir_Kind_External_Signal_Name => 2055,
- Iir_Kind_External_Variable_Name => 2065,
- Iir_Kind_Selected_By_All_Name => 2071,
- Iir_Kind_Parenthesis_Name => 2076,
- Iir_Kind_Package_Pathname => 2080,
- Iir_Kind_Absolute_Pathname => 2081,
- Iir_Kind_Relative_Pathname => 2082,
- Iir_Kind_Pathname_Element => 2087,
- Iir_Kind_Base_Attribute => 2089,
- Iir_Kind_Subtype_Attribute => 2094,
- Iir_Kind_Element_Attribute => 2099,
- Iir_Kind_Across_Attribute => 2104,
- Iir_Kind_Through_Attribute => 2109,
- Iir_Kind_Nature_Reference_Attribute => 2113,
- Iir_Kind_Left_Type_Attribute => 2118,
- Iir_Kind_Right_Type_Attribute => 2123,
- Iir_Kind_High_Type_Attribute => 2128,
- Iir_Kind_Low_Type_Attribute => 2133,
- Iir_Kind_Ascending_Type_Attribute => 2138,
- Iir_Kind_Image_Attribute => 2144,
- Iir_Kind_Value_Attribute => 2150,
- Iir_Kind_Pos_Attribute => 2156,
- Iir_Kind_Val_Attribute => 2162,
- Iir_Kind_Succ_Attribute => 2168,
- Iir_Kind_Pred_Attribute => 2174,
- Iir_Kind_Leftof_Attribute => 2180,
- Iir_Kind_Rightof_Attribute => 2186,
- Iir_Kind_Signal_Slew_Attribute => 2194,
- Iir_Kind_Quantity_Slew_Attribute => 2202,
- Iir_Kind_Ramp_Attribute => 2210,
- Iir_Kind_Zoh_Attribute => 2218,
- Iir_Kind_Ltf_Attribute => 2226,
- Iir_Kind_Ztf_Attribute => 2236,
- Iir_Kind_Dot_Attribute => 2243,
- Iir_Kind_Integ_Attribute => 2250,
- Iir_Kind_Quantity_Delayed_Attribute => 2258,
- Iir_Kind_Above_Attribute => 2266,
- Iir_Kind_Delayed_Attribute => 2275,
- Iir_Kind_Stable_Attribute => 2284,
- Iir_Kind_Quiet_Attribute => 2293,
- Iir_Kind_Transaction_Attribute => 2302,
- Iir_Kind_Event_Attribute => 2306,
- Iir_Kind_Active_Attribute => 2310,
- Iir_Kind_Last_Event_Attribute => 2314,
- Iir_Kind_Last_Active_Attribute => 2318,
- Iir_Kind_Last_Value_Attribute => 2322,
- Iir_Kind_Driving_Attribute => 2326,
- Iir_Kind_Driving_Value_Attribute => 2330,
- Iir_Kind_Behavior_Attribute => 2330,
- Iir_Kind_Structure_Attribute => 2330,
- Iir_Kind_Simple_Name_Attribute => 2337,
- Iir_Kind_Instance_Name_Attribute => 2342,
- Iir_Kind_Path_Name_Attribute => 2347,
- Iir_Kind_Left_Array_Attribute => 2354,
- Iir_Kind_Right_Array_Attribute => 2361,
- Iir_Kind_High_Array_Attribute => 2368,
- Iir_Kind_Low_Array_Attribute => 2375,
- Iir_Kind_Length_Array_Attribute => 2382,
- Iir_Kind_Ascending_Array_Attribute => 2389,
- Iir_Kind_Range_Array_Attribute => 2396,
- Iir_Kind_Reverse_Range_Array_Attribute => 2403,
- Iir_Kind_Attribute_Name => 2412
+ Iir_Kind_Psl_Boolean_Parameter => 799,
+ Iir_Kind_Psl_Endpoint_Declaration => 813,
+ Iir_Kind_Enumeration_Literal => 825,
+ Iir_Kind_Function_Declaration => 851,
+ Iir_Kind_Procedure_Declaration => 874,
+ Iir_Kind_Function_Body => 884,
+ Iir_Kind_Procedure_Body => 895,
+ Iir_Kind_Function_Instantiation_Declaration => 906,
+ Iir_Kind_Procedure_Instantiation_Declaration => 916,
+ Iir_Kind_Terminal_Declaration => 926,
+ Iir_Kind_Object_Alias_Declaration => 938,
+ Iir_Kind_Free_Quantity_Declaration => 950,
+ Iir_Kind_Spectrum_Quantity_Declaration => 963,
+ Iir_Kind_Noise_Quantity_Declaration => 975,
+ Iir_Kind_Across_Quantity_Declaration => 991,
+ Iir_Kind_Through_Quantity_Declaration => 1007,
+ Iir_Kind_File_Declaration => 1022,
+ Iir_Kind_Guard_Signal_Declaration => 1036,
+ Iir_Kind_Signal_Declaration => 1053,
+ Iir_Kind_Variable_Declaration => 1066,
+ Iir_Kind_Constant_Declaration => 1080,
+ Iir_Kind_Iterator_Declaration => 1092,
+ Iir_Kind_Interface_Constant_Declaration => 1109,
+ Iir_Kind_Interface_Variable_Declaration => 1125,
+ Iir_Kind_Interface_Signal_Declaration => 1146,
+ Iir_Kind_Interface_File_Declaration => 1162,
+ Iir_Kind_Interface_Quantity_Declaration => 1178,
+ Iir_Kind_Interface_Terminal_Declaration => 1190,
+ Iir_Kind_Interface_Type_Declaration => 1202,
+ Iir_Kind_Interface_Package_Declaration => 1215,
+ Iir_Kind_Interface_Function_Declaration => 1234,
+ Iir_Kind_Interface_Procedure_Declaration => 1249,
+ Iir_Kind_Attribute_Implicit_Declaration => 1252,
+ Iir_Kind_Suspend_State_Declaration => 1255,
+ Iir_Kind_Identity_Operator => 1259,
+ Iir_Kind_Negation_Operator => 1263,
+ Iir_Kind_Absolute_Operator => 1267,
+ Iir_Kind_Not_Operator => 1271,
+ Iir_Kind_Implicit_Condition_Operator => 1275,
+ Iir_Kind_Condition_Operator => 1279,
+ Iir_Kind_Reduction_And_Operator => 1283,
+ Iir_Kind_Reduction_Or_Operator => 1287,
+ Iir_Kind_Reduction_Nand_Operator => 1291,
+ Iir_Kind_Reduction_Nor_Operator => 1295,
+ Iir_Kind_Reduction_Xor_Operator => 1299,
+ Iir_Kind_Reduction_Xnor_Operator => 1303,
+ Iir_Kind_And_Operator => 1308,
+ Iir_Kind_Or_Operator => 1313,
+ Iir_Kind_Nand_Operator => 1318,
+ Iir_Kind_Nor_Operator => 1323,
+ Iir_Kind_Xor_Operator => 1328,
+ Iir_Kind_Xnor_Operator => 1333,
+ Iir_Kind_Equality_Operator => 1338,
+ Iir_Kind_Inequality_Operator => 1343,
+ Iir_Kind_Less_Than_Operator => 1348,
+ Iir_Kind_Less_Than_Or_Equal_Operator => 1353,
+ Iir_Kind_Greater_Than_Operator => 1358,
+ Iir_Kind_Greater_Than_Or_Equal_Operator => 1363,
+ Iir_Kind_Match_Equality_Operator => 1368,
+ Iir_Kind_Match_Inequality_Operator => 1373,
+ Iir_Kind_Match_Less_Than_Operator => 1378,
+ Iir_Kind_Match_Less_Than_Or_Equal_Operator => 1383,
+ Iir_Kind_Match_Greater_Than_Operator => 1388,
+ Iir_Kind_Match_Greater_Than_Or_Equal_Operator => 1393,
+ Iir_Kind_Sll_Operator => 1398,
+ Iir_Kind_Sla_Operator => 1403,
+ Iir_Kind_Srl_Operator => 1408,
+ Iir_Kind_Sra_Operator => 1413,
+ Iir_Kind_Rol_Operator => 1418,
+ Iir_Kind_Ror_Operator => 1423,
+ Iir_Kind_Addition_Operator => 1428,
+ Iir_Kind_Substraction_Operator => 1433,
+ Iir_Kind_Concatenation_Operator => 1438,
+ Iir_Kind_Multiplication_Operator => 1443,
+ Iir_Kind_Division_Operator => 1448,
+ Iir_Kind_Modulus_Operator => 1453,
+ Iir_Kind_Remainder_Operator => 1458,
+ Iir_Kind_Exponentiation_Operator => 1463,
+ Iir_Kind_Function_Call => 1471,
+ Iir_Kind_Aggregate => 1479,
+ Iir_Kind_Parenthesis_Expression => 1482,
+ Iir_Kind_Qualified_Expression => 1486,
+ Iir_Kind_Type_Conversion => 1491,
+ Iir_Kind_Allocator_By_Expression => 1496,
+ Iir_Kind_Allocator_By_Subtype => 1502,
+ Iir_Kind_Selected_Element => 1510,
+ Iir_Kind_Dereference => 1515,
+ Iir_Kind_Implicit_Dereference => 1520,
+ Iir_Kind_Slice_Name => 1527,
+ Iir_Kind_Indexed_Name => 1533,
+ Iir_Kind_Psl_Prev => 1539,
+ Iir_Kind_Psl_Stable => 1544,
+ Iir_Kind_Psl_Rose => 1549,
+ Iir_Kind_Psl_Fell => 1554,
+ Iir_Kind_Psl_Onehot => 1557,
+ Iir_Kind_Psl_Onehot0 => 1560,
+ Iir_Kind_Psl_Expression => 1562,
+ Iir_Kind_Sensitized_Process_Statement => 1584,
+ Iir_Kind_Process_Statement => 1605,
+ Iir_Kind_Concurrent_Simple_Signal_Assignment => 1618,
+ Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1631,
+ Iir_Kind_Concurrent_Selected_Signal_Assignment => 1645,
+ Iir_Kind_Concurrent_Assertion_Statement => 1653,
+ Iir_Kind_Concurrent_Procedure_Call_Statement => 1660,
+ Iir_Kind_Concurrent_Break_Statement => 1668,
+ Iir_Kind_Psl_Assert_Directive => 1682,
+ Iir_Kind_Psl_Assume_Directive => 1694,
+ Iir_Kind_Psl_Cover_Directive => 1706,
+ Iir_Kind_Psl_Restrict_Directive => 1717,
+ Iir_Kind_Block_Statement => 1731,
+ Iir_Kind_If_Generate_Statement => 1742,
+ Iir_Kind_Case_Generate_Statement => 1751,
+ Iir_Kind_For_Generate_Statement => 1760,
+ Iir_Kind_Component_Instantiation_Statement => 1771,
+ Iir_Kind_Psl_Default_Clock => 1774,
+ Iir_Kind_Generate_Statement_Body => 1785,
+ Iir_Kind_If_Generate_Else_Clause => 1791,
+ Iir_Kind_Simple_Simultaneous_Statement => 1798,
+ Iir_Kind_Simultaneous_Null_Statement => 1802,
+ Iir_Kind_Simultaneous_Procedural_Statement => 1813,
+ Iir_Kind_Simultaneous_Case_Statement => 1822,
+ Iir_Kind_Simultaneous_If_Statement => 1831,
+ Iir_Kind_Simultaneous_Elsif => 1837,
+ Iir_Kind_Simple_Signal_Assignment_Statement => 1848,
+ Iir_Kind_Conditional_Signal_Assignment_Statement => 1859,
+ Iir_Kind_Selected_Waveform_Assignment_Statement => 1871,
+ Iir_Kind_Signal_Force_Assignment_Statement => 1881,
+ Iir_Kind_Signal_Release_Assignment_Statement => 1890,
+ Iir_Kind_Null_Statement => 1894,
+ Iir_Kind_Assertion_Statement => 1901,
+ Iir_Kind_Report_Statement => 1907,
+ Iir_Kind_Wait_Statement => 1915,
+ Iir_Kind_Variable_Assignment_Statement => 1922,
+ Iir_Kind_Conditional_Variable_Assignment_Statement => 1929,
+ Iir_Kind_Return_Statement => 1935,
+ Iir_Kind_For_Loop_Statement => 1946,
+ Iir_Kind_While_Loop_Statement => 1957,
+ Iir_Kind_Next_Statement => 1964,
+ Iir_Kind_Exit_Statement => 1971,
+ Iir_Kind_Case_Statement => 1980,
+ Iir_Kind_Procedure_Call_Statement => 1986,
+ Iir_Kind_Break_Statement => 1993,
+ Iir_Kind_If_Statement => 2003,
+ Iir_Kind_Suspend_State_Statement => 2007,
+ Iir_Kind_Elsif => 2013,
+ Iir_Kind_Character_Literal => 2020,
+ Iir_Kind_Simple_Name => 2027,
+ Iir_Kind_Selected_Name => 2035,
+ Iir_Kind_Operator_Symbol => 2040,
+ Iir_Kind_Reference_Name => 2045,
+ Iir_Kind_External_Constant_Name => 2054,
+ Iir_Kind_External_Signal_Name => 2063,
+ Iir_Kind_External_Variable_Name => 2073,
+ Iir_Kind_Selected_By_All_Name => 2079,
+ Iir_Kind_Parenthesis_Name => 2084,
+ Iir_Kind_Package_Pathname => 2088,
+ Iir_Kind_Absolute_Pathname => 2089,
+ Iir_Kind_Relative_Pathname => 2090,
+ Iir_Kind_Pathname_Element => 2095,
+ Iir_Kind_Base_Attribute => 2097,
+ Iir_Kind_Subtype_Attribute => 2102,
+ Iir_Kind_Element_Attribute => 2107,
+ Iir_Kind_Across_Attribute => 2112,
+ Iir_Kind_Through_Attribute => 2117,
+ Iir_Kind_Nature_Reference_Attribute => 2121,
+ Iir_Kind_Left_Type_Attribute => 2126,
+ Iir_Kind_Right_Type_Attribute => 2131,
+ Iir_Kind_High_Type_Attribute => 2136,
+ Iir_Kind_Low_Type_Attribute => 2141,
+ Iir_Kind_Ascending_Type_Attribute => 2146,
+ Iir_Kind_Image_Attribute => 2152,
+ Iir_Kind_Value_Attribute => 2158,
+ Iir_Kind_Pos_Attribute => 2164,
+ Iir_Kind_Val_Attribute => 2170,
+ Iir_Kind_Succ_Attribute => 2176,
+ Iir_Kind_Pred_Attribute => 2182,
+ Iir_Kind_Leftof_Attribute => 2188,
+ Iir_Kind_Rightof_Attribute => 2194,
+ Iir_Kind_Signal_Slew_Attribute => 2202,
+ Iir_Kind_Quantity_Slew_Attribute => 2210,
+ Iir_Kind_Ramp_Attribute => 2218,
+ Iir_Kind_Zoh_Attribute => 2226,
+ Iir_Kind_Ltf_Attribute => 2234,
+ Iir_Kind_Ztf_Attribute => 2244,
+ Iir_Kind_Dot_Attribute => 2251,
+ Iir_Kind_Integ_Attribute => 2258,
+ Iir_Kind_Quantity_Delayed_Attribute => 2266,
+ Iir_Kind_Above_Attribute => 2274,
+ Iir_Kind_Delayed_Attribute => 2283,
+ Iir_Kind_Stable_Attribute => 2292,
+ Iir_Kind_Quiet_Attribute => 2301,
+ Iir_Kind_Transaction_Attribute => 2310,
+ Iir_Kind_Event_Attribute => 2314,
+ Iir_Kind_Active_Attribute => 2318,
+ Iir_Kind_Last_Event_Attribute => 2322,
+ Iir_Kind_Last_Active_Attribute => 2326,
+ Iir_Kind_Last_Value_Attribute => 2330,
+ Iir_Kind_Driving_Attribute => 2334,
+ Iir_Kind_Driving_Value_Attribute => 2338,
+ Iir_Kind_Behavior_Attribute => 2338,
+ Iir_Kind_Structure_Attribute => 2338,
+ Iir_Kind_Simple_Name_Attribute => 2345,
+ Iir_Kind_Instance_Name_Attribute => 2350,
+ Iir_Kind_Path_Name_Attribute => 2355,
+ Iir_Kind_Left_Array_Attribute => 2362,
+ Iir_Kind_Right_Array_Attribute => 2369,
+ Iir_Kind_High_Array_Attribute => 2376,
+ Iir_Kind_Low_Array_Attribute => 2383,
+ Iir_Kind_Length_Array_Attribute => 2390,
+ Iir_Kind_Ascending_Array_Attribute => 2397,
+ Iir_Kind_Range_Array_Attribute => 2404,
+ Iir_Kind_Reverse_Range_Array_Attribute => 2411,
+ Iir_Kind_Attribute_Name => 2420
);
function Get_Fields_First (K : Iir_Kind) return Fields_Index is
@@ -8662,6 +8674,7 @@ package body Vhdl.Nodes_Meta is
| Iir_Kind_Group_Declaration
| Iir_Kind_Non_Object_Alias_Declaration
| Iir_Kind_Psl_Declaration
+ | Iir_Kind_Psl_Boolean_Parameter
| Iir_Kind_Psl_Endpoint_Declaration
| Iir_Kind_Function_Declaration
| Iir_Kind_Procedure_Declaration
@@ -8799,6 +8812,7 @@ package body Vhdl.Nodes_Meta is
| Iir_Kind_Unit_Declaration
| Iir_Kind_Attribute_Declaration
| Iir_Kind_Element_Declaration
+ | Iir_Kind_Psl_Boolean_Parameter
| Iir_Kind_Psl_Endpoint_Declaration
| Iir_Kind_Enumeration_Literal
| Iir_Kind_Function_Declaration
@@ -9590,6 +9604,7 @@ package body Vhdl.Nodes_Meta is
| Iir_Kind_Nature_Element_Declaration
| Iir_Kind_Non_Object_Alias_Declaration
| Iir_Kind_Psl_Declaration
+ | Iir_Kind_Psl_Boolean_Parameter
| Iir_Kind_Psl_Endpoint_Declaration
| Iir_Kind_Enumeration_Literal
| Iir_Kind_Function_Declaration
@@ -9759,6 +9774,7 @@ package body Vhdl.Nodes_Meta is
| Iir_Kind_Nature_Element_Declaration
| Iir_Kind_Non_Object_Alias_Declaration
| Iir_Kind_Psl_Declaration
+ | Iir_Kind_Psl_Boolean_Parameter
| Iir_Kind_Psl_Endpoint_Declaration
| Iir_Kind_Enumeration_Literal
| Iir_Kind_Function_Declaration
@@ -11116,6 +11132,7 @@ package body Vhdl.Nodes_Meta is
| Iir_Kind_Nature_Element_Declaration
| Iir_Kind_Non_Object_Alias_Declaration
| Iir_Kind_Psl_Declaration
+ | Iir_Kind_Psl_Boolean_Parameter
| Iir_Kind_Psl_Endpoint_Declaration
| Iir_Kind_Enumeration_Literal
| Iir_Kind_Function_Declaration
@@ -11326,6 +11343,7 @@ package body Vhdl.Nodes_Meta is
| Iir_Kind_Attribute_Value
| Iir_Kind_Range_Expression
| Iir_Kind_Unit_Declaration
+ | Iir_Kind_Psl_Boolean_Parameter
| Iir_Kind_Psl_Endpoint_Declaration
| Iir_Kind_Enumeration_Literal
| Iir_Kind_Object_Alias_Declaration
@@ -12362,6 +12380,7 @@ package body Vhdl.Nodes_Meta is
| Iir_Kind_Group_Declaration
| Iir_Kind_Non_Object_Alias_Declaration
| Iir_Kind_Psl_Declaration
+ | Iir_Kind_Psl_Boolean_Parameter
| Iir_Kind_Psl_Endpoint_Declaration
| Iir_Kind_Enumeration_Literal
| Iir_Kind_Function_Declaration
@@ -12797,6 +12816,7 @@ package body Vhdl.Nodes_Meta is
begin
case K is
when Iir_Kind_Psl_Declaration
+ | Iir_Kind_Psl_Boolean_Parameter
| Iir_Kind_Psl_Endpoint_Declaration =>
return True;
when others =>
diff --git a/src/vhdl/vhdl-nodes_walk.adb b/src/vhdl/vhdl-nodes_walk.adb
index bf4839d3b..63deb3b53 100644
--- a/src/vhdl/vhdl-nodes_walk.adb
+++ b/src/vhdl/vhdl-nodes_walk.adb
@@ -158,7 +158,8 @@ package body Vhdl.Nodes_Walk is
when Iir_Kinds_Simple_Concurrent_Statement
| Iir_Kind_Component_Instantiation_Statement
| Iir_Kinds_Simultaneous_Statement
- | Iir_Kind_Psl_Default_Clock =>
+ | Iir_Kind_Psl_Default_Clock
+ | Iir_Kind_Psl_Declaration =>
Status := Cb.all (Stmt);
when Iir_Kind_Block_Statement =>
Status := Cb.all (Stmt);
diff --git a/src/vhdl/vhdl-parse_psl.adb b/src/vhdl/vhdl-parse_psl.adb
index d6168ca23..55e65e4ef 100644
--- a/src/vhdl/vhdl-parse_psl.adb
+++ b/src/vhdl/vhdl-parse_psl.adb
@@ -1125,7 +1125,7 @@ package body Vhdl.Parse_Psl is
if Current_Token = Tok_Left_Paren then
Last_Param := Null_Node;
loop
- -- precond: '(' or ';'.
+ -- Skip '(' or ';'.
Scan;
case Current_Token is
when Tok_Psl_Const =>
@@ -1142,7 +1142,7 @@ package body Vhdl.Parse_Psl is
-- Formal parameters.
loop
- -- precond: parameter_type or ','
+ -- Skip parameter_type or ','.
Scan;
Param := Create_Node_Loc (Pkind);
if Current_Token /= Tok_Identifier then
@@ -1156,15 +1156,21 @@ package body Vhdl.Parse_Psl is
Set_Chain (Last_Param, Param);
end if;
Last_Param := Param;
+
+ -- Skip identifier.
Scan;
+
exit when Current_Token /= Tok_Comma;
+ Set_Has_Identifier_List (Last_Param, True);
end loop;
exit when Current_Token = Tok_Right_Paren;
if Current_Token /= Tok_Semi_Colon then
- Error_Msg_Parse ("';' expected between formal parameter");
+ Error_Msg_Parse ("';' expected between formal parameters");
end if;
end loop;
+
+ -- Skip ')'.
Scan;
end if;
diff --git a/src/vhdl/vhdl-prints.adb b/src/vhdl/vhdl-prints.adb
index c15f55788..509eb223c 100644
--- a/src/vhdl/vhdl-prints.adb
+++ b/src/vhdl/vhdl-prints.adb
@@ -254,7 +254,8 @@ package body Vhdl.Prints is
| Iir_Kind_Group_Template_Declaration
| Iir_Kind_Character_Literal
| Iir_Kinds_Process_Statement
- | Iir_Kind_Psl_Endpoint_Declaration =>
+ | Iir_Kind_Psl_Endpoint_Declaration
+ | Iir_Kind_Psl_Boolean_Parameter =>
Disp_Identifier (Ctxt, Decl);
when Iir_Kind_Anonymous_Type_Declaration =>
Start_Lit (Ctxt, Tok_Identifier);
@@ -4966,6 +4967,8 @@ package body Vhdl.Prints is
Disp_Psl_Assume_Directive (Ctxt, Expr);
when Iir_Kind_Psl_Restrict_Directive =>
Disp_Psl_Restrict_Directive (Ctxt, Expr);
+ when Iir_Kind_Psl_Boolean_Parameter =>
+ Disp_Name_Of (Ctxt, Expr);
when Iir_Kind_Error =>
declare
diff --git a/src/vhdl/vhdl-sem_expr.adb b/src/vhdl/vhdl-sem_expr.adb
index 992d66827..e1938b1a4 100644
--- a/src/vhdl/vhdl-sem_expr.adb
+++ b/src/vhdl/vhdl-sem_expr.adb
@@ -442,6 +442,7 @@ package body Vhdl.Sem_Expr is
| Iir_Kind_Function_Call =>
return Expr;
when Iir_Kind_Psl_Endpoint_Declaration
+ | Iir_Kind_Psl_Boolean_Parameter
| Iir_Kind_Psl_Prev
| Iir_Kind_Psl_Stable
| Iir_Kind_Psl_Rose
@@ -4824,7 +4825,8 @@ package body Vhdl.Sem_Expr is
return;
when Iir_Kinds_External_Name =>
return;
- when Iir_Kind_Psl_Endpoint_Declaration =>
+ when Iir_Kind_Psl_Endpoint_Declaration
+ | Iir_Kind_Psl_Boolean_Parameter =>
return;
when Iir_Kind_File_Declaration
| Iir_Kind_Interface_File_Declaration =>
diff --git a/src/vhdl/vhdl-sem_names.adb b/src/vhdl/vhdl-sem_names.adb
index dc7c0ab60..6962072df 100644
--- a/src/vhdl/vhdl-sem_names.adb
+++ b/src/vhdl/vhdl-sem_names.adb
@@ -2038,7 +2038,8 @@ package body Vhdl.Sem_Names is
return Res;
when Iir_Kind_Psl_Expression =>
return Res;
- when Iir_Kind_Psl_Declaration =>
+ when Iir_Kind_Psl_Declaration
+ | Iir_Kind_Psl_Boolean_Parameter =>
return Name;
when Iir_Kind_Element_Declaration =>
-- Certainly an error!
diff --git a/src/vhdl/vhdl-sem_psl.adb b/src/vhdl/vhdl-sem_psl.adb
index fc2c15fab..f498f0115 100644
--- a/src/vhdl/vhdl-sem_psl.adb
+++ b/src/vhdl/vhdl-sem_psl.adb
@@ -300,7 +300,8 @@ package body Vhdl.Sem_Psl is
when Iir_Kind_Overload_List =>
-- FIXME: todo.
raise Internal_Error;
- when Iir_Kind_Psl_Declaration =>
+ when Iir_Kind_Psl_Declaration
+ | Iir_Kind_Psl_Boolean_Parameter =>
Decl := Get_Psl_Declaration (Name);
case Get_Kind (Decl) is
when N_Sequence_Declaration =>
@@ -704,7 +705,12 @@ package body Vhdl.Sem_Psl is
-- Make formal parameters visible.
Formal := Get_Parameter_List (Decl);
while Formal /= Null_PSL_Node loop
- El := Create_Iir (Iir_Kind_Psl_Declaration);
+ if Get_Kind (Formal) = N_Boolean_Parameter then
+ El := Create_Iir (Iir_Kind_Psl_Boolean_Parameter);
+ Set_Type (El, Std_Package.Boolean_Type_Definition);
+ else
+ El := Create_Iir (Iir_Kind_Psl_Declaration);
+ end if;
Set_Location (El, Get_Location (Formal));
Set_Identifier (El, Get_Identifier (Formal));
Set_Psl_Declaration (El, Formal);
diff --git a/src/vhdl/vhdl-utils.adb b/src/vhdl/vhdl-utils.adb
index 9b7e84c04..6f362073d 100644
--- a/src/vhdl/vhdl-utils.adb
+++ b/src/vhdl/vhdl-utils.adb
@@ -364,6 +364,7 @@ package body Vhdl.Utils is
| Iir_Kind_Element_Declaration
| Iir_Kind_Nature_Element_Declaration
| Iir_Kind_Psl_Endpoint_Declaration
+ | Iir_Kind_Psl_Boolean_Parameter
| Iir_Kind_Psl_Declaration
| Iir_Kind_Psl_Default_Clock
| Iir_Kind_Package_Pathname