diff options
author | Tristan Gingold <tgingold@free.fr> | 2020-06-15 19:38:45 +0200 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2020-06-15 19:40:17 +0200 |
commit | 7d85d728bb261ad70ee7238851989bac0fc9ce47 (patch) | |
tree | d60fd513615d548235e04a35e7f8e46422947767 | |
parent | 0316f95368837dc163173e7ca52f37ecd8d3591d (diff) | |
download | ghdl-7d85d728bb261ad70ee7238851989bac0fc9ce47.tar.gz ghdl-7d85d728bb261ad70ee7238851989bac0fc9ce47.tar.bz2 ghdl-7d85d728bb261ad70ee7238851989bac0fc9ce47.zip |
vhdl: create default configuration for a vunit. Fix #1372
-rw-r--r-- | python/libghdl/thin/vhdl/nodes.py | 4 | ||||
-rw-r--r-- | python/libghdl/thin/vhdl/nodes_meta.py | 558 | ||||
-rw-r--r-- | python/libghdl/thin/vhdl/tokens.py | 317 | ||||
-rw-r--r-- | src/synth/synth-insts.adb | 2 | ||||
-rw-r--r-- | src/synth/synth-stmts.adb | 3 | ||||
-rw-r--r-- | src/vhdl/vhdl-canon.adb | 348 | ||||
-rw-r--r-- | src/vhdl/vhdl-nodes.adb | 24 | ||||
-rw-r--r-- | src/vhdl/vhdl-nodes.ads | 14 | ||||
-rw-r--r-- | src/vhdl/vhdl-nodes_meta.adb | 477 | ||||
-rw-r--r-- | src/vhdl/vhdl-nodes_meta.ads | 3 |
10 files changed, 922 insertions, 828 deletions
diff --git a/python/libghdl/thin/vhdl/nodes.py b/python/libghdl/thin/vhdl/nodes.py index e25d2ef95..9532fc6fa 100644 --- a/python/libghdl/thin/vhdl/nodes.py +++ b/python/libghdl/thin/vhdl/nodes.py @@ -1906,6 +1906,10 @@ Get_Bound_Vunit_Chain = libghdl.vhdl__nodes__get_bound_vunit_chain Set_Bound_Vunit_Chain = libghdl.vhdl__nodes__set_bound_vunit_chain +Get_Verification_Block_Configuration = libghdl.vhdl__nodes__get_verification_block_configuration + +Set_Verification_Block_Configuration = libghdl.vhdl__nodes__set_verification_block_configuration + Get_Block_Configuration = libghdl.vhdl__nodes__get_block_configuration Set_Block_Configuration = libghdl.vhdl__nodes__set_block_configuration diff --git a/python/libghdl/thin/vhdl/nodes_meta.py b/python/libghdl/thin/vhdl/nodes_meta.py index e7d5dd26f..239cd942a 100644 --- a/python/libghdl/thin/vhdl/nodes_meta.py +++ b/python/libghdl/thin/vhdl/nodes_meta.py @@ -148,283 +148,284 @@ class fields: Inherit_Spec_Chain = 83 Vunit_Item_Chain = 84 Bound_Vunit_Chain = 85 - Block_Configuration = 86 - Concurrent_Statement_Chain = 87 - Chain = 88 - Port_Chain = 89 - Generic_Chain = 90 - Type = 91 - Subtype_Indication = 92 - Discrete_Range = 93 - Type_Definition = 94 - Subtype_Definition = 95 - Incomplete_Type_Declaration = 96 - Interface_Type_Subprograms = 97 - Nature_Definition = 98 - Nature = 99 - Subnature_Indication = 100 - Mode = 101 - Guarded_Signal_Flag = 102 - Signal_Kind = 103 - Base_Name = 104 - Interface_Declaration_Chain = 105 - Subprogram_Specification = 106 - Sequential_Statement_Chain = 107 - Simultaneous_Statement_Chain = 108 - Subprogram_Body = 109 - Overload_Number = 110 - Subprogram_Depth = 111 - Subprogram_Hash = 112 - Impure_Depth = 113 - Return_Type = 114 - Implicit_Definition = 115 - Default_Value = 116 - Deferred_Declaration = 117 - Deferred_Declaration_Flag = 118 - Shared_Flag = 119 - Design_Unit = 120 - Block_Statement = 121 - Signal_Driver = 122 - Declaration_Chain = 123 - File_Logical_Name = 124 - File_Open_Kind = 125 - Element_Position = 126 - Use_Clause_Chain = 127 - Context_Reference_Chain = 128 - Selected_Name = 129 - Type_Declarator = 130 - Complete_Type_Definition = 131 - Incomplete_Type_Ref_Chain = 132 - Associated_Type = 133 - Enumeration_Literal_List = 134 - Entity_Class_Entry_Chain = 135 - Group_Constituent_List = 136 - Unit_Chain = 137 - Primary_Unit = 138 - Identifier = 139 - Label = 140 - Visible_Flag = 141 - Range_Constraint = 142 - Direction = 143 - Left_Limit = 144 - Right_Limit = 145 - Left_Limit_Expr = 146 - Right_Limit_Expr = 147 - Base_Type = 148 - Simple_Nature = 149 - Base_Nature = 150 - Resolution_Indication = 151 - Record_Element_Resolution_Chain = 152 - Tolerance = 153 - Plus_Terminal_Name = 154 - Minus_Terminal_Name = 155 - Plus_Terminal = 156 - Minus_Terminal = 157 - Magnitude_Expression = 158 - Phase_Expression = 159 - Power_Expression = 160 - Simultaneous_Left = 161 - Simultaneous_Right = 162 - Text_File_Flag = 163 - Only_Characters_Flag = 164 - Is_Character_Type = 165 - Nature_Staticness = 166 - Type_Staticness = 167 - Constraint_State = 168 - Index_Subtype_List = 169 - Index_Subtype_Definition_List = 170 - Element_Subtype_Indication = 171 - Element_Subtype = 172 - Element_Subnature_Indication = 173 - Element_Subnature = 174 - Index_Constraint_List = 175 - Array_Element_Constraint = 176 - Elements_Declaration_List = 177 - Owned_Elements_Chain = 178 - Designated_Type = 179 - Designated_Subtype_Indication = 180 - Index_List = 181 - Reference = 182 - Nature_Declarator = 183 - Across_Type_Mark = 184 - Through_Type_Mark = 185 - Across_Type_Definition = 186 - Through_Type_Definition = 187 - Across_Type = 188 - Through_Type = 189 - Target = 190 - Waveform_Chain = 191 - Guard = 192 - Delay_Mechanism = 193 - Reject_Time_Expression = 194 - Sensitivity_List = 195 - Process_Origin = 196 - Package_Origin = 197 - Condition_Clause = 198 - Break_Element = 199 - Selector_Quantity = 200 - Break_Quantity = 201 - Timeout_Clause = 202 - Postponed_Flag = 203 - Callees_List = 204 - Passive_Flag = 205 - Resolution_Function_Flag = 206 - Wait_State = 207 - All_Sensitized_State = 208 - Seen_Flag = 209 - Pure_Flag = 210 - Foreign_Flag = 211 - Resolved_Flag = 212 - Signal_Type_Flag = 213 - Has_Signal_Flag = 214 - Purity_State = 215 - Elab_Flag = 216 - Vendor_Library_Flag = 217 - Configuration_Mark_Flag = 218 - Configuration_Done_Flag = 219 - Index_Constraint_Flag = 220 - Hide_Implicit_Flag = 221 - Assertion_Condition = 222 - Report_Expression = 223 - Severity_Expression = 224 - Instantiated_Unit = 225 - Generic_Map_Aspect_Chain = 226 - Port_Map_Aspect_Chain = 227 - Configuration_Name = 228 - Component_Configuration = 229 - Configuration_Specification = 230 - Default_Binding_Indication = 231 - Default_Configuration_Declaration = 232 - Expression = 233 - Conditional_Expression_Chain = 234 - Allocator_Designated_Type = 235 - Selected_Waveform_Chain = 236 - Conditional_Waveform_Chain = 237 - Guard_Expression = 238 - Guard_Decl = 239 - Guard_Sensitivity_List = 240 - Signal_Attribute_Chain = 241 - Block_Block_Configuration = 242 - Package_Header = 243 - Block_Header = 244 - Uninstantiated_Package_Name = 245 - Uninstantiated_Package_Decl = 246 - Instance_Source_File = 247 - Generate_Block_Configuration = 248 - Generate_Statement_Body = 249 - Alternative_Label = 250 - Generate_Else_Clause = 251 - Condition = 252 - Else_Clause = 253 - Parameter_Specification = 254 - Parent = 255 - Loop_Label = 256 - Exit_Flag = 257 - Next_Flag = 258 - Component_Name = 259 - Instantiation_List = 260 - Entity_Aspect = 261 - Default_Entity_Aspect = 262 - Binding_Indication = 263 - Named_Entity = 264 - Alias_Declaration = 265 - Referenced_Name = 266 - Expr_Staticness = 267 - Scalar_Size = 268 - Error_Origin = 269 - Operand = 270 - Left = 271 - Right = 272 - Unit_Name = 273 - Name = 274 - Group_Template_Name = 275 - Name_Staticness = 276 - Prefix = 277 - Signature_Prefix = 278 - External_Pathname = 279 - Pathname_Suffix = 280 - Pathname_Expression = 281 - In_Formal_Flag = 282 - Slice_Subtype = 283 - Suffix = 284 - Index_Subtype = 285 - Parameter = 286 - Parameter_2 = 287 - Parameter_3 = 288 - Parameter_4 = 289 - Attr_Chain = 290 - Signal_Attribute_Declaration = 291 - Actual_Type = 292 - Actual_Type_Definition = 293 - Association_Chain = 294 - Individual_Association_Chain = 295 - Subprogram_Association_Chain = 296 - Aggregate_Info = 297 - Sub_Aggregate_Info = 298 - Aggr_Dynamic_Flag = 299 - Aggr_Min_Length = 300 - Aggr_Low_Limit = 301 - Aggr_High_Limit = 302 - Aggr_Others_Flag = 303 - Aggr_Named_Flag = 304 - Aggregate_Expand_Flag = 305 - Association_Choices_Chain = 306 - Case_Statement_Alternative_Chain = 307 - Choice_Staticness = 308 - Procedure_Call = 309 - Implementation = 310 - Parameter_Association_Chain = 311 - Method_Object = 312 - Subtype_Type_Mark = 313 - Subnature_Nature_Mark = 314 - Type_Conversion_Subtype = 315 - Type_Mark = 316 - File_Type_Mark = 317 - Return_Type_Mark = 318 - Has_Disconnect_Flag = 319 - Has_Active_Flag = 320 - Is_Within_Flag = 321 - Type_Marks_List = 322 - Implicit_Alias_Flag = 323 - Alias_Signature = 324 - Attribute_Signature = 325 - Overload_List = 326 - Simple_Name_Identifier = 327 - Simple_Name_Subtype = 328 - Protected_Type_Body = 329 - Protected_Type_Declaration = 330 - Use_Flag = 331 - End_Has_Reserved_Id = 332 - End_Has_Identifier = 333 - End_Has_Postponed = 334 - Has_Label = 335 - Has_Begin = 336 - Has_End = 337 - Has_Is = 338 - Has_Pure = 339 - Has_Body = 340 - Has_Parameter = 341 - Has_Component = 342 - Has_Identifier_List = 343 - Has_Mode = 344 - Has_Class = 345 - Has_Delay_Mechanism = 346 - Suspend_Flag = 347 - Is_Ref = 348 - Is_Forward_Ref = 349 - Psl_Property = 350 - Psl_Sequence = 351 - Psl_Declaration = 352 - Psl_Expression = 353 - Psl_Boolean = 354 - PSL_Clock = 355 - PSL_NFA = 356 - PSL_Nbr_States = 357 - PSL_Clock_Sensitivity = 358 - PSL_EOS_Flag = 359 - Count_Expression = 360 - Clock_Expression = 361 - Default_Clock = 362 + 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 + Default_Value = 117 + Deferred_Declaration = 118 + Deferred_Declaration_Flag = 119 + Shared_Flag = 120 + Design_Unit = 121 + Block_Statement = 122 + Signal_Driver = 123 + Declaration_Chain = 124 + File_Logical_Name = 125 + File_Open_Kind = 126 + Element_Position = 127 + Use_Clause_Chain = 128 + Context_Reference_Chain = 129 + Selected_Name = 130 + Type_Declarator = 131 + Complete_Type_Definition = 132 + Incomplete_Type_Ref_Chain = 133 + Associated_Type = 134 + Enumeration_Literal_List = 135 + Entity_Class_Entry_Chain = 136 + Group_Constituent_List = 137 + Unit_Chain = 138 + Primary_Unit = 139 + Identifier = 140 + Label = 141 + Visible_Flag = 142 + Range_Constraint = 143 + Direction = 144 + Left_Limit = 145 + Right_Limit = 146 + Left_Limit_Expr = 147 + Right_Limit_Expr = 148 + Base_Type = 149 + Simple_Nature = 150 + Base_Nature = 151 + Resolution_Indication = 152 + Record_Element_Resolution_Chain = 153 + Tolerance = 154 + Plus_Terminal_Name = 155 + Minus_Terminal_Name = 156 + Plus_Terminal = 157 + Minus_Terminal = 158 + Magnitude_Expression = 159 + Phase_Expression = 160 + Power_Expression = 161 + Simultaneous_Left = 162 + Simultaneous_Right = 163 + Text_File_Flag = 164 + Only_Characters_Flag = 165 + Is_Character_Type = 166 + Nature_Staticness = 167 + Type_Staticness = 168 + Constraint_State = 169 + Index_Subtype_List = 170 + Index_Subtype_Definition_List = 171 + Element_Subtype_Indication = 172 + Element_Subtype = 173 + Element_Subnature_Indication = 174 + Element_Subnature = 175 + Index_Constraint_List = 176 + Array_Element_Constraint = 177 + Elements_Declaration_List = 178 + Owned_Elements_Chain = 179 + Designated_Type = 180 + Designated_Subtype_Indication = 181 + Index_List = 182 + Reference = 183 + Nature_Declarator = 184 + Across_Type_Mark = 185 + Through_Type_Mark = 186 + Across_Type_Definition = 187 + Through_Type_Definition = 188 + Across_Type = 189 + Through_Type = 190 + Target = 191 + Waveform_Chain = 192 + Guard = 193 + Delay_Mechanism = 194 + Reject_Time_Expression = 195 + Sensitivity_List = 196 + Process_Origin = 197 + Package_Origin = 198 + Condition_Clause = 199 + Break_Element = 200 + Selector_Quantity = 201 + Break_Quantity = 202 + Timeout_Clause = 203 + Postponed_Flag = 204 + Callees_List = 205 + Passive_Flag = 206 + Resolution_Function_Flag = 207 + Wait_State = 208 + All_Sensitized_State = 209 + Seen_Flag = 210 + Pure_Flag = 211 + Foreign_Flag = 212 + Resolved_Flag = 213 + Signal_Type_Flag = 214 + Has_Signal_Flag = 215 + Purity_State = 216 + Elab_Flag = 217 + Vendor_Library_Flag = 218 + Configuration_Mark_Flag = 219 + Configuration_Done_Flag = 220 + Index_Constraint_Flag = 221 + Hide_Implicit_Flag = 222 + Assertion_Condition = 223 + Report_Expression = 224 + Severity_Expression = 225 + Instantiated_Unit = 226 + Generic_Map_Aspect_Chain = 227 + Port_Map_Aspect_Chain = 228 + Configuration_Name = 229 + Component_Configuration = 230 + Configuration_Specification = 231 + Default_Binding_Indication = 232 + Default_Configuration_Declaration = 233 + Expression = 234 + Conditional_Expression_Chain = 235 + Allocator_Designated_Type = 236 + Selected_Waveform_Chain = 237 + Conditional_Waveform_Chain = 238 + Guard_Expression = 239 + Guard_Decl = 240 + Guard_Sensitivity_List = 241 + Signal_Attribute_Chain = 242 + Block_Block_Configuration = 243 + Package_Header = 244 + Block_Header = 245 + Uninstantiated_Package_Name = 246 + Uninstantiated_Package_Decl = 247 + Instance_Source_File = 248 + Generate_Block_Configuration = 249 + Generate_Statement_Body = 250 + Alternative_Label = 251 + Generate_Else_Clause = 252 + Condition = 253 + Else_Clause = 254 + Parameter_Specification = 255 + Parent = 256 + Loop_Label = 257 + Exit_Flag = 258 + Next_Flag = 259 + Component_Name = 260 + Instantiation_List = 261 + Entity_Aspect = 262 + Default_Entity_Aspect = 263 + Binding_Indication = 264 + Named_Entity = 265 + Alias_Declaration = 266 + Referenced_Name = 267 + Expr_Staticness = 268 + Scalar_Size = 269 + Error_Origin = 270 + Operand = 271 + Left = 272 + Right = 273 + Unit_Name = 274 + Name = 275 + Group_Template_Name = 276 + Name_Staticness = 277 + Prefix = 278 + Signature_Prefix = 279 + External_Pathname = 280 + Pathname_Suffix = 281 + Pathname_Expression = 282 + In_Formal_Flag = 283 + Slice_Subtype = 284 + Suffix = 285 + Index_Subtype = 286 + Parameter = 287 + Parameter_2 = 288 + Parameter_3 = 289 + Parameter_4 = 290 + Attr_Chain = 291 + Signal_Attribute_Declaration = 292 + Actual_Type = 293 + Actual_Type_Definition = 294 + Association_Chain = 295 + Individual_Association_Chain = 296 + Subprogram_Association_Chain = 297 + Aggregate_Info = 298 + Sub_Aggregate_Info = 299 + Aggr_Dynamic_Flag = 300 + Aggr_Min_Length = 301 + Aggr_Low_Limit = 302 + Aggr_High_Limit = 303 + Aggr_Others_Flag = 304 + Aggr_Named_Flag = 305 + Aggregate_Expand_Flag = 306 + Association_Choices_Chain = 307 + Case_Statement_Alternative_Chain = 308 + Choice_Staticness = 309 + Procedure_Call = 310 + Implementation = 311 + Parameter_Association_Chain = 312 + Method_Object = 313 + Subtype_Type_Mark = 314 + Subnature_Nature_Mark = 315 + Type_Conversion_Subtype = 316 + Type_Mark = 317 + File_Type_Mark = 318 + Return_Type_Mark = 319 + Has_Disconnect_Flag = 320 + Has_Active_Flag = 321 + Is_Within_Flag = 322 + Type_Marks_List = 323 + Implicit_Alias_Flag = 324 + Alias_Signature = 325 + Attribute_Signature = 326 + Overload_List = 327 + Simple_Name_Identifier = 328 + Simple_Name_Subtype = 329 + Protected_Type_Body = 330 + Protected_Type_Declaration = 331 + Use_Flag = 332 + End_Has_Reserved_Id = 333 + End_Has_Identifier = 334 + End_Has_Postponed = 335 + Has_Label = 336 + Has_Begin = 337 + Has_End = 338 + Has_Is = 339 + Has_Pure = 340 + Has_Body = 341 + Has_Parameter = 342 + Has_Component = 343 + Has_Identifier_List = 344 + Has_Mode = 345 + Has_Class = 346 + Has_Delay_Mechanism = 347 + Suspend_Flag = 348 + Is_Ref = 349 + Is_Forward_Ref = 350 + Psl_Property = 351 + Psl_Sequence = 352 + Psl_Declaration = 353 + Psl_Expression = 354 + Psl_Boolean = 355 + PSL_Clock = 356 + PSL_NFA = 357 + PSL_Nbr_States = 358 + PSL_Clock_Sensitivity = 359 + PSL_EOS_Flag = 360 + Count_Expression = 361 + Clock_Expression = 362 + Default_Clock = 363 Get_Boolean = libghdl.vhdl__nodes_meta__get_boolean @@ -750,6 +751,9 @@ Has_Vunit_Item_Chain =\ Has_Bound_Vunit_Chain =\ libghdl.vhdl__nodes_meta__has_bound_vunit_chain +Has_Verification_Block_Configuration =\ + libghdl.vhdl__nodes_meta__has_verification_block_configuration + Has_Block_Configuration =\ libghdl.vhdl__nodes_meta__has_block_configuration diff --git a/python/libghdl/thin/vhdl/tokens.py b/python/libghdl/thin/vhdl/tokens.py index 819f805ff..b38554d23 100644 --- a/python/libghdl/thin/vhdl/tokens.py +++ b/python/libghdl/thin/vhdl/tokens.py @@ -59,161 +59,162 @@ class Tok: Bar_Arrow = 55 Bar_Double_Arrow = 56 Minus_Greater = 57 - Arobase = 58 - Star = 59 - Slash = 60 - Mod = 61 - Rem = 62 - Abs = 63 - Not = 64 - Access = 65 - After = 66 - Alias = 67 - All = 68 - Architecture = 69 - Array = 70 - Assert = 71 - Attribute = 72 - Begin = 73 - Block = 74 - Body = 75 - Buffer = 76 - Bus = 77 - Case = 78 - Component = 79 - Configuration = 80 - Constant = 81 - Disconnect = 82 - Downto = 83 - Else = 84 - Elsif = 85 - End = 86 - Entity = 87 - Exit = 88 - File = 89 - For = 90 - Function = 91 - Generate = 92 - Generic = 93 - Guarded = 94 - If = 95 - In = 96 - Inout = 97 - Is = 98 - Label = 99 - Library = 100 - Linkage = 101 - Loop = 102 - Map = 103 - New = 104 - Next = 105 - Null = 106 - Of = 107 - On = 108 - Open = 109 - Others = 110 - Out = 111 - Package = 112 - Port = 113 - Procedure = 114 - Process = 115 - Range = 116 - Record = 117 - Register = 118 - Report = 119 - Return = 120 - Select = 121 - Severity = 122 - Signal = 123 - Subtype = 124 - Then = 125 - To = 126 - Transport = 127 - Type = 128 - Units = 129 - Until = 130 - Use = 131 - Variable = 132 - Wait = 133 - When = 134 - While = 135 - With = 136 - And = 137 - Or = 138 - Xor = 139 - Nand = 140 - Nor = 141 - Xnor = 142 - Group = 143 - Impure = 144 - Inertial = 145 - Literal = 146 - Postponed = 147 - Pure = 148 - Reject = 149 - Shared = 150 - Unaffected = 151 - Sll = 152 - Sla = 153 - Sra = 154 - Srl = 155 - Rol = 156 - Ror = 157 - Protected = 158 - Assume = 159 - Context = 160 - Cover = 161 - Default = 162 - Parameter = 163 - Property = 164 - Restrict = 165 - Restrict_Guarantee = 166 - Sequence = 167 - Vmode = 168 - Vprop = 169 - Vunit = 170 - Across = 171 - Break = 172 - Limit = 173 - Nature = 174 - Noise = 175 - Procedural = 176 - Quantity = 177 - Reference = 178 - Spectrum = 179 - Subnature = 180 - Terminal = 181 - Through = 182 - Tolerance = 183 - Psl_Clock = 184 - Psl_Endpoint = 185 - Psl_Const = 186 - Psl_Boolean = 187 - Inf = 188 - Within = 189 - Abort = 190 - Before = 191 - Before_Em = 192 - Before_Un = 193 - Before_Em_Un = 194 - Always = 195 - Never = 196 - Eventually_Em = 197 - Next_Em = 198 - Next_A = 199 - Next_A_Em = 200 - Next_E = 201 - Next_E_Em = 202 - Next_Event = 203 - Next_Event_Em = 204 - Next_Event_A = 205 - Next_Event_A_Em = 206 - Next_Event_E = 207 - Next_Event_E_Em = 208 - Until_Em = 209 - Until_Un = 210 - Until_Em_Un = 211 - Prev = 212 - Stable = 213 - Fell = 214 - Rose = 215 + Equiv_Arrow = 58 + Arobase = 59 + Star = 60 + Slash = 61 + Mod = 62 + Rem = 63 + Abs = 64 + Not = 65 + Access = 66 + After = 67 + Alias = 68 + All = 69 + Architecture = 70 + Array = 71 + Assert = 72 + Attribute = 73 + Begin = 74 + Block = 75 + Body = 76 + Buffer = 77 + Bus = 78 + Case = 79 + Component = 80 + Configuration = 81 + Constant = 82 + Disconnect = 83 + Downto = 84 + Else = 85 + Elsif = 86 + End = 87 + Entity = 88 + Exit = 89 + File = 90 + For = 91 + Function = 92 + Generate = 93 + Generic = 94 + Guarded = 95 + If = 96 + In = 97 + Inout = 98 + Is = 99 + Label = 100 + Library = 101 + Linkage = 102 + Loop = 103 + Map = 104 + New = 105 + Next = 106 + Null = 107 + Of = 108 + On = 109 + Open = 110 + Others = 111 + Out = 112 + Package = 113 + Port = 114 + Procedure = 115 + Process = 116 + Range = 117 + Record = 118 + Register = 119 + Report = 120 + Return = 121 + Select = 122 + Severity = 123 + Signal = 124 + Subtype = 125 + Then = 126 + To = 127 + Transport = 128 + Type = 129 + Units = 130 + Until = 131 + Use = 132 + Variable = 133 + Wait = 134 + When = 135 + While = 136 + With = 137 + And = 138 + Or = 139 + Xor = 140 + Nand = 141 + Nor = 142 + Xnor = 143 + Group = 144 + Impure = 145 + Inertial = 146 + Literal = 147 + Postponed = 148 + Pure = 149 + Reject = 150 + Shared = 151 + Unaffected = 152 + Sll = 153 + Sla = 154 + Sra = 155 + Srl = 156 + Rol = 157 + Ror = 158 + Protected = 159 + Assume = 160 + Context = 161 + Cover = 162 + Default = 163 + Parameter = 164 + Property = 165 + Restrict = 166 + Restrict_Guarantee = 167 + Sequence = 168 + Vmode = 169 + Vprop = 170 + Vunit = 171 + Across = 172 + Break = 173 + Limit = 174 + Nature = 175 + Noise = 176 + Procedural = 177 + Quantity = 178 + Reference = 179 + Spectrum = 180 + Subnature = 181 + Terminal = 182 + Through = 183 + Tolerance = 184 + Psl_Clock = 185 + Psl_Endpoint = 186 + Psl_Const = 187 + Psl_Boolean = 188 + Inf = 189 + Within = 190 + Abort = 191 + Before = 192 + Before_Em = 193 + Before_Un = 194 + Before_Em_Un = 195 + Always = 196 + Never = 197 + Eventually_Em = 198 + Next_Em = 199 + Next_A = 200 + Next_A_Em = 201 + Next_E = 202 + Next_E_Em = 203 + Next_Event = 204 + Next_Event_Em = 205 + Next_Event_A = 206 + Next_Event_A_Em = 207 + Next_Event_E = 208 + Next_Event_E_Em = 209 + Until_Em = 210 + Until_Un = 211 + Until_Em_Un = 212 + Prev = 213 + Stable = 214 + Fell = 215 + Rose = 216 diff --git a/src/synth/synth-insts.adb b/src/synth/synth-insts.adb index da1cc329c..c2bb5d580 100644 --- a/src/synth/synth-insts.adb +++ b/src/synth/synth-insts.adb @@ -1387,7 +1387,7 @@ package body Synth.Insts is pragma Assert (Get_Block_From_Block_Specification (Get_Block_Specification (Cfg)) = Blk); - Clear_Instantiation_Configuration (Blk); + -- Clear_Instantiation_Configuration (Blk); Item := Get_Configuration_Item_Chain (Cfg); while Item /= Null_Node loop diff --git a/src/synth/synth-stmts.adb b/src/synth/synth-stmts.adb index cdc5290a4..9418c6e22 100644 --- a/src/synth/synth-stmts.adb +++ b/src/synth/synth-stmts.adb @@ -3628,6 +3628,9 @@ package body Synth.Stmts is Mark (M, Proc_Pool); Instance_Pool := Proc_Pool'Access; + Apply_Block_Configuration + (Get_Verification_Block_Configuration (Unit), Unit); + Last_Type := Null_Node; Item := Get_Vunit_Item_Chain (Unit); while Item /= Null_Node loop diff --git a/src/vhdl/vhdl-canon.adb b/src/vhdl/vhdl-canon.adb index 319a329a6..0ff2fdc18 100644 --- a/src/vhdl/vhdl-canon.adb +++ b/src/vhdl/vhdl-canon.adb @@ -3143,17 +3143,13 @@ package body Vhdl.Canon is end loop; end Canon_Declarations; - procedure Canon_Block_Configuration (Top : Iir_Design_Unit; - Conf : Iir_Block_Configuration) + -- Append for FIRST_ITEM/LAST_ITEM the default block or component + -- configuration for statement EL (unless there is already a configuration + -- for it). + -- Always clear the association to the configuration for the statement. + procedure Canon_Block_Configuration_Statement + (El : Iir; Blk : Iir; Parent : Iir; First_Item, Last_Item : in out Iir) is - -- use Iir_Chains.Configuration_Item_Chain_Handling; - Spec : constant Iir := Get_Block_Specification (Conf); - Blk : constant Iir := Get_Block_From_Block_Specification (Spec); - Stmts : constant Iir := Get_Concurrent_Statement_Chain (Blk); - El : Iir; - Sub_Blk : Iir; - First_Item, Last_Item : Iir; - procedure Create_Default_Block_Configuration (Targ : Iir) is Res : Iir; @@ -3161,7 +3157,7 @@ package body Vhdl.Canon is begin Res := Create_Iir (Iir_Kind_Block_Configuration); Location_Copy (Res, Targ); - Set_Parent (Res, Conf); + Set_Parent (Res, Parent); if True then -- For debugging. Display as user block configuration. Spec := Build_Simple_Name (Targ, Targ); @@ -3174,6 +3170,167 @@ package body Vhdl.Canon is Chain_Append (First_Item, Last_Item, Res); end Create_Default_Block_Configuration; begin + case Get_Kind (El) is + when Iir_Kind_Component_Instantiation_Statement => + declare + Comp_Conf : Iir; + Res : Iir_Component_Configuration; + Designator_List : Iir_List; + Inst_List : Iir_Flist; + Inst : Iir; + Inst_Name : Iir; + begin + Comp_Conf := Get_Component_Configuration (El); + if Comp_Conf = Null_Iir then + if Is_Component_Instantiation (El) then + -- Create a component configuration. + -- FIXME: should merge all these default configuration + -- of the same component. + Res := Create_Iir (Iir_Kind_Component_Configuration); + Location_Copy (Res, El); + Set_Parent (Res, Parent); + Set_Component_Name + (Res, + Build_Reference_Name (Get_Instantiated_Unit (El))); + Designator_List := Create_Iir_List; + Append_Element + (Designator_List, Build_Simple_Name (El, El)); + Set_Instantiation_List + (Res, List_To_Flist (Designator_List)); + Chain_Append (First_Item, Last_Item, Res); + end if; + elsif Get_Kind (Comp_Conf) + = Iir_Kind_Configuration_Specification + then + -- Create component configuration + Res := Create_Iir (Iir_Kind_Component_Configuration); + Location_Copy (Res, Comp_Conf); + Set_Parent (Res, Parent); + Set_Component_Name + (Res, + Build_Reference_Name (Get_Component_Name (Comp_Conf))); + -- Keep in the designator list only the non-incrementally + -- bound instances, and only the instances in the current + -- statements parts (vhdl-87 generate issue). + Inst_List := Get_Instantiation_List (Comp_Conf); + Designator_List := Create_Iir_List; + for I in Flist_First .. Flist_Last (Inst_List) loop + Inst_Name := Get_Nth_Element (Inst_List, I); + Inst := Get_Named_Entity (Inst_Name); + if Get_Component_Configuration (Inst) = Comp_Conf + and then Get_Parent (Inst) = Blk + then + Set_Component_Configuration (Inst, Res); + Append_Element (Designator_List, + Build_Reference_Name (Inst_Name)); + end if; + end loop; + Set_Instantiation_List + (Res, List_To_Flist (Designator_List)); + Set_Binding_Indication + (Res, Get_Binding_Indication (Comp_Conf)); + Set_Is_Ref (Res, True); + Chain_Append (First_Item, Last_Item, Res); + end if; + Set_Component_Configuration (El, Null_Iir); + end; + when Iir_Kind_Block_Statement => + if Get_Block_Block_Configuration (El) = Null_Iir then + Create_Default_Block_Configuration (El); + end if; + when Iir_Kind_If_Generate_Statement => + declare + Clause : Iir; + Bod : Iir; + Blk_Config : Iir_Block_Configuration; + begin + Clause := El; + while Clause /= Null_Iir loop + Bod := Get_Generate_Statement_Body (Clause); + Blk_Config := Get_Generate_Block_Configuration (Bod); + if Blk_Config = Null_Iir then + Create_Default_Block_Configuration (Bod); + end if; + Set_Generate_Block_Configuration (Bod, Null_Iir); + Clause := Get_Generate_Else_Clause (Clause); + end loop; + end; + when Iir_Kind_Case_Generate_Statement => + declare + Alt : Iir; + Bod : Iir; + Blk_Config : Iir_Block_Configuration; + begin + Alt := Get_Case_Statement_Alternative_Chain (El); + while Alt /= Null_Iir loop + if not Get_Same_Alternative_Flag (Alt) then + Bod := Get_Associated_Block (Alt); + Blk_Config := Get_Generate_Block_Configuration (Bod); + if Blk_Config = Null_Iir then + Create_Default_Block_Configuration (Bod); + end if; + Set_Generate_Block_Configuration (Bod, Null_Iir); + end if; + Alt := Get_Chain (Alt); + end loop; + end; + when Iir_Kind_For_Generate_Statement => + declare + Bod : constant Iir := Get_Generate_Statement_Body (El); + Blk_Config : constant Iir_Block_Configuration := + Get_Generate_Block_Configuration (Bod); + Res : Iir_Block_Configuration; + Blk_Spec : Iir; + begin + if Blk_Config = Null_Iir then + Create_Default_Block_Configuration (Bod); + else + Blk_Spec := Strip_Denoting_Name + (Get_Block_Specification (Blk_Config)); + if Get_Kind (Blk_Spec) /= Iir_Kind_Generate_Statement_Body + then + -- There are generate specification with range or + -- expression. Create a default block configuration + -- for the (possible) non-covered values. + Res := Create_Iir (Iir_Kind_Block_Configuration); + Location_Copy (Res, El); + Set_Parent (Res, Parent); + Blk_Spec := Create_Iir (Iir_Kind_Indexed_Name); + Location_Copy (Blk_Spec, Res); + Set_Index_List (Blk_Spec, Iir_Flist_Others); + Set_Base_Name (Blk_Spec, El); + Set_Prefix (Blk_Spec, Build_Simple_Name (Bod, Res)); + Set_Block_Specification (Res, Blk_Spec); + Chain_Append (First_Item, Last_Item, Res); + end if; + end if; + Set_Generate_Block_Configuration (Bod, Null_Iir); + end; + + when Iir_Kinds_Simple_Concurrent_Statement + | Iir_Kind_Psl_Default_Clock + | Iir_Kind_Psl_Declaration + | Iir_Kind_Psl_Endpoint_Declaration + | Iir_Kind_Simple_Simultaneous_Statement => + null; + + when others => + Error_Kind ("canon_block_configuration(3)", El); + end case; + end Canon_Block_Configuration_Statement; + + procedure Canon_Block_Configuration (Top : Iir_Design_Unit; + Conf : Iir_Block_Configuration) + is + -- use Iir_Chains.Configuration_Item_Chain_Handling; + Spec : constant Iir := Get_Block_Specification (Conf); + Blk : constant Iir := Get_Block_From_Block_Specification (Spec); + Stmts : constant Iir := Get_Concurrent_Statement_Chain (Blk); + El : Iir; + Sub_Blk : Iir; + First_Item, Last_Item : Iir; + + begin -- Note: the only allowed declarations are use clauses, which are not -- canonicalized. @@ -3237,149 +3394,8 @@ package body Vhdl.Canon is -- Add default block configuration for unconfigured block statements. El := Stmts; while El /= Null_Iir loop - case Get_Kind (El) is - when Iir_Kind_Component_Instantiation_Statement => - declare - Comp_Conf : Iir; - Res : Iir_Component_Configuration; - Designator_List : Iir_List; - Inst_List : Iir_Flist; - Inst : Iir; - Inst_Name : Iir; - begin - Comp_Conf := Get_Component_Configuration (El); - if Comp_Conf = Null_Iir then - if Is_Component_Instantiation (El) then - -- Create a component configuration. - -- FIXME: should merge all these default configuration - -- of the same component. - Res := Create_Iir (Iir_Kind_Component_Configuration); - Location_Copy (Res, El); - Set_Parent (Res, Conf); - Set_Component_Name - (Res, - Build_Reference_Name (Get_Instantiated_Unit (El))); - Designator_List := Create_Iir_List; - Append_Element - (Designator_List, Build_Simple_Name (El, El)); - Set_Instantiation_List - (Res, List_To_Flist (Designator_List)); - Chain_Append (First_Item, Last_Item, Res); - end if; - elsif Get_Kind (Comp_Conf) - = Iir_Kind_Configuration_Specification - then - -- Create component configuration - Res := Create_Iir (Iir_Kind_Component_Configuration); - Location_Copy (Res, Comp_Conf); - Set_Parent (Res, Conf); - Set_Component_Name - (Res, - Build_Reference_Name (Get_Component_Name (Comp_Conf))); - -- Keep in the designator list only the non-incrementally - -- bound instances, and only the instances in the current - -- statements parts (vhdl-87 generate issue). - Inst_List := Get_Instantiation_List (Comp_Conf); - Designator_List := Create_Iir_List; - for I in Flist_First .. Flist_Last (Inst_List) loop - Inst_Name := Get_Nth_Element (Inst_List, I); - Inst := Get_Named_Entity (Inst_Name); - if Get_Component_Configuration (Inst) = Comp_Conf - and then Get_Parent (Inst) = Blk - then - Set_Component_Configuration (Inst, Res); - Append_Element (Designator_List, - Build_Reference_Name (Inst_Name)); - end if; - end loop; - Set_Instantiation_List - (Res, List_To_Flist (Designator_List)); - Set_Binding_Indication - (Res, Get_Binding_Indication (Comp_Conf)); - Set_Is_Ref (Res, True); - Chain_Append (First_Item, Last_Item, Res); - end if; - end; - when Iir_Kind_Block_Statement => - if Get_Block_Block_Configuration (El) = Null_Iir then - Create_Default_Block_Configuration (El); - end if; - when Iir_Kind_If_Generate_Statement => - declare - Clause : Iir; - Bod : Iir; - Blk_Config : Iir_Block_Configuration; - begin - Clause := El; - while Clause /= Null_Iir loop - Bod := Get_Generate_Statement_Body (Clause); - Blk_Config := Get_Generate_Block_Configuration (Bod); - if Blk_Config = Null_Iir then - Create_Default_Block_Configuration (Bod); - end if; - Clause := Get_Generate_Else_Clause (Clause); - end loop; - end; - when Iir_Kind_Case_Generate_Statement => - declare - Alt : Iir; - Bod : Iir; - Blk_Config : Iir_Block_Configuration; - begin - Alt := Get_Case_Statement_Alternative_Chain (El); - while Alt /= Null_Iir loop - if not Get_Same_Alternative_Flag (Alt) then - Bod := Get_Associated_Block (Alt); - Blk_Config := Get_Generate_Block_Configuration (Bod); - if Blk_Config = Null_Iir then - Create_Default_Block_Configuration (Bod); - end if; - end if; - Alt := Get_Chain (Alt); - end loop; - end; - when Iir_Kind_For_Generate_Statement => - declare - Bod : constant Iir := Get_Generate_Statement_Body (El); - Blk_Config : constant Iir_Block_Configuration := - Get_Generate_Block_Configuration (Bod); - Res : Iir_Block_Configuration; - Blk_Spec : Iir; - begin - if Blk_Config = Null_Iir then - Create_Default_Block_Configuration (Bod); - else - Blk_Spec := Strip_Denoting_Name - (Get_Block_Specification (Blk_Config)); - if Get_Kind (Blk_Spec) /= Iir_Kind_Generate_Statement_Body - then - -- There are generate specification with range or - -- expression. Create a default block configuration - -- for the (possible) non-covered values. - Res := Create_Iir (Iir_Kind_Block_Configuration); - Location_Copy (Res, El); - Set_Parent (Res, Conf); - Blk_Spec := Create_Iir (Iir_Kind_Indexed_Name); - Location_Copy (Blk_Spec, Res); - Set_Index_List (Blk_Spec, Iir_Flist_Others); - Set_Base_Name (Blk_Spec, El); - Set_Prefix (Blk_Spec, Build_Simple_Name (Bod, Res)); - Set_Block_Specification (Res, Blk_Spec); - Chain_Append (First_Item, Last_Item, Res); - end if; - end if; - end; - - when Iir_Kinds_Simple_Concurrent_Statement - | Iir_Kind_Psl_Default_Clock - | Iir_Kind_Psl_Declaration - | Iir_Kind_Psl_Endpoint_Declaration - | Iir_Kind_Simple_Simultaneous_Statement => - null; - - when others => - Error_Kind ("canon_block_configuration(3)", El); - end case; + Canon_Block_Configuration_Statement + (El, Blk, Conf, First_Item, Last_Item); El := Get_Chain (El); end loop; Set_Configuration_Item_Chain (Conf, First_Item); @@ -3415,11 +3431,23 @@ package body Vhdl.Canon is procedure Canon_Psl_Verification_Unit (Unit : Iir_Design_Unit) is - Decl : constant Iir := Get_Library_Unit (Unit); - Item : Iir; - Prev_Item : Iir; - Proc_Num : Natural := 0; + Decl : constant Iir := Get_Library_Unit (Unit); + Item : Iir; + Prev_Item : Iir; + Blk_Cfg : Iir; + First_Conf : Iir; + Last_Conf : Iir; + Proc_Num : Natural := 0; begin + Blk_Cfg := Create_Iir (Iir_Kind_Block_Configuration); + Set_Location (Blk_Cfg, Get_Location (Unit)); + Set_Parent (Blk_Cfg, Unit); + Set_Block_Specification (Blk_Cfg, Build_Simple_Name (Decl, Blk_Cfg)); + Set_Verification_Block_Configuration (Decl, Blk_Cfg); + + First_Conf := Null_Iir; + Last_Conf := Null_Iir; + Prev_Item := Null_Iir; Item := Get_Vunit_Item_Chain (Decl); while Item /= Null_Iir loop @@ -3450,6 +3478,8 @@ package body Vhdl.Canon is | Iir_Kind_Component_Instantiation_Statement => Canon_Concurrent_Label (Item, Proc_Num); Canon_Concurrent_Statement (Item, Unit); + Canon_Block_Configuration_Statement + (Item, Unit, Unit, First_Conf, Last_Conf); when others => Error_Kind ("canon_psl_verification_unit", Item); end case; @@ -3462,6 +3492,8 @@ package body Vhdl.Canon is Prev_Item := Item; Item := Get_Chain (Item); end loop; + + Set_Configuration_Item_Chain (Blk_Cfg, First_Conf); end Canon_Psl_Verification_Unit; procedure Canonicalize (Unit: Iir_Design_Unit) diff --git a/src/vhdl/vhdl-nodes.adb b/src/vhdl/vhdl-nodes.adb index 5501cec1a..9072405aa 100644 --- a/src/vhdl/vhdl-nodes.adb +++ b/src/vhdl/vhdl-nodes.adb @@ -1043,8 +1043,6 @@ package body Vhdl.Nodes is | Iir_Kind_Overload_List | Iir_Kind_Configuration_Declaration | Iir_Kind_Context_Declaration - | Iir_Kind_Vmode_Declaration - | Iir_Kind_Vprop_Declaration | Iir_Kind_Package_Body | Iir_Kind_Type_Declaration | Iir_Kind_Anonymous_Type_Declaration @@ -1248,6 +1246,8 @@ package body Vhdl.Nodes is | Iir_Kind_Entity_Declaration | Iir_Kind_Package_Declaration | Iir_Kind_Package_Instantiation_Declaration + | Iir_Kind_Vmode_Declaration + | Iir_Kind_Vprop_Declaration | Iir_Kind_Vunit_Declaration | Iir_Kind_Architecture_Body | Iir_Kind_Package_Header @@ -2713,7 +2713,7 @@ package body Vhdl.Nodes is pragma Assert (Vunit /= Null_Iir); pragma Assert (Has_Vunit_Item_Chain (Get_Kind (Vunit)), "no field Vunit_Item_Chain"); - return Get_Field4 (Vunit); + return Get_Field6 (Vunit); end Get_Vunit_Item_Chain; procedure Set_Vunit_Item_Chain (Vunit : Iir; Chain : Iir) is @@ -2721,7 +2721,7 @@ package body Vhdl.Nodes is pragma Assert (Vunit /= Null_Iir); pragma Assert (Has_Vunit_Item_Chain (Get_Kind (Vunit)), "no field Vunit_Item_Chain"); - Set_Field4 (Vunit, Chain); + Set_Field6 (Vunit, Chain); end Set_Vunit_Item_Chain; function Get_Bound_Vunit_Chain (Unit : Iir) return Iir is @@ -2740,6 +2740,22 @@ package body Vhdl.Nodes is Set_Field8 (Unit, Vunit); end Set_Bound_Vunit_Chain; + function Get_Verification_Block_Configuration (Vunit : Iir) return Iir is + begin + pragma Assert (Vunit /= Null_Iir); + pragma Assert (Has_Verification_Block_Configuration (Get_Kind (Vunit)), + "no field Verification_Block_Configuration"); + return Get_Field4 (Vunit); + end Get_Verification_Block_Configuration; + + procedure Set_Verification_Block_Configuration (Vunit : Iir; Conf : Iir) is + begin + pragma Assert (Vunit /= Null_Iir); + pragma Assert (Has_Verification_Block_Configuration (Get_Kind (Vunit)), + "no field Verification_Block_Configuration"); + Set_Field4 (Vunit, Conf); + end Set_Verification_Block_Configuration; + function Get_Block_Configuration (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 014520cf4..97eeccf24 100644 --- a/src/vhdl/vhdl-nodes.ads +++ b/src/vhdl/vhdl-nodes.ads @@ -1104,8 +1104,8 @@ package Vhdl.Nodes is -- Get/Set_End_Has_Identifier (Flag9) -- Iir_Kind_Vunit_Declaration (Medium) - -- Iir_Kind_Vmode_Declaration (Short) - -- Iir_Kind_Vprop_Declaration (Short) + -- Iir_Kind_Vmode_Declaration (Medium) + -- Iir_Kind_Vprop_Declaration (Medium) -- -- Get/Set_Parent (Field0) -- Get/Set_Design_Unit (Alias Field0) @@ -1118,7 +1118,9 @@ package Vhdl.Nodes is -- -- Get/Set_Attribute_Value_Chain (Field5) -- - -- Get/Set_Vunit_Item_Chain (Field4) + -- Get/Set_Vunit_Item_Chain (Field6) + -- + -- Get/Set_Verification_Block_Configuration (Field4) -- -- Only for Iir_Kind_Vunit_Declaration: -- Get/Set_Bound_Vunit_Chain (Field8) @@ -7594,7 +7596,7 @@ package Vhdl.Nodes is function Get_Inherit_Spec_Chain (Vunit : Iir) return Iir; procedure Set_Inherit_Spec_Chain (Vunit : Iir; Chain : Iir); - -- Field: Field4 Chain + -- Field: Field6 Chain function Get_Vunit_Item_Chain (Vunit : Iir) return Iir; procedure Set_Vunit_Item_Chain (Vunit : Iir; Chain : Iir); @@ -7604,6 +7606,10 @@ package Vhdl.Nodes is procedure Set_Bound_Vunit_Chain (Unit : Iir; Vunit : Iir); -- Field: Field4 + function Get_Verification_Block_Configuration (Vunit : Iir) return Iir; + procedure Set_Verification_Block_Configuration (Vunit : Iir; Conf : Iir); + + -- Field: Field4 function Get_Block_Configuration (Target : Iir) return Iir; procedure Set_Block_Configuration (Target : Iir; Block : Iir); diff --git a/src/vhdl/vhdl-nodes_meta.adb b/src/vhdl/vhdl-nodes_meta.adb index c64eed50b..1392a860d 100644 --- a/src/vhdl/vhdl-nodes_meta.adb +++ b/src/vhdl/vhdl-nodes_meta.adb @@ -105,6 +105,7 @@ package body Vhdl.Nodes_Meta is Field_Inherit_Spec_Chain => Type_Iir, Field_Vunit_Item_Chain => Type_Iir, Field_Bound_Vunit_Chain => Type_Iir, + Field_Verification_Block_Configuration => Type_Iir, Field_Block_Configuration => Type_Iir, Field_Concurrent_Statement_Chain => Type_Iir, Field_Chain => Type_Iir, @@ -564,6 +565,8 @@ package body Vhdl.Nodes_Meta is return "vunit_item_chain"; when Field_Bound_Vunit_Chain => return "bound_vunit_chain"; + when Field_Verification_Block_Configuration => + return "verification_block_configuration"; when Field_Block_Configuration => return "block_configuration"; when Field_Concurrent_Statement_Chain => @@ -1924,6 +1927,8 @@ package body Vhdl.Nodes_Meta is return Attr_Chain; when Field_Bound_Vunit_Chain => return Attr_Chain; + when Field_Verification_Block_Configuration => + return Attr_None; when Field_Block_Configuration => return Attr_None; when Field_Concurrent_Statement_Chain => @@ -3177,6 +3182,7 @@ package body Vhdl.Nodes_Meta is Field_Inherit_Spec_Chain, Field_Attribute_Value_Chain, Field_Vunit_Item_Chain, + Field_Verification_Block_Configuration, -- Iir_Kind_Vprop_Declaration Field_Identifier, Field_Has_Begin, @@ -3189,6 +3195,7 @@ package body Vhdl.Nodes_Meta is Field_Inherit_Spec_Chain, Field_Attribute_Value_Chain, Field_Vunit_Item_Chain, + Field_Verification_Block_Configuration, -- Iir_Kind_Vunit_Declaration Field_Identifier, Field_Has_Begin, @@ -3201,6 +3208,7 @@ package body Vhdl.Nodes_Meta is Field_Inherit_Spec_Chain, Field_Attribute_Value_Chain, Field_Vunit_Item_Chain, + Field_Verification_Block_Configuration, Field_Bound_Vunit_Chain, -- Iir_Kind_Package_Body Field_Identifier, @@ -5204,232 +5212,232 @@ package body Vhdl.Nodes_Meta is Iir_Kind_Context_Declaration => 567, Iir_Kind_Package_Declaration => 582, Iir_Kind_Package_Instantiation_Declaration => 596, - Iir_Kind_Vmode_Declaration => 607, - Iir_Kind_Vprop_Declaration => 618, - Iir_Kind_Vunit_Declaration => 630, - Iir_Kind_Package_Body => 638, - Iir_Kind_Architecture_Body => 651, - Iir_Kind_Type_Declaration => 658, - Iir_Kind_Anonymous_Type_Declaration => 664, - Iir_Kind_Subtype_Declaration => 671, - Iir_Kind_Nature_Declaration => 677, - Iir_Kind_Subnature_Declaration => 684, - Iir_Kind_Package_Header => 686, - Iir_Kind_Unit_Declaration => 695, - Iir_Kind_Library_Declaration => 703, - Iir_Kind_Component_Declaration => 713, - Iir_Kind_Attribute_Declaration => 720, - Iir_Kind_Group_Template_Declaration => 726, - Iir_Kind_Group_Declaration => 733, - Iir_Kind_Element_Declaration => 740, - Iir_Kind_Nature_Element_Declaration => 747, - Iir_Kind_Non_Object_Alias_Declaration => 755, - Iir_Kind_Psl_Declaration => 763, - Iir_Kind_Psl_Endpoint_Declaration => 777, - Iir_Kind_Enumeration_Literal => 788, - Iir_Kind_Function_Declaration => 813, - Iir_Kind_Procedure_Declaration => 837, - Iir_Kind_Function_Body => 847, - Iir_Kind_Procedure_Body => 858, - Iir_Kind_Terminal_Declaration => 867, - Iir_Kind_Object_Alias_Declaration => 878, - Iir_Kind_Free_Quantity_Declaration => 890, - Iir_Kind_Spectrum_Quantity_Declaration => 903, - Iir_Kind_Noise_Quantity_Declaration => 915, - Iir_Kind_Across_Quantity_Declaration => 931, - Iir_Kind_Through_Quantity_Declaration => 947, - Iir_Kind_File_Declaration => 961, - Iir_Kind_Guard_Signal_Declaration => 974, - Iir_Kind_Signal_Declaration => 991, - Iir_Kind_Variable_Declaration => 1004, - Iir_Kind_Constant_Declaration => 1018, - Iir_Kind_Iterator_Declaration => 1029, - Iir_Kind_Interface_Constant_Declaration => 1045, - Iir_Kind_Interface_Variable_Declaration => 1061, - Iir_Kind_Interface_Signal_Declaration => 1082, - Iir_Kind_Interface_File_Declaration => 1098, - Iir_Kind_Interface_Quantity_Declaration => 1114, - Iir_Kind_Interface_Terminal_Declaration => 1126, - Iir_Kind_Interface_Type_Declaration => 1136, - Iir_Kind_Interface_Package_Declaration => 1148, - Iir_Kind_Interface_Function_Declaration => 1165, - Iir_Kind_Interface_Procedure_Declaration => 1178, - Iir_Kind_Anonymous_Signal_Declaration => 1187, - Iir_Kind_Signal_Attribute_Declaration => 1190, - Iir_Kind_Identity_Operator => 1194, - Iir_Kind_Negation_Operator => 1198, - Iir_Kind_Absolute_Operator => 1202, - Iir_Kind_Not_Operator => 1206, - Iir_Kind_Implicit_Condition_Operator => 1210, - Iir_Kind_Condition_Operator => 1214, - Iir_Kind_Reduction_And_Operator => 1218, - Iir_Kind_Reduction_Or_Operator => 1222, - Iir_Kind_Reduction_Nand_Operator => 1226, - Iir_Kind_Reduction_Nor_Operator => 1230, - Iir_Kind_Reduction_Xor_Operator => 1234, - Iir_Kind_Reduction_Xnor_Operator => 1238, - Iir_Kind_And_Operator => 1243, - Iir_Kind_Or_Operator => 1248, - Iir_Kind_Nand_Operator => 1253, - Iir_Kind_Nor_Operator => 1258, - Iir_Kind_Xor_Operator => 1263, - Iir_Kind_Xnor_Operator => 1268, - Iir_Kind_Equality_Operator => 1273, - Iir_Kind_Inequality_Operator => 1278, - Iir_Kind_Less_Than_Operator => 1283, - Iir_Kind_Less_Than_Or_Equal_Operator => 1288, - Iir_Kind_Greater_Than_Operator => 1293, - Iir_Kind_Greater_Than_Or_Equal_Operator => 1298, - Iir_Kind_Match_Equality_Operator => 1303, - Iir_Kind_Match_Inequality_Operator => 1308, - Iir_Kind_Match_Less_Than_Operator => 1313, - Iir_Kind_Match_Less_Than_Or_Equal_Operator => 1318, - Iir_Kind_Match_Greater_Than_Operator => 1323, - Iir_Kind_Match_Greater_Than_Or_Equal_Operator => 1328, - Iir_Kind_Sll_Operator => 1333, - Iir_Kind_Sla_Operator => 1338, - Iir_Kind_Srl_Operator => 1343, - Iir_Kind_Sra_Operator => 1348, - Iir_Kind_Rol_Operator => 1353, - Iir_Kind_Ror_Operator => 1358, - Iir_Kind_Addition_Operator => 1363, - Iir_Kind_Substraction_Operator => 1368, - Iir_Kind_Concatenation_Operator => 1373, - Iir_Kind_Multiplication_Operator => 1378, - Iir_Kind_Division_Operator => 1383, - Iir_Kind_Modulus_Operator => 1388, - Iir_Kind_Remainder_Operator => 1393, - Iir_Kind_Exponentiation_Operator => 1398, - Iir_Kind_Function_Call => 1406, - Iir_Kind_Aggregate => 1413, - Iir_Kind_Parenthesis_Expression => 1416, - Iir_Kind_Qualified_Expression => 1420, - Iir_Kind_Type_Conversion => 1425, - Iir_Kind_Allocator_By_Expression => 1429, - Iir_Kind_Allocator_By_Subtype => 1434, - Iir_Kind_Selected_Element => 1442, - Iir_Kind_Dereference => 1447, - Iir_Kind_Implicit_Dereference => 1452, - Iir_Kind_Slice_Name => 1459, - Iir_Kind_Indexed_Name => 1465, - Iir_Kind_Psl_Prev => 1471, - Iir_Kind_Psl_Stable => 1476, - Iir_Kind_Psl_Rose => 1481, - Iir_Kind_Psl_Fell => 1486, - Iir_Kind_Psl_Expression => 1488, - Iir_Kind_Sensitized_Process_Statement => 1509, - Iir_Kind_Process_Statement => 1529, - Iir_Kind_Concurrent_Simple_Signal_Assignment => 1542, - Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1555, - Iir_Kind_Concurrent_Selected_Signal_Assignment => 1569, - Iir_Kind_Concurrent_Assertion_Statement => 1577, - Iir_Kind_Concurrent_Procedure_Call_Statement => 1584, - Iir_Kind_Concurrent_Break_Statement => 1592, - Iir_Kind_Psl_Assert_Directive => 1605, - Iir_Kind_Psl_Assume_Directive => 1616, - Iir_Kind_Psl_Cover_Directive => 1628, - Iir_Kind_Psl_Restrict_Directive => 1639, - Iir_Kind_Block_Statement => 1653, - Iir_Kind_If_Generate_Statement => 1664, - Iir_Kind_Case_Generate_Statement => 1673, - Iir_Kind_For_Generate_Statement => 1682, - Iir_Kind_Component_Instantiation_Statement => 1693, - Iir_Kind_Psl_Default_Clock => 1697, - Iir_Kind_Generate_Statement_Body => 1708, - Iir_Kind_If_Generate_Else_Clause => 1714, - Iir_Kind_Simple_Simultaneous_Statement => 1721, - Iir_Kind_Simultaneous_Null_Statement => 1725, - Iir_Kind_Simultaneous_Procedural_Statement => 1736, - Iir_Kind_Simultaneous_Case_Statement => 1745, - Iir_Kind_Simultaneous_If_Statement => 1754, - Iir_Kind_Simultaneous_Elsif => 1760, - Iir_Kind_Simple_Signal_Assignment_Statement => 1771, - Iir_Kind_Conditional_Signal_Assignment_Statement => 1782, - Iir_Kind_Selected_Waveform_Assignment_Statement => 1794, - Iir_Kind_Null_Statement => 1798, - Iir_Kind_Assertion_Statement => 1805, - Iir_Kind_Report_Statement => 1811, - Iir_Kind_Wait_Statement => 1819, - Iir_Kind_Variable_Assignment_Statement => 1826, - Iir_Kind_Conditional_Variable_Assignment_Statement => 1833, - Iir_Kind_Return_Statement => 1839, - Iir_Kind_For_Loop_Statement => 1850, - Iir_Kind_While_Loop_Statement => 1861, - Iir_Kind_Next_Statement => 1868, - Iir_Kind_Exit_Statement => 1875, - Iir_Kind_Case_Statement => 1883, - Iir_Kind_Procedure_Call_Statement => 1889, - Iir_Kind_Break_Statement => 1896, - Iir_Kind_If_Statement => 1906, - Iir_Kind_Elsif => 1912, - Iir_Kind_Character_Literal => 1920, - Iir_Kind_Simple_Name => 1928, - Iir_Kind_Selected_Name => 1937, - Iir_Kind_Operator_Symbol => 1943, - Iir_Kind_Reference_Name => 1948, - Iir_Kind_External_Constant_Name => 1956, - Iir_Kind_External_Signal_Name => 1964, - Iir_Kind_External_Variable_Name => 1973, - Iir_Kind_Selected_By_All_Name => 1979, - Iir_Kind_Parenthesis_Name => 1984, - Iir_Kind_Package_Pathname => 1988, - Iir_Kind_Absolute_Pathname => 1989, - Iir_Kind_Relative_Pathname => 1990, - Iir_Kind_Pathname_Element => 1995, - Iir_Kind_Base_Attribute => 1997, - Iir_Kind_Subtype_Attribute => 2002, - Iir_Kind_Element_Attribute => 2007, - Iir_Kind_Across_Attribute => 2012, - Iir_Kind_Through_Attribute => 2017, - Iir_Kind_Nature_Reference_Attribute => 2021, - Iir_Kind_Left_Type_Attribute => 2026, - Iir_Kind_Right_Type_Attribute => 2031, - Iir_Kind_High_Type_Attribute => 2036, - Iir_Kind_Low_Type_Attribute => 2041, - Iir_Kind_Ascending_Type_Attribute => 2046, - Iir_Kind_Image_Attribute => 2052, - Iir_Kind_Value_Attribute => 2058, - Iir_Kind_Pos_Attribute => 2064, - Iir_Kind_Val_Attribute => 2070, - Iir_Kind_Succ_Attribute => 2076, - Iir_Kind_Pred_Attribute => 2082, - Iir_Kind_Leftof_Attribute => 2088, - Iir_Kind_Rightof_Attribute => 2094, - Iir_Kind_Signal_Slew_Attribute => 2102, - Iir_Kind_Quantity_Slew_Attribute => 2110, - Iir_Kind_Ramp_Attribute => 2118, - Iir_Kind_Zoh_Attribute => 2126, - Iir_Kind_Ltf_Attribute => 2134, - Iir_Kind_Ztf_Attribute => 2144, - Iir_Kind_Dot_Attribute => 2151, - Iir_Kind_Integ_Attribute => 2158, - Iir_Kind_Above_Attribute => 2166, - Iir_Kind_Quantity_Delayed_Attribute => 2174, - Iir_Kind_Delayed_Attribute => 2183, - Iir_Kind_Stable_Attribute => 2192, - Iir_Kind_Quiet_Attribute => 2201, - Iir_Kind_Transaction_Attribute => 2210, - Iir_Kind_Event_Attribute => 2214, - Iir_Kind_Active_Attribute => 2218, - Iir_Kind_Last_Event_Attribute => 2222, - Iir_Kind_Last_Active_Attribute => 2226, - Iir_Kind_Last_Value_Attribute => 2230, - Iir_Kind_Driving_Attribute => 2234, - Iir_Kind_Driving_Value_Attribute => 2238, - Iir_Kind_Behavior_Attribute => 2238, - Iir_Kind_Structure_Attribute => 2238, - Iir_Kind_Simple_Name_Attribute => 2245, - Iir_Kind_Instance_Name_Attribute => 2250, - Iir_Kind_Path_Name_Attribute => 2255, - Iir_Kind_Left_Array_Attribute => 2262, - Iir_Kind_Right_Array_Attribute => 2269, - Iir_Kind_High_Array_Attribute => 2276, - Iir_Kind_Low_Array_Attribute => 2283, - Iir_Kind_Length_Array_Attribute => 2290, - Iir_Kind_Ascending_Array_Attribute => 2297, - Iir_Kind_Range_Array_Attribute => 2304, - Iir_Kind_Reverse_Range_Array_Attribute => 2311, - Iir_Kind_Attribute_Name => 2320 + Iir_Kind_Vmode_Declaration => 608, + Iir_Kind_Vprop_Declaration => 620, + Iir_Kind_Vunit_Declaration => 633, + Iir_Kind_Package_Body => 641, + Iir_Kind_Architecture_Body => 654, + Iir_Kind_Type_Declaration => 661, + Iir_Kind_Anonymous_Type_Declaration => 667, + Iir_Kind_Subtype_Declaration => 674, + Iir_Kind_Nature_Declaration => 680, + Iir_Kind_Subnature_Declaration => 687, + Iir_Kind_Package_Header => 689, + Iir_Kind_Unit_Declaration => 698, + Iir_Kind_Library_Declaration => 706, + Iir_Kind_Component_Declaration => 716, + Iir_Kind_Attribute_Declaration => 723, + Iir_Kind_Group_Template_Declaration => 729, + Iir_Kind_Group_Declaration => 736, + Iir_Kind_Element_Declaration => 743, + Iir_Kind_Nature_Element_Declaration => 750, + Iir_Kind_Non_Object_Alias_Declaration => 758, + Iir_Kind_Psl_Declaration => 766, + Iir_Kind_Psl_Endpoint_Declaration => 780, + Iir_Kind_Enumeration_Literal => 791, + Iir_Kind_Function_Declaration => 816, + Iir_Kind_Procedure_Declaration => 840, + Iir_Kind_Function_Body => 850, + Iir_Kind_Procedure_Body => 861, + Iir_Kind_Terminal_Declaration => 870, + Iir_Kind_Object_Alias_Declaration => 881, + Iir_Kind_Free_Quantity_Declaration => 893, + Iir_Kind_Spectrum_Quantity_Declaration => 906, + Iir_Kind_Noise_Quantity_Declaration => 918, + Iir_Kind_Across_Quantity_Declaration => 934, + Iir_Kind_Through_Quantity_Declaration => 950, + Iir_Kind_File_Declaration => 964, + Iir_Kind_Guard_Signal_Declaration => 977, + Iir_Kind_Signal_Declaration => 994, + Iir_Kind_Variable_Declaration => 1007, + Iir_Kind_Constant_Declaration => 1021, + Iir_Kind_Iterator_Declaration => 1032, + Iir_Kind_Interface_Constant_Declaration => 1048, + Iir_Kind_Interface_Variable_Declaration => 1064, + Iir_Kind_Interface_Signal_Declaration => 1085, + Iir_Kind_Interface_File_Declaration => 1101, + Iir_Kind_Interface_Quantity_Declaration => 1117, + Iir_Kind_Interface_Terminal_Declaration => 1129, + Iir_Kind_Interface_Type_Declaration => 1139, + Iir_Kind_Interface_Package_Declaration => 1151, + Iir_Kind_Interface_Function_Declaration => 1168, + Iir_Kind_Interface_Procedure_Declaration => 1181, + Iir_Kind_Anonymous_Signal_Declaration => 1190, + Iir_Kind_Signal_Attribute_Declaration => 1193, + Iir_Kind_Identity_Operator => 1197, + Iir_Kind_Negation_Operator => 1201, + Iir_Kind_Absolute_Operator => 1205, + Iir_Kind_Not_Operator => 1209, + Iir_Kind_Implicit_Condition_Operator => 1213, + Iir_Kind_Condition_Operator => 1217, + Iir_Kind_Reduction_And_Operator => 1221, + Iir_Kind_Reduction_Or_Operator => 1225, + Iir_Kind_Reduction_Nand_Operator => 1229, + Iir_Kind_Reduction_Nor_Operator => 1233, + Iir_Kind_Reduction_Xor_Operator => 1237, + Iir_Kind_Reduction_Xnor_Operator => 1241, + Iir_Kind_And_Operator => 1246, + Iir_Kind_Or_Operator => 1251, + Iir_Kind_Nand_Operator => 1256, + Iir_Kind_Nor_Operator => 1261, + Iir_Kind_Xor_Operator => 1266, + Iir_Kind_Xnor_Operator => 1271, + Iir_Kind_Equality_Operator => 1276, + Iir_Kind_Inequality_Operator => 1281, + Iir_Kind_Less_Than_Operator => 1286, + Iir_Kind_Less_Than_Or_Equal_Operator => 1291, + Iir_Kind_Greater_Than_Operator => 1296, + Iir_Kind_Greater_Than_Or_Equal_Operator => 1301, + Iir_Kind_Match_Equality_Operator => 1306, + Iir_Kind_Match_Inequality_Operator => 1311, + Iir_Kind_Match_Less_Than_Operator => 1316, + Iir_Kind_Match_Less_Than_Or_Equal_Operator => 1321, + Iir_Kind_Match_Greater_Than_Operator => 1326, + Iir_Kind_Match_Greater_Than_Or_Equal_Operator => 1331, + Iir_Kind_Sll_Operator => 1336, + Iir_Kind_Sla_Operator => 1341, + Iir_Kind_Srl_Operator => 1346, + Iir_Kind_Sra_Operator => 1351, + Iir_Kind_Rol_Operator => 1356, + Iir_Kind_Ror_Operator => 1361, + Iir_Kind_Addition_Operator => 1366, + Iir_Kind_Substraction_Operator => 1371, + Iir_Kind_Concatenation_Operator => 1376, + Iir_Kind_Multiplication_Operator => 1381, + Iir_Kind_Division_Operator => 1386, + Iir_Kind_Modulus_Operator => 1391, + Iir_Kind_Remainder_Operator => 1396, + Iir_Kind_Exponentiation_Operator => 1401, + Iir_Kind_Function_Call => 1409, + Iir_Kind_Aggregate => 1416, + Iir_Kind_Parenthesis_Expression => 1419, + Iir_Kind_Qualified_Expression => 1423, + Iir_Kind_Type_Conversion => 1428, + Iir_Kind_Allocator_By_Expression => 1432, + Iir_Kind_Allocator_By_Subtype => 1437, + Iir_Kind_Selected_Element => 1445, + Iir_Kind_Dereference => 1450, + Iir_Kind_Implicit_Dereference => 1455, + Iir_Kind_Slice_Name => 1462, + Iir_Kind_Indexed_Name => 1468, + Iir_Kind_Psl_Prev => 1474, + Iir_Kind_Psl_Stable => 1479, + Iir_Kind_Psl_Rose => 1484, + Iir_Kind_Psl_Fell => 1489, + Iir_Kind_Psl_Expression => 1491, + Iir_Kind_Sensitized_Process_Statement => 1512, + Iir_Kind_Process_Statement => 1532, + Iir_Kind_Concurrent_Simple_Signal_Assignment => 1545, + Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1558, + Iir_Kind_Concurrent_Selected_Signal_Assignment => 1572, + Iir_Kind_Concurrent_Assertion_Statement => 1580, + Iir_Kind_Concurrent_Procedure_Call_Statement => 1587, + Iir_Kind_Concurrent_Break_Statement => 1595, + Iir_Kind_Psl_Assert_Directive => 1608, + Iir_Kind_Psl_Assume_Directive => 1619, + Iir_Kind_Psl_Cover_Directive => 1631, + Iir_Kind_Psl_Restrict_Directive => 1642, + Iir_Kind_Block_Statement => 1656, + Iir_Kind_If_Generate_Statement => 1667, + Iir_Kind_Case_Generate_Statement => 1676, + Iir_Kind_For_Generate_Statement => 1685, + Iir_Kind_Component_Instantiation_Statement => 1696, + Iir_Kind_Psl_Default_Clock => 1700, + Iir_Kind_Generate_Statement_Body => 1711, + Iir_Kind_If_Generate_Else_Clause => 1717, + Iir_Kind_Simple_Simultaneous_Statement => 1724, + Iir_Kind_Simultaneous_Null_Statement => 1728, + Iir_Kind_Simultaneous_Procedural_Statement => 1739, + Iir_Kind_Simultaneous_Case_Statement => 1748, + Iir_Kind_Simultaneous_If_Statement => 1757, + Iir_Kind_Simultaneous_Elsif => 1763, + Iir_Kind_Simple_Signal_Assignment_Statement => 1774, + Iir_Kind_Conditional_Signal_Assignment_Statement => 1785, + Iir_Kind_Selected_Waveform_Assignment_Statement => 1797, + Iir_Kind_Null_Statement => 1801, + Iir_Kind_Assertion_Statement => 1808, + Iir_Kind_Report_Statement => 1814, + Iir_Kind_Wait_Statement => 1822, + Iir_Kind_Variable_Assignment_Statement => 1829, + Iir_Kind_Conditional_Variable_Assignment_Statement => 1836, + Iir_Kind_Return_Statement => 1842, + Iir_Kind_For_Loop_Statement => 1853, + Iir_Kind_While_Loop_Statement => 1864, + Iir_Kind_Next_Statement => 1871, + Iir_Kind_Exit_Statement => 1878, + Iir_Kind_Case_Statement => 1886, + Iir_Kind_Procedure_Call_Statement => 1892, + Iir_Kind_Break_Statement => 1899, + Iir_Kind_If_Statement => 1909, + Iir_Kind_Elsif => 1915, + Iir_Kind_Character_Literal => 1923, + Iir_Kind_Simple_Name => 1931, + Iir_Kind_Selected_Name => 1940, + Iir_Kind_Operator_Symbol => 1946, + Iir_Kind_Reference_Name => 1951, + Iir_Kind_External_Constant_Name => 1959, + Iir_Kind_External_Signal_Name => 1967, + Iir_Kind_External_Variable_Name => 1976, + Iir_Kind_Selected_By_All_Name => 1982, + Iir_Kind_Parenthesis_Name => 1987, + Iir_Kind_Package_Pathname => 1991, + Iir_Kind_Absolute_Pathname => 1992, + Iir_Kind_Relative_Pathname => 1993, + Iir_Kind_Pathname_Element => 1998, + Iir_Kind_Base_Attribute => 2000, + Iir_Kind_Subtype_Attribute => 2005, + Iir_Kind_Element_Attribute => 2010, + Iir_Kind_Across_Attribute => 2015, + Iir_Kind_Through_Attribute => 2020, + Iir_Kind_Nature_Reference_Attribute => 2024, + Iir_Kind_Left_Type_Attribute => 2029, + Iir_Kind_Right_Type_Attribute => 2034, + Iir_Kind_High_Type_Attribute => 2039, + Iir_Kind_Low_Type_Attribute => 2044, + Iir_Kind_Ascending_Type_Attribute => 2049, + Iir_Kind_Image_Attribute => 2055, + Iir_Kind_Value_Attribute => 2061, + Iir_Kind_Pos_Attribute => 2067, + Iir_Kind_Val_Attribute => 2073, + Iir_Kind_Succ_Attribute => 2079, + Iir_Kind_Pred_Attribute => 2085, + Iir_Kind_Leftof_Attribute => 2091, + Iir_Kind_Rightof_Attribute => 2097, + Iir_Kind_Signal_Slew_Attribute => 2105, + Iir_Kind_Quantity_Slew_Attribute => 2113, + Iir_Kind_Ramp_Attribute => 2121, + Iir_Kind_Zoh_Attribute => 2129, + Iir_Kind_Ltf_Attribute => 2137, + Iir_Kind_Ztf_Attribute => 2147, + Iir_Kind_Dot_Attribute => 2154, + Iir_Kind_Integ_Attribute => 2161, + Iir_Kind_Above_Attribute => 2169, + Iir_Kind_Quantity_Delayed_Attribute => 2177, + Iir_Kind_Delayed_Attribute => 2186, + Iir_Kind_Stable_Attribute => 2195, + Iir_Kind_Quiet_Attribute => 2204, + Iir_Kind_Transaction_Attribute => 2213, + Iir_Kind_Event_Attribute => 2217, + Iir_Kind_Active_Attribute => 2221, + Iir_Kind_Last_Event_Attribute => 2225, + Iir_Kind_Last_Active_Attribute => 2229, + Iir_Kind_Last_Value_Attribute => 2233, + Iir_Kind_Driving_Attribute => 2237, + Iir_Kind_Driving_Value_Attribute => 2241, + Iir_Kind_Behavior_Attribute => 2241, + Iir_Kind_Structure_Attribute => 2241, + Iir_Kind_Simple_Name_Attribute => 2248, + Iir_Kind_Instance_Name_Attribute => 2253, + Iir_Kind_Path_Name_Attribute => 2258, + Iir_Kind_Left_Array_Attribute => 2265, + Iir_Kind_Right_Array_Attribute => 2272, + Iir_Kind_High_Array_Attribute => 2279, + Iir_Kind_Low_Array_Attribute => 2286, + Iir_Kind_Length_Array_Attribute => 2293, + Iir_Kind_Ascending_Array_Attribute => 2300, + Iir_Kind_Range_Array_Attribute => 2307, + Iir_Kind_Reverse_Range_Array_Attribute => 2314, + Iir_Kind_Attribute_Name => 2323 ); function Get_Fields_First (K : Iir_Kind) return Fields_Index is @@ -5960,6 +5968,8 @@ package body Vhdl.Nodes_Meta is return Get_Vunit_Item_Chain (N); when Field_Bound_Vunit_Chain => return Get_Bound_Vunit_Chain (N); + when Field_Verification_Block_Configuration => + return Get_Verification_Block_Configuration (N); when Field_Block_Configuration => return Get_Block_Configuration (N); when Field_Concurrent_Statement_Chain => @@ -6414,6 +6424,8 @@ package body Vhdl.Nodes_Meta is Set_Vunit_Item_Chain (N, V); when Field_Bound_Vunit_Chain => Set_Bound_Vunit_Chain (N, V); + when Field_Verification_Block_Configuration => + Set_Verification_Block_Configuration (N, V); when Field_Block_Configuration => Set_Block_Configuration (N, V); when Field_Concurrent_Statement_Chain => @@ -8215,6 +8227,19 @@ package body Vhdl.Nodes_Meta is end case; end Has_Bound_Vunit_Chain; + function Has_Verification_Block_Configuration (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_Verification_Block_Configuration; + function Has_Block_Configuration (K : Iir_Kind) return Boolean is begin case K is diff --git a/src/vhdl/vhdl-nodes_meta.ads b/src/vhdl/vhdl-nodes_meta.ads index 8fd5644cd..80fe7d136 100644 --- a/src/vhdl/vhdl-nodes_meta.ads +++ b/src/vhdl/vhdl-nodes_meta.ads @@ -148,6 +148,7 @@ package Vhdl.Nodes_Meta is Field_Inherit_Spec_Chain, Field_Vunit_Item_Chain, Field_Bound_Vunit_Chain, + Field_Verification_Block_Configuration, Field_Block_Configuration, Field_Concurrent_Statement_Chain, Field_Chain, @@ -718,6 +719,8 @@ package Vhdl.Nodes_Meta is 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) + return Boolean; function Has_Block_Configuration (K : Iir_Kind) return Boolean; function Has_Concurrent_Statement_Chain (K : Iir_Kind) return Boolean; function Has_Chain (K : Iir_Kind) return Boolean; |