aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2019-05-28 06:36:57 +0200
committerTristan Gingold <tgingold@free.fr>2019-05-28 06:36:57 +0200
commitc24ef07771e91f11206f88d3c912941f942f4e4b (patch)
tree0e06e2872d12d830609a18368c86cf3e5ee5aac1 /src
parent67422d11f9c5f4d8c97c10daf1a5e0d58d2b2df8 (diff)
downloadghdl-c24ef07771e91f11206f88d3c912941f942f4e4b.tar.gz
ghdl-c24ef07771e91f11206f88d3c912941f942f4e4b.tar.bz2
ghdl-c24ef07771e91f11206f88d3c912941f942f4e4b.zip
vhdl: get rid of Get/Set_Physical_Unit.
Use integer_literal for evaluated physical literals.
Diffstat (limited to 'src')
-rw-r--r--src/vhdl/python/libghdl/thin/vhdl/nodes.py4
-rw-r--r--src/vhdl/python/libghdl/thin/vhdl/nodes_meta.py168
-rw-r--r--src/vhdl/vhdl-evaluation.adb31
-rw-r--r--src/vhdl/vhdl-nodes.adb20
-rw-r--r--src/vhdl/vhdl-nodes.ads13
-rw-r--r--src/vhdl/vhdl-nodes_meta.adb538
-rw-r--r--src/vhdl/vhdl-nodes_meta.ads2
-rw-r--r--src/vhdl/vhdl-sem_expr.adb1
-rw-r--r--src/vhdl/vhdl-sem_types.adb28
-rw-r--r--src/vhdl/vhdl-std_package.adb68
10 files changed, 402 insertions, 471 deletions
diff --git a/src/vhdl/python/libghdl/thin/vhdl/nodes.py b/src/vhdl/python/libghdl/thin/vhdl/nodes.py
index a42710e5e..07d440896 100644
--- a/src/vhdl/python/libghdl/thin/vhdl/nodes.py
+++ b/src/vhdl/python/libghdl/thin/vhdl/nodes.py
@@ -2035,10 +2035,6 @@ Get_Right = libghdl.vhdl__nodes__get_right
Set_Right = libghdl.vhdl__nodes__set_right
-Get_Physical_Unit = libghdl.vhdl__nodes__get_physical_unit
-
-Set_Physical_Unit = libghdl.vhdl__nodes__set_physical_unit
-
Get_Unit_Name = libghdl.vhdl__nodes__get_unit_name
Set_Unit_Name = libghdl.vhdl__nodes__set_unit_name
diff --git a/src/vhdl/python/libghdl/thin/vhdl/nodes_meta.py b/src/vhdl/python/libghdl/thin/vhdl/nodes_meta.py
index 58e795abd..523dc43de 100644
--- a/src/vhdl/python/libghdl/thin/vhdl/nodes_meta.py
+++ b/src/vhdl/python/libghdl/thin/vhdl/nodes_meta.py
@@ -305,89 +305,88 @@ class fields:
Operand = 241
Left = 242
Right = 243
- Physical_Unit = 244
- Unit_Name = 245
- Name = 246
- Group_Template_Name = 247
- Name_Staticness = 248
- Prefix = 249
- Signature_Prefix = 250
- External_Pathname = 251
- Pathname_Suffix = 252
- Pathname_Expression = 253
- In_Formal_Flag = 254
- Slice_Subtype = 255
- Suffix = 256
- Index_Subtype = 257
- Parameter = 258
- Attr_Chain = 259
- Signal_Attribute_Declaration = 260
- Actual_Type = 261
- Actual_Type_Definition = 262
- Association_Chain = 263
- Individual_Association_Chain = 264
- Subprogram_Association_Chain = 265
- Aggregate_Info = 266
- Sub_Aggregate_Info = 267
- Aggr_Dynamic_Flag = 268
- Aggr_Min_Length = 269
- Aggr_Low_Limit = 270
- Aggr_High_Limit = 271
- Aggr_Others_Flag = 272
- Aggr_Named_Flag = 273
- Aggregate_Expand_Flag = 274
- Association_Choices_Chain = 275
- Case_Statement_Alternative_Chain = 276
- Choice_Staticness = 277
- Procedure_Call = 278
- Implementation = 279
- Parameter_Association_Chain = 280
- Method_Object = 281
- Subtype_Type_Mark = 282
- Type_Conversion_Subtype = 283
- Type_Mark = 284
- File_Type_Mark = 285
- Return_Type_Mark = 286
- Has_Disconnect_Flag = 287
- Has_Active_Flag = 288
- Is_Within_Flag = 289
- Type_Marks_List = 290
- Implicit_Alias_Flag = 291
- Alias_Signature = 292
- Attribute_Signature = 293
- Overload_List = 294
- Simple_Name_Identifier = 295
- Simple_Name_Subtype = 296
- Protected_Type_Body = 297
- Protected_Type_Declaration = 298
- Use_Flag = 299
- End_Has_Reserved_Id = 300
- End_Has_Identifier = 301
- End_Has_Postponed = 302
- Has_Label = 303
- Has_Begin = 304
- Has_End = 305
- Has_Is = 306
- Has_Pure = 307
- Has_Body = 308
- Has_Parameter = 309
- Has_Component = 310
- Has_Identifier_List = 311
- Has_Mode = 312
- Has_Class = 313
- Suspend_Flag = 314
- Is_Ref = 315
- Is_Forward_Ref = 316
- Psl_Property = 317
- Psl_Sequence = 318
- Psl_Declaration = 319
- Psl_Expression = 320
- Psl_Boolean = 321
- PSL_Clock = 322
- PSL_NFA = 323
- PSL_Nbr_States = 324
- PSL_Clock_Sensitivity = 325
- PSL_EOS_Flag = 326
+ Unit_Name = 244
+ Name = 245
+ Group_Template_Name = 246
+ Name_Staticness = 247
+ Prefix = 248
+ Signature_Prefix = 249
+ External_Pathname = 250
+ Pathname_Suffix = 251
+ Pathname_Expression = 252
+ In_Formal_Flag = 253
+ Slice_Subtype = 254
+ Suffix = 255
+ Index_Subtype = 256
+ Parameter = 257
+ Attr_Chain = 258
+ Signal_Attribute_Declaration = 259
+ Actual_Type = 260
+ Actual_Type_Definition = 261
+ Association_Chain = 262
+ Individual_Association_Chain = 263
+ Subprogram_Association_Chain = 264
+ Aggregate_Info = 265
+ Sub_Aggregate_Info = 266
+ Aggr_Dynamic_Flag = 267
+ Aggr_Min_Length = 268
+ Aggr_Low_Limit = 269
+ Aggr_High_Limit = 270
+ Aggr_Others_Flag = 271
+ Aggr_Named_Flag = 272
+ Aggregate_Expand_Flag = 273
+ Association_Choices_Chain = 274
+ Case_Statement_Alternative_Chain = 275
+ Choice_Staticness = 276
+ Procedure_Call = 277
+ Implementation = 278
+ Parameter_Association_Chain = 279
+ Method_Object = 280
+ Subtype_Type_Mark = 281
+ Type_Conversion_Subtype = 282
+ Type_Mark = 283
+ File_Type_Mark = 284
+ Return_Type_Mark = 285
+ Has_Disconnect_Flag = 286
+ Has_Active_Flag = 287
+ Is_Within_Flag = 288
+ Type_Marks_List = 289
+ Implicit_Alias_Flag = 290
+ Alias_Signature = 291
+ Attribute_Signature = 292
+ Overload_List = 293
+ Simple_Name_Identifier = 294
+ Simple_Name_Subtype = 295
+ Protected_Type_Body = 296
+ Protected_Type_Declaration = 297
+ Use_Flag = 298
+ End_Has_Reserved_Id = 299
+ End_Has_Identifier = 300
+ End_Has_Postponed = 301
+ Has_Label = 302
+ Has_Begin = 303
+ Has_End = 304
+ Has_Is = 305
+ Has_Pure = 306
+ Has_Body = 307
+ Has_Parameter = 308
+ Has_Component = 309
+ Has_Identifier_List = 310
+ Has_Mode = 311
+ Has_Class = 312
+ Suspend_Flag = 313
+ Is_Ref = 314
+ Is_Forward_Ref = 315
+ Psl_Property = 316
+ Psl_Sequence = 317
+ Psl_Declaration = 318
+ Psl_Expression = 319
+ Psl_Boolean = 320
+ PSL_Clock = 321
+ PSL_NFA = 322
+ PSL_Nbr_States = 323
+ PSL_Clock_Sensitivity = 324
+ PSL_EOS_Flag = 325
Get_Boolean = libghdl.vhdl__nodes_meta__get_boolean
@@ -1185,9 +1184,6 @@ Has_Left =\
Has_Right =\
libghdl.vhdl__nodes_meta__has_right
-Has_Physical_Unit =\
- libghdl.vhdl__nodes_meta__has_physical_unit
-
Has_Unit_Name =\
libghdl.vhdl__nodes_meta__has_unit_name
diff --git a/src/vhdl/vhdl-evaluation.adb b/src/vhdl/vhdl-evaluation.adb
index 71ee3b0d7..52b489816 100644
--- a/src/vhdl/vhdl-evaluation.adb
+++ b/src/vhdl/vhdl-evaluation.adb
@@ -48,9 +48,9 @@ package body Vhdl.Evaluation is
when Iir_Kind_Physical_Int_Literal
| Iir_Kind_Physical_Fp_Literal =>
-- Extract Unit.
- Unit := Get_Physical_Literal (Get_Physical_Unit (Expr));
- pragma Assert (Get_Physical_Unit (Unit)
- = Get_Primary_Unit (Get_Type (Unit)));
+ Unit := Get_Physical_Literal
+ (Get_Named_Entity (Get_Unit_Name (Expr)));
+ pragma Assert (Get_Kind (Unit) = Iir_Kind_Integer_Literal);
case Kind is
when Iir_Kind_Physical_Int_Literal =>
return Get_Value (Expr) * Get_Value (Unit);
@@ -59,6 +59,8 @@ package body Vhdl.Evaluation is
when others =>
raise Program_Error;
end case;
+ when Iir_Kind_Integer_Literal =>
+ return Get_Value (Expr);
when Iir_Kind_Unit_Declaration =>
return Get_Value (Get_Physical_Literal (Expr));
when others =>
@@ -81,7 +83,7 @@ package body Vhdl.Evaluation is
end Build_Integer;
function Build_Floating (Val : Fp64; Origin : Iir)
- return Iir_Floating_Point_Literal
+ return Iir_Floating_Point_Literal
is
Res : Iir_Floating_Point_Literal;
begin
@@ -111,15 +113,12 @@ package body Vhdl.Evaluation is
end Build_Enumeration_Constant;
function Build_Physical (Val : Int64; Origin : Iir)
- return Iir_Physical_Int_Literal
+ return Iir_Integer_Literal
is
- Res : Iir_Physical_Int_Literal;
- Unit_Name : Iir;
+ Res : Iir_Integer_Literal;
begin
- Res := Create_Iir (Iir_Kind_Physical_Int_Literal);
+ Res := Create_Iir (Iir_Kind_Integer_Literal);
Location_Copy (Res, Origin);
- Unit_Name := Get_Primary_Unit (Get_Base_Type (Get_Type (Origin)));
- Set_Physical_Unit (Res, Unit_Name);
Set_Value (Res, Val);
Set_Type (Res, Get_Type (Origin));
Set_Literal_Origin (Res, Origin);
@@ -214,16 +213,10 @@ package body Vhdl.Evaluation is
(Iir_Index32 (Get_Enum_Pos (Val)), Origin);
when Iir_Kind_Physical_Int_Literal
- | Iir_Kind_Physical_Fp_Literal =>
- Res := Create_Iir (Iir_Kind_Physical_Int_Literal);
- Set_Physical_Unit (Res, Get_Primary_Unit
- (Get_Base_Type (Get_Type (Origin))));
- Set_Value (Res, Get_Physical_Value (Val));
-
- when Iir_Kind_Unit_Declaration =>
- Res := Create_Iir (Iir_Kind_Physical_Int_Literal);
+ | Iir_Kind_Physical_Fp_Literal
+ | Iir_Kind_Unit_Declaration =>
+ Res := Create_Iir (Iir_Kind_Integer_Literal);
Set_Value (Res, Get_Physical_Value (Val));
- Set_Physical_Unit (Res, Get_Primary_Unit (Get_Type (Val)));
when Iir_Kind_String_Literal8 =>
Res := Create_Iir (Iir_Kind_String_Literal8);
diff --git a/src/vhdl/vhdl-nodes.adb b/src/vhdl/vhdl-nodes.adb
index 7a532c113..40048a84f 100644
--- a/src/vhdl/vhdl-nodes.adb
+++ b/src/vhdl/vhdl-nodes.adb
@@ -5253,28 +5253,12 @@ package body Vhdl.Nodes is
Set_Field4 (Target, An_Iir);
end Set_Right;
- function Get_Physical_Unit (Lit : Iir) return Iir is
- begin
- pragma Assert (Lit /= Null_Iir);
- pragma Assert (Has_Physical_Unit (Get_Kind (Lit)),
- "no field Physical_Unit");
- return Get_Field3 (Lit);
- end Get_Physical_Unit;
-
- procedure Set_Physical_Unit (Lit : Iir; Name : Iir) is
- begin
- pragma Assert (Lit /= Null_Iir);
- pragma Assert (Has_Physical_Unit (Get_Kind (Lit)),
- "no field Physical_Unit");
- Set_Field3 (Lit, Name);
- end Set_Physical_Unit;
-
function Get_Unit_Name (Target : Iir) return Iir is
begin
pragma Assert (Target /= Null_Iir);
pragma Assert (Has_Unit_Name (Get_Kind (Target)),
"no field Unit_Name");
- return Get_Field0 (Target);
+ return Get_Field3 (Target);
end Get_Unit_Name;
procedure Set_Unit_Name (Target : Iir; Name : Iir) is
@@ -5282,7 +5266,7 @@ package body Vhdl.Nodes is
pragma Assert (Target /= Null_Iir);
pragma Assert (Has_Unit_Name (Get_Kind (Target)),
"no field Unit_Name");
- Set_Field0 (Target, Name);
+ Set_Field3 (Target, Name);
end Set_Unit_Name;
function Get_Name (Target : Iir) return Iir is
diff --git a/src/vhdl/vhdl-nodes.ads b/src/vhdl/vhdl-nodes.ads
index 57e9e3fdc..8e20bf830 100644
--- a/src/vhdl/vhdl-nodes.ads
+++ b/src/vhdl/vhdl-nodes.ads
@@ -366,11 +366,8 @@ package Vhdl.Nodes is
--
-- Get/Set_Literal_Origin (Field2)
--
- -- The physical unit of the literal.
- -- Get/Set_Physical_Unit (Field3)
- --
- -- The name of the physical unit (if any).
- -- Get/Set_Unit_Name (Field0)
+ -- The name of the physical unit.
+ -- Get/Set_Unit_Name (Field3)
--
-- Get/Set_Type (Field1)
--
@@ -7149,11 +7146,7 @@ package Vhdl.Nodes is
function Get_Right (Target : Iir) return Iir;
procedure Set_Right (Target : Iir; An_Iir : Iir);
- -- Field: Field3 Ref
- function Get_Physical_Unit (Lit : Iir) return Iir;
- procedure Set_Physical_Unit (Lit : Iir; Name : Iir);
-
- -- Field: Field0
+ -- Field: Field3
function Get_Unit_Name (Target : Iir) return Iir;
procedure Set_Unit_Name (Target : Iir; Name : Iir);
diff --git a/src/vhdl/vhdl-nodes_meta.adb b/src/vhdl/vhdl-nodes_meta.adb
index 5b8375ddc..be9ab31d8 100644
--- a/src/vhdl/vhdl-nodes_meta.adb
+++ b/src/vhdl/vhdl-nodes_meta.adb
@@ -263,7 +263,6 @@ package body Vhdl.Nodes_Meta is
Field_Operand => Type_Iir,
Field_Left => Type_Iir,
Field_Right => Type_Iir,
- Field_Physical_Unit => Type_Iir,
Field_Unit_Name => Type_Iir,
Field_Name => Type_Iir,
Field_Group_Template_Name => Type_Iir,
@@ -844,8 +843,6 @@ package body Vhdl.Nodes_Meta is
return "left";
when Field_Right =>
return "right";
- when Field_Physical_Unit =>
- return "physical_unit";
when Field_Unit_Name =>
return "unit_name";
when Field_Name =>
@@ -2048,8 +2045,6 @@ package body Vhdl.Nodes_Meta is
return Attr_None;
when Field_Right =>
return Attr_None;
- when Field_Physical_Unit =>
- return Attr_Ref;
when Field_Unit_Name =>
return Attr_None;
when Field_Name =>
@@ -2302,14 +2297,12 @@ package body Vhdl.Nodes_Meta is
Field_Value,
Field_Expr_Staticness,
Field_Literal_Origin,
- Field_Physical_Unit,
Field_Unit_Name,
Field_Type,
-- Iir_Kind_Physical_Fp_Literal
Field_Fp_Value,
Field_Expr_Staticness,
Field_Literal_Origin,
- Field_Physical_Unit,
Field_Unit_Name,
Field_Type,
-- Iir_Kind_Simple_Aggregate
@@ -4436,264 +4429,264 @@ package body Vhdl.Nodes_Meta is
Iir_Kind_Floating_Point_Literal => 55,
Iir_Kind_Null_Literal => 57,
Iir_Kind_String_Literal8 => 67,
- Iir_Kind_Physical_Int_Literal => 73,
- Iir_Kind_Physical_Fp_Literal => 79,
- Iir_Kind_Simple_Aggregate => 84,
- Iir_Kind_Overflow_Literal => 87,
- Iir_Kind_Unaffected_Waveform => 88,
- Iir_Kind_Waveform_Element => 91,
- Iir_Kind_Conditional_Waveform => 95,
- Iir_Kind_Conditional_Expression => 99,
- Iir_Kind_Association_Element_By_Expression => 107,
- Iir_Kind_Association_Element_By_Individual => 116,
- Iir_Kind_Association_Element_Open => 122,
- Iir_Kind_Association_Element_Package => 128,
- Iir_Kind_Association_Element_Type => 136,
- Iir_Kind_Association_Element_Subprogram => 142,
- Iir_Kind_Choice_By_Range => 151,
- Iir_Kind_Choice_By_Expression => 160,
- Iir_Kind_Choice_By_Others => 167,
- Iir_Kind_Choice_By_None => 174,
- Iir_Kind_Choice_By_Name => 182,
- Iir_Kind_Entity_Aspect_Entity => 184,
- Iir_Kind_Entity_Aspect_Configuration => 185,
- Iir_Kind_Entity_Aspect_Open => 185,
- Iir_Kind_Block_Configuration => 191,
- Iir_Kind_Block_Header => 195,
- Iir_Kind_Component_Configuration => 202,
- Iir_Kind_Binding_Indication => 206,
- Iir_Kind_Entity_Class => 208,
- Iir_Kind_Attribute_Value => 216,
- Iir_Kind_Signature => 219,
- Iir_Kind_Aggregate_Info => 226,
- Iir_Kind_Procedure_Call => 230,
- Iir_Kind_Record_Element_Constraint => 236,
- Iir_Kind_Array_Element_Resolution => 238,
- Iir_Kind_Record_Resolution => 239,
- Iir_Kind_Record_Element_Resolution => 242,
- Iir_Kind_Attribute_Specification => 250,
- Iir_Kind_Disconnection_Specification => 256,
- Iir_Kind_Configuration_Specification => 262,
- Iir_Kind_Access_Type_Definition => 270,
- Iir_Kind_Incomplete_Type_Definition => 278,
- Iir_Kind_Interface_Type_Definition => 285,
- Iir_Kind_File_Type_Definition => 292,
- Iir_Kind_Protected_Type_Declaration => 301,
- Iir_Kind_Record_Type_Definition => 312,
- Iir_Kind_Array_Type_Definition => 324,
- Iir_Kind_Array_Subtype_Definition => 339,
- Iir_Kind_Record_Subtype_Definition => 352,
- Iir_Kind_Access_Subtype_Definition => 360,
- Iir_Kind_Physical_Subtype_Definition => 370,
- Iir_Kind_Floating_Subtype_Definition => 381,
- Iir_Kind_Integer_Subtype_Definition => 391,
- Iir_Kind_Enumeration_Subtype_Definition => 401,
- Iir_Kind_Enumeration_Type_Definition => 412,
- Iir_Kind_Integer_Type_Definition => 420,
- Iir_Kind_Floating_Type_Definition => 428,
- Iir_Kind_Physical_Type_Definition => 439,
- Iir_Kind_Range_Expression => 447,
- Iir_Kind_Protected_Type_Body => 454,
- Iir_Kind_Wildcard_Type_Definition => 459,
- Iir_Kind_Subtype_Definition => 466,
- Iir_Kind_Scalar_Nature_Definition => 470,
- Iir_Kind_Overload_List => 471,
- Iir_Kind_Type_Declaration => 478,
- Iir_Kind_Anonymous_Type_Declaration => 484,
- Iir_Kind_Subtype_Declaration => 491,
- Iir_Kind_Nature_Declaration => 497,
- Iir_Kind_Subnature_Declaration => 503,
- Iir_Kind_Entity_Declaration => 515,
- Iir_Kind_Configuration_Declaration => 524,
- Iir_Kind_Context_Declaration => 530,
- Iir_Kind_Package_Declaration => 545,
- Iir_Kind_Package_Instantiation_Declaration => 559,
- Iir_Kind_Package_Body => 567,
- Iir_Kind_Architecture_Body => 579,
- Iir_Kind_Package_Header => 581,
- Iir_Kind_Unit_Declaration => 590,
- Iir_Kind_Library_Declaration => 597,
- Iir_Kind_Component_Declaration => 607,
- Iir_Kind_Attribute_Declaration => 614,
- Iir_Kind_Group_Template_Declaration => 620,
- Iir_Kind_Group_Declaration => 627,
- Iir_Kind_Element_Declaration => 634,
- Iir_Kind_Non_Object_Alias_Declaration => 642,
- Iir_Kind_Psl_Declaration => 650,
- Iir_Kind_Psl_Endpoint_Declaration => 664,
- Iir_Kind_Terminal_Declaration => 671,
- Iir_Kind_Free_Quantity_Declaration => 682,
- Iir_Kind_Across_Quantity_Declaration => 694,
- Iir_Kind_Through_Quantity_Declaration => 706,
- Iir_Kind_Enumeration_Literal => 717,
- Iir_Kind_Function_Declaration => 742,
- Iir_Kind_Procedure_Declaration => 766,
- Iir_Kind_Function_Body => 776,
- Iir_Kind_Procedure_Body => 787,
- Iir_Kind_Object_Alias_Declaration => 798,
- Iir_Kind_File_Declaration => 812,
- Iir_Kind_Guard_Signal_Declaration => 825,
- Iir_Kind_Signal_Declaration => 842,
- Iir_Kind_Variable_Declaration => 855,
- Iir_Kind_Constant_Declaration => 869,
- Iir_Kind_Iterator_Declaration => 880,
- Iir_Kind_Interface_Constant_Declaration => 896,
- Iir_Kind_Interface_Variable_Declaration => 912,
- Iir_Kind_Interface_Signal_Declaration => 933,
- Iir_Kind_Interface_File_Declaration => 949,
- Iir_Kind_Interface_Type_Declaration => 959,
- Iir_Kind_Interface_Package_Declaration => 971,
- Iir_Kind_Interface_Function_Declaration => 988,
- Iir_Kind_Interface_Procedure_Declaration => 1001,
- Iir_Kind_Signal_Attribute_Declaration => 1004,
- Iir_Kind_Identity_Operator => 1008,
- Iir_Kind_Negation_Operator => 1012,
- Iir_Kind_Absolute_Operator => 1016,
- Iir_Kind_Not_Operator => 1020,
- Iir_Kind_Implicit_Condition_Operator => 1024,
- Iir_Kind_Condition_Operator => 1028,
- Iir_Kind_Reduction_And_Operator => 1032,
- Iir_Kind_Reduction_Or_Operator => 1036,
- Iir_Kind_Reduction_Nand_Operator => 1040,
- Iir_Kind_Reduction_Nor_Operator => 1044,
- Iir_Kind_Reduction_Xor_Operator => 1048,
- Iir_Kind_Reduction_Xnor_Operator => 1052,
- Iir_Kind_And_Operator => 1057,
- Iir_Kind_Or_Operator => 1062,
- Iir_Kind_Nand_Operator => 1067,
- Iir_Kind_Nor_Operator => 1072,
- Iir_Kind_Xor_Operator => 1077,
- Iir_Kind_Xnor_Operator => 1082,
- Iir_Kind_Equality_Operator => 1087,
- Iir_Kind_Inequality_Operator => 1092,
- Iir_Kind_Less_Than_Operator => 1097,
- Iir_Kind_Less_Than_Or_Equal_Operator => 1102,
- Iir_Kind_Greater_Than_Operator => 1107,
- Iir_Kind_Greater_Than_Or_Equal_Operator => 1112,
- Iir_Kind_Match_Equality_Operator => 1117,
- Iir_Kind_Match_Inequality_Operator => 1122,
- Iir_Kind_Match_Less_Than_Operator => 1127,
- Iir_Kind_Match_Less_Than_Or_Equal_Operator => 1132,
- Iir_Kind_Match_Greater_Than_Operator => 1137,
- Iir_Kind_Match_Greater_Than_Or_Equal_Operator => 1142,
- Iir_Kind_Sll_Operator => 1147,
- Iir_Kind_Sla_Operator => 1152,
- Iir_Kind_Srl_Operator => 1157,
- Iir_Kind_Sra_Operator => 1162,
- Iir_Kind_Rol_Operator => 1167,
- Iir_Kind_Ror_Operator => 1172,
- Iir_Kind_Addition_Operator => 1177,
- Iir_Kind_Substraction_Operator => 1182,
- Iir_Kind_Concatenation_Operator => 1187,
- Iir_Kind_Multiplication_Operator => 1192,
- Iir_Kind_Division_Operator => 1197,
- Iir_Kind_Modulus_Operator => 1202,
- Iir_Kind_Remainder_Operator => 1207,
- Iir_Kind_Exponentiation_Operator => 1212,
- Iir_Kind_Function_Call => 1220,
- Iir_Kind_Aggregate => 1227,
- Iir_Kind_Parenthesis_Expression => 1230,
- Iir_Kind_Qualified_Expression => 1234,
- Iir_Kind_Type_Conversion => 1239,
- Iir_Kind_Allocator_By_Expression => 1243,
- Iir_Kind_Allocator_By_Subtype => 1248,
- Iir_Kind_Selected_Element => 1256,
- Iir_Kind_Dereference => 1261,
- Iir_Kind_Implicit_Dereference => 1266,
- Iir_Kind_Slice_Name => 1273,
- Iir_Kind_Indexed_Name => 1279,
- Iir_Kind_Psl_Expression => 1281,
- Iir_Kind_Sensitized_Process_Statement => 1302,
- Iir_Kind_Process_Statement => 1322,
- Iir_Kind_Concurrent_Simple_Signal_Assignment => 1334,
- Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1346,
- Iir_Kind_Concurrent_Selected_Signal_Assignment => 1359,
- Iir_Kind_Concurrent_Assertion_Statement => 1367,
- Iir_Kind_Concurrent_Procedure_Call_Statement => 1374,
- Iir_Kind_Psl_Assert_Statement => 1387,
- Iir_Kind_Psl_Cover_Statement => 1400,
- Iir_Kind_Block_Statement => 1414,
- Iir_Kind_If_Generate_Statement => 1425,
- Iir_Kind_Case_Generate_Statement => 1434,
- Iir_Kind_For_Generate_Statement => 1443,
- Iir_Kind_Component_Instantiation_Statement => 1454,
- Iir_Kind_Psl_Default_Clock => 1458,
- Iir_Kind_Simple_Simultaneous_Statement => 1465,
- Iir_Kind_Generate_Statement_Body => 1476,
- Iir_Kind_If_Generate_Else_Clause => 1482,
- Iir_Kind_Simple_Signal_Assignment_Statement => 1492,
- Iir_Kind_Conditional_Signal_Assignment_Statement => 1502,
- Iir_Kind_Selected_Waveform_Assignment_Statement => 1513,
- Iir_Kind_Null_Statement => 1517,
- Iir_Kind_Assertion_Statement => 1524,
- Iir_Kind_Report_Statement => 1530,
- Iir_Kind_Wait_Statement => 1538,
- Iir_Kind_Variable_Assignment_Statement => 1545,
- Iir_Kind_Conditional_Variable_Assignment_Statement => 1552,
- Iir_Kind_Return_Statement => 1558,
- Iir_Kind_For_Loop_Statement => 1567,
- Iir_Kind_While_Loop_Statement => 1576,
- Iir_Kind_Next_Statement => 1583,
- Iir_Kind_Exit_Statement => 1590,
- Iir_Kind_Case_Statement => 1598,
- Iir_Kind_Procedure_Call_Statement => 1604,
- Iir_Kind_If_Statement => 1614,
- Iir_Kind_Elsif => 1620,
- Iir_Kind_Character_Literal => 1628,
- Iir_Kind_Simple_Name => 1636,
- Iir_Kind_Selected_Name => 1645,
- Iir_Kind_Operator_Symbol => 1651,
- Iir_Kind_Reference_Name => 1654,
- Iir_Kind_External_Constant_Name => 1662,
- Iir_Kind_External_Signal_Name => 1670,
- Iir_Kind_External_Variable_Name => 1679,
- Iir_Kind_Selected_By_All_Name => 1685,
- Iir_Kind_Parenthesis_Name => 1690,
- Iir_Kind_Package_Pathname => 1694,
- Iir_Kind_Absolute_Pathname => 1695,
- Iir_Kind_Relative_Pathname => 1696,
- Iir_Kind_Pathname_Element => 1701,
- Iir_Kind_Base_Attribute => 1703,
- Iir_Kind_Subtype_Attribute => 1708,
- Iir_Kind_Element_Attribute => 1713,
- Iir_Kind_Left_Type_Attribute => 1718,
- Iir_Kind_Right_Type_Attribute => 1723,
- Iir_Kind_High_Type_Attribute => 1728,
- Iir_Kind_Low_Type_Attribute => 1733,
- Iir_Kind_Ascending_Type_Attribute => 1738,
- Iir_Kind_Image_Attribute => 1744,
- Iir_Kind_Value_Attribute => 1750,
- Iir_Kind_Pos_Attribute => 1756,
- Iir_Kind_Val_Attribute => 1762,
- Iir_Kind_Succ_Attribute => 1768,
- Iir_Kind_Pred_Attribute => 1774,
- Iir_Kind_Leftof_Attribute => 1780,
- Iir_Kind_Rightof_Attribute => 1786,
- Iir_Kind_Delayed_Attribute => 1795,
- Iir_Kind_Stable_Attribute => 1804,
- Iir_Kind_Quiet_Attribute => 1813,
- Iir_Kind_Transaction_Attribute => 1822,
- Iir_Kind_Event_Attribute => 1826,
- Iir_Kind_Active_Attribute => 1830,
- Iir_Kind_Last_Event_Attribute => 1834,
- Iir_Kind_Last_Active_Attribute => 1838,
- Iir_Kind_Last_Value_Attribute => 1842,
- Iir_Kind_Driving_Attribute => 1846,
- Iir_Kind_Driving_Value_Attribute => 1850,
- Iir_Kind_Behavior_Attribute => 1850,
- Iir_Kind_Structure_Attribute => 1850,
- Iir_Kind_Simple_Name_Attribute => 1857,
- Iir_Kind_Instance_Name_Attribute => 1862,
- Iir_Kind_Path_Name_Attribute => 1867,
- Iir_Kind_Left_Array_Attribute => 1874,
- Iir_Kind_Right_Array_Attribute => 1881,
- Iir_Kind_High_Array_Attribute => 1888,
- Iir_Kind_Low_Array_Attribute => 1895,
- Iir_Kind_Length_Array_Attribute => 1902,
- Iir_Kind_Ascending_Array_Attribute => 1909,
- Iir_Kind_Range_Array_Attribute => 1916,
- Iir_Kind_Reverse_Range_Array_Attribute => 1923,
- Iir_Kind_Attribute_Name => 1932
+ Iir_Kind_Physical_Int_Literal => 72,
+ Iir_Kind_Physical_Fp_Literal => 77,
+ Iir_Kind_Simple_Aggregate => 82,
+ Iir_Kind_Overflow_Literal => 85,
+ Iir_Kind_Unaffected_Waveform => 86,
+ Iir_Kind_Waveform_Element => 89,
+ Iir_Kind_Conditional_Waveform => 93,
+ Iir_Kind_Conditional_Expression => 97,
+ Iir_Kind_Association_Element_By_Expression => 105,
+ Iir_Kind_Association_Element_By_Individual => 114,
+ Iir_Kind_Association_Element_Open => 120,
+ Iir_Kind_Association_Element_Package => 126,
+ Iir_Kind_Association_Element_Type => 134,
+ Iir_Kind_Association_Element_Subprogram => 140,
+ Iir_Kind_Choice_By_Range => 149,
+ Iir_Kind_Choice_By_Expression => 158,
+ Iir_Kind_Choice_By_Others => 165,
+ Iir_Kind_Choice_By_None => 172,
+ Iir_Kind_Choice_By_Name => 180,
+ Iir_Kind_Entity_Aspect_Entity => 182,
+ Iir_Kind_Entity_Aspect_Configuration => 183,
+ Iir_Kind_Entity_Aspect_Open => 183,
+ Iir_Kind_Block_Configuration => 189,
+ Iir_Kind_Block_Header => 193,
+ Iir_Kind_Component_Configuration => 200,
+ Iir_Kind_Binding_Indication => 204,
+ Iir_Kind_Entity_Class => 206,
+ Iir_Kind_Attribute_Value => 214,
+ Iir_Kind_Signature => 217,
+ Iir_Kind_Aggregate_Info => 224,
+ Iir_Kind_Procedure_Call => 228,
+ Iir_Kind_Record_Element_Constraint => 234,
+ Iir_Kind_Array_Element_Resolution => 236,
+ Iir_Kind_Record_Resolution => 237,
+ Iir_Kind_Record_Element_Resolution => 240,
+ Iir_Kind_Attribute_Specification => 248,
+ Iir_Kind_Disconnection_Specification => 254,
+ Iir_Kind_Configuration_Specification => 260,
+ Iir_Kind_Access_Type_Definition => 268,
+ Iir_Kind_Incomplete_Type_Definition => 276,
+ Iir_Kind_Interface_Type_Definition => 283,
+ Iir_Kind_File_Type_Definition => 290,
+ Iir_Kind_Protected_Type_Declaration => 299,
+ Iir_Kind_Record_Type_Definition => 310,
+ Iir_Kind_Array_Type_Definition => 322,
+ Iir_Kind_Array_Subtype_Definition => 337,
+ Iir_Kind_Record_Subtype_Definition => 350,
+ Iir_Kind_Access_Subtype_Definition => 358,
+ Iir_Kind_Physical_Subtype_Definition => 368,
+ Iir_Kind_Floating_Subtype_Definition => 379,
+ Iir_Kind_Integer_Subtype_Definition => 389,
+ Iir_Kind_Enumeration_Subtype_Definition => 399,
+ Iir_Kind_Enumeration_Type_Definition => 410,
+ Iir_Kind_Integer_Type_Definition => 418,
+ Iir_Kind_Floating_Type_Definition => 426,
+ Iir_Kind_Physical_Type_Definition => 437,
+ Iir_Kind_Range_Expression => 445,
+ Iir_Kind_Protected_Type_Body => 452,
+ Iir_Kind_Wildcard_Type_Definition => 457,
+ Iir_Kind_Subtype_Definition => 464,
+ Iir_Kind_Scalar_Nature_Definition => 468,
+ Iir_Kind_Overload_List => 469,
+ Iir_Kind_Type_Declaration => 476,
+ Iir_Kind_Anonymous_Type_Declaration => 482,
+ Iir_Kind_Subtype_Declaration => 489,
+ Iir_Kind_Nature_Declaration => 495,
+ Iir_Kind_Subnature_Declaration => 501,
+ Iir_Kind_Entity_Declaration => 513,
+ Iir_Kind_Configuration_Declaration => 522,
+ Iir_Kind_Context_Declaration => 528,
+ Iir_Kind_Package_Declaration => 543,
+ Iir_Kind_Package_Instantiation_Declaration => 557,
+ Iir_Kind_Package_Body => 565,
+ Iir_Kind_Architecture_Body => 577,
+ Iir_Kind_Package_Header => 579,
+ Iir_Kind_Unit_Declaration => 588,
+ Iir_Kind_Library_Declaration => 595,
+ Iir_Kind_Component_Declaration => 605,
+ Iir_Kind_Attribute_Declaration => 612,
+ Iir_Kind_Group_Template_Declaration => 618,
+ Iir_Kind_Group_Declaration => 625,
+ Iir_Kind_Element_Declaration => 632,
+ Iir_Kind_Non_Object_Alias_Declaration => 640,
+ Iir_Kind_Psl_Declaration => 648,
+ Iir_Kind_Psl_Endpoint_Declaration => 662,
+ Iir_Kind_Terminal_Declaration => 669,
+ Iir_Kind_Free_Quantity_Declaration => 680,
+ Iir_Kind_Across_Quantity_Declaration => 692,
+ Iir_Kind_Through_Quantity_Declaration => 704,
+ Iir_Kind_Enumeration_Literal => 715,
+ Iir_Kind_Function_Declaration => 740,
+ Iir_Kind_Procedure_Declaration => 764,
+ Iir_Kind_Function_Body => 774,
+ Iir_Kind_Procedure_Body => 785,
+ Iir_Kind_Object_Alias_Declaration => 796,
+ Iir_Kind_File_Declaration => 810,
+ Iir_Kind_Guard_Signal_Declaration => 823,
+ Iir_Kind_Signal_Declaration => 840,
+ Iir_Kind_Variable_Declaration => 853,
+ Iir_Kind_Constant_Declaration => 867,
+ Iir_Kind_Iterator_Declaration => 878,
+ Iir_Kind_Interface_Constant_Declaration => 894,
+ Iir_Kind_Interface_Variable_Declaration => 910,
+ Iir_Kind_Interface_Signal_Declaration => 931,
+ Iir_Kind_Interface_File_Declaration => 947,
+ Iir_Kind_Interface_Type_Declaration => 957,
+ Iir_Kind_Interface_Package_Declaration => 969,
+ Iir_Kind_Interface_Function_Declaration => 986,
+ Iir_Kind_Interface_Procedure_Declaration => 999,
+ Iir_Kind_Signal_Attribute_Declaration => 1002,
+ Iir_Kind_Identity_Operator => 1006,
+ Iir_Kind_Negation_Operator => 1010,
+ Iir_Kind_Absolute_Operator => 1014,
+ Iir_Kind_Not_Operator => 1018,
+ Iir_Kind_Implicit_Condition_Operator => 1022,
+ Iir_Kind_Condition_Operator => 1026,
+ Iir_Kind_Reduction_And_Operator => 1030,
+ Iir_Kind_Reduction_Or_Operator => 1034,
+ Iir_Kind_Reduction_Nand_Operator => 1038,
+ Iir_Kind_Reduction_Nor_Operator => 1042,
+ Iir_Kind_Reduction_Xor_Operator => 1046,
+ Iir_Kind_Reduction_Xnor_Operator => 1050,
+ Iir_Kind_And_Operator => 1055,
+ Iir_Kind_Or_Operator => 1060,
+ Iir_Kind_Nand_Operator => 1065,
+ Iir_Kind_Nor_Operator => 1070,
+ Iir_Kind_Xor_Operator => 1075,
+ Iir_Kind_Xnor_Operator => 1080,
+ Iir_Kind_Equality_Operator => 1085,
+ Iir_Kind_Inequality_Operator => 1090,
+ Iir_Kind_Less_Than_Operator => 1095,
+ Iir_Kind_Less_Than_Or_Equal_Operator => 1100,
+ Iir_Kind_Greater_Than_Operator => 1105,
+ Iir_Kind_Greater_Than_Or_Equal_Operator => 1110,
+ Iir_Kind_Match_Equality_Operator => 1115,
+ Iir_Kind_Match_Inequality_Operator => 1120,
+ Iir_Kind_Match_Less_Than_Operator => 1125,
+ Iir_Kind_Match_Less_Than_Or_Equal_Operator => 1130,
+ Iir_Kind_Match_Greater_Than_Operator => 1135,
+ Iir_Kind_Match_Greater_Than_Or_Equal_Operator => 1140,
+ Iir_Kind_Sll_Operator => 1145,
+ Iir_Kind_Sla_Operator => 1150,
+ Iir_Kind_Srl_Operator => 1155,
+ Iir_Kind_Sra_Operator => 1160,
+ Iir_Kind_Rol_Operator => 1165,
+ Iir_Kind_Ror_Operator => 1170,
+ Iir_Kind_Addition_Operator => 1175,
+ Iir_Kind_Substraction_Operator => 1180,
+ Iir_Kind_Concatenation_Operator => 1185,
+ Iir_Kind_Multiplication_Operator => 1190,
+ Iir_Kind_Division_Operator => 1195,
+ Iir_Kind_Modulus_Operator => 1200,
+ Iir_Kind_Remainder_Operator => 1205,
+ Iir_Kind_Exponentiation_Operator => 1210,
+ Iir_Kind_Function_Call => 1218,
+ Iir_Kind_Aggregate => 1225,
+ Iir_Kind_Parenthesis_Expression => 1228,
+ Iir_Kind_Qualified_Expression => 1232,
+ Iir_Kind_Type_Conversion => 1237,
+ Iir_Kind_Allocator_By_Expression => 1241,
+ Iir_Kind_Allocator_By_Subtype => 1246,
+ Iir_Kind_Selected_Element => 1254,
+ Iir_Kind_Dereference => 1259,
+ Iir_Kind_Implicit_Dereference => 1264,
+ Iir_Kind_Slice_Name => 1271,
+ Iir_Kind_Indexed_Name => 1277,
+ Iir_Kind_Psl_Expression => 1279,
+ Iir_Kind_Sensitized_Process_Statement => 1300,
+ Iir_Kind_Process_Statement => 1320,
+ Iir_Kind_Concurrent_Simple_Signal_Assignment => 1332,
+ Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1344,
+ Iir_Kind_Concurrent_Selected_Signal_Assignment => 1357,
+ Iir_Kind_Concurrent_Assertion_Statement => 1365,
+ Iir_Kind_Concurrent_Procedure_Call_Statement => 1372,
+ Iir_Kind_Psl_Assert_Statement => 1385,
+ Iir_Kind_Psl_Cover_Statement => 1398,
+ Iir_Kind_Block_Statement => 1412,
+ Iir_Kind_If_Generate_Statement => 1423,
+ Iir_Kind_Case_Generate_Statement => 1432,
+ Iir_Kind_For_Generate_Statement => 1441,
+ Iir_Kind_Component_Instantiation_Statement => 1452,
+ Iir_Kind_Psl_Default_Clock => 1456,
+ Iir_Kind_Simple_Simultaneous_Statement => 1463,
+ Iir_Kind_Generate_Statement_Body => 1474,
+ Iir_Kind_If_Generate_Else_Clause => 1480,
+ Iir_Kind_Simple_Signal_Assignment_Statement => 1490,
+ Iir_Kind_Conditional_Signal_Assignment_Statement => 1500,
+ Iir_Kind_Selected_Waveform_Assignment_Statement => 1511,
+ Iir_Kind_Null_Statement => 1515,
+ Iir_Kind_Assertion_Statement => 1522,
+ Iir_Kind_Report_Statement => 1528,
+ Iir_Kind_Wait_Statement => 1536,
+ Iir_Kind_Variable_Assignment_Statement => 1543,
+ Iir_Kind_Conditional_Variable_Assignment_Statement => 1550,
+ Iir_Kind_Return_Statement => 1556,
+ Iir_Kind_For_Loop_Statement => 1565,
+ Iir_Kind_While_Loop_Statement => 1574,
+ Iir_Kind_Next_Statement => 1581,
+ Iir_Kind_Exit_Statement => 1588,
+ Iir_Kind_Case_Statement => 1596,
+ Iir_Kind_Procedure_Call_Statement => 1602,
+ Iir_Kind_If_Statement => 1612,
+ Iir_Kind_Elsif => 1618,
+ Iir_Kind_Character_Literal => 1626,
+ Iir_Kind_Simple_Name => 1634,
+ Iir_Kind_Selected_Name => 1643,
+ Iir_Kind_Operator_Symbol => 1649,
+ Iir_Kind_Reference_Name => 1652,
+ Iir_Kind_External_Constant_Name => 1660,
+ Iir_Kind_External_Signal_Name => 1668,
+ Iir_Kind_External_Variable_Name => 1677,
+ Iir_Kind_Selected_By_All_Name => 1683,
+ Iir_Kind_Parenthesis_Name => 1688,
+ Iir_Kind_Package_Pathname => 1692,
+ Iir_Kind_Absolute_Pathname => 1693,
+ Iir_Kind_Relative_Pathname => 1694,
+ Iir_Kind_Pathname_Element => 1699,
+ Iir_Kind_Base_Attribute => 1701,
+ Iir_Kind_Subtype_Attribute => 1706,
+ Iir_Kind_Element_Attribute => 1711,
+ Iir_Kind_Left_Type_Attribute => 1716,
+ Iir_Kind_Right_Type_Attribute => 1721,
+ Iir_Kind_High_Type_Attribute => 1726,
+ Iir_Kind_Low_Type_Attribute => 1731,
+ Iir_Kind_Ascending_Type_Attribute => 1736,
+ Iir_Kind_Image_Attribute => 1742,
+ Iir_Kind_Value_Attribute => 1748,
+ Iir_Kind_Pos_Attribute => 1754,
+ Iir_Kind_Val_Attribute => 1760,
+ Iir_Kind_Succ_Attribute => 1766,
+ Iir_Kind_Pred_Attribute => 1772,
+ Iir_Kind_Leftof_Attribute => 1778,
+ Iir_Kind_Rightof_Attribute => 1784,
+ Iir_Kind_Delayed_Attribute => 1793,
+ Iir_Kind_Stable_Attribute => 1802,
+ Iir_Kind_Quiet_Attribute => 1811,
+ Iir_Kind_Transaction_Attribute => 1820,
+ Iir_Kind_Event_Attribute => 1824,
+ Iir_Kind_Active_Attribute => 1828,
+ Iir_Kind_Last_Event_Attribute => 1832,
+ Iir_Kind_Last_Active_Attribute => 1836,
+ Iir_Kind_Last_Value_Attribute => 1840,
+ Iir_Kind_Driving_Attribute => 1844,
+ Iir_Kind_Driving_Value_Attribute => 1848,
+ Iir_Kind_Behavior_Attribute => 1848,
+ Iir_Kind_Structure_Attribute => 1848,
+ Iir_Kind_Simple_Name_Attribute => 1855,
+ Iir_Kind_Instance_Name_Attribute => 1860,
+ Iir_Kind_Path_Name_Attribute => 1865,
+ Iir_Kind_Left_Array_Attribute => 1872,
+ Iir_Kind_Right_Array_Attribute => 1879,
+ Iir_Kind_High_Array_Attribute => 1886,
+ Iir_Kind_Low_Array_Attribute => 1893,
+ Iir_Kind_Length_Array_Attribute => 1900,
+ Iir_Kind_Ascending_Array_Attribute => 1907,
+ Iir_Kind_Range_Array_Attribute => 1914,
+ Iir_Kind_Reverse_Range_Array_Attribute => 1921,
+ Iir_Kind_Attribute_Name => 1930
);
function Get_Fields_First (K : Iir_Kind) return Fields_Index is
@@ -5398,8 +5391,6 @@ package body Vhdl.Nodes_Meta is
return Get_Left (N);
when Field_Right =>
return Get_Right (N);
- when Field_Physical_Unit =>
- return Get_Physical_Unit (N);
when Field_Unit_Name =>
return Get_Unit_Name (N);
when Field_Name =>
@@ -5794,8 +5785,6 @@ package body Vhdl.Nodes_Meta is
Set_Left (N, V);
when Field_Right =>
Set_Right (N, V);
- when Field_Physical_Unit =>
- Set_Physical_Unit (N, V);
when Field_Unit_Name =>
Set_Unit_Name (N, V);
when Field_Name =>
@@ -9712,17 +9701,6 @@ package body Vhdl.Nodes_Meta is
end case;
end Has_Right;
- function Has_Physical_Unit (K : Iir_Kind) return Boolean is
- begin
- case K is
- when Iir_Kind_Physical_Int_Literal
- | Iir_Kind_Physical_Fp_Literal =>
- return True;
- when others =>
- return False;
- end case;
- end Has_Physical_Unit;
-
function Has_Unit_Name (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 ee64fc92d..55804ab15 100644
--- a/src/vhdl/vhdl-nodes_meta.ads
+++ b/src/vhdl/vhdl-nodes_meta.ads
@@ -305,7 +305,6 @@ package Vhdl.Nodes_Meta is
Field_Operand,
Field_Left,
Field_Right,
- Field_Physical_Unit,
Field_Unit_Name,
Field_Name,
Field_Group_Template_Name,
@@ -838,7 +837,6 @@ package Vhdl.Nodes_Meta is
function Has_Operand (K : Iir_Kind) return Boolean;
function Has_Left (K : Iir_Kind) return Boolean;
function Has_Right (K : Iir_Kind) return Boolean;
- function Has_Physical_Unit (K : Iir_Kind) return Boolean;
function Has_Unit_Name (K : Iir_Kind) return Boolean;
function Has_Name (K : Iir_Kind) return Boolean;
function Has_Group_Template_Name (K : Iir_Kind) return Boolean;
diff --git a/src/vhdl/vhdl-sem_expr.adb b/src/vhdl/vhdl-sem_expr.adb
index 1129abdb7..1c15236f1 100644
--- a/src/vhdl/vhdl-sem_expr.adb
+++ b/src/vhdl/vhdl-sem_expr.adb
@@ -3995,7 +3995,6 @@ package body Vhdl.Sem_Expr is
end if;
end if;
Set_Unit_Name (Res, Unit_Name);
- Set_Physical_Unit (Res, Get_Named_Entity (Unit_Name));
Unit_Type := Get_Type (Unit_Name);
Set_Type (Res, Unit_Type);
diff --git a/src/vhdl/vhdl-sem_types.adb b/src/vhdl/vhdl-sem_types.adb
index 88d410e76..312752088 100644
--- a/src/vhdl/vhdl-sem_types.adb
+++ b/src/vhdl/vhdl-sem_types.adb
@@ -322,9 +322,8 @@ package body Vhdl.Sem_Types is
is
Lit : Iir;
begin
- Lit := Create_Iir (Iir_Kind_Physical_Int_Literal);
+ Lit := Create_Iir (Iir_Kind_Integer_Literal);
Set_Value (Lit, Val);
- Set_Physical_Unit (Lit, Unit);
Set_Expr_Staticness (Lit, Locally);
Set_Type (Lit, Get_Type (Unit));
Location_Copy (Lit, Unit);
@@ -412,23 +411,6 @@ package body Vhdl.Sem_Types is
Xref_Decl (Unit);
declare
- -- Convert an integer literal to a physical literal.
- -- This is used to convert bounds.
- function Lit_To_Phys_Lit (Lim : Iir_Integer_Literal)
- return Iir_Physical_Int_Literal
- is
- Res : Iir_Physical_Int_Literal;
- begin
- Res := Create_Iir (Iir_Kind_Physical_Int_Literal);
- Location_Copy (Res, Lim);
- Set_Type (Res, Def);
- Set_Value (Res, Get_Value (Lim));
- Set_Physical_Unit (Res, Get_Primary_Unit (Def));
- Set_Expr_Staticness (Res, Locally);
- Set_Literal_Origin (Res, Lim);
- return Res;
- end Lit_To_Phys_Lit;
-
Phys_Range : Iir_Range_Expression;
Lit : Iir;
begin
@@ -437,12 +419,12 @@ package body Vhdl.Sem_Types is
Location_Copy (Phys_Range, Range_Expr1);
Set_Type (Phys_Range, Def);
Set_Direction (Phys_Range, Get_Direction (Range_Expr1));
- Lit := Lit_To_Phys_Lit (Get_Left_Limit (Range_Expr1));
- Set_Left_Limit (Phys_Range, Lit);
+ Lit := Get_Left_Limit (Range_Expr1);
Set_Left_Limit_Expr (Phys_Range, Lit);
- Lit := Lit_To_Phys_Lit (Get_Right_Limit (Range_Expr1));
- Set_Right_Limit (Phys_Range, Lit);
+ Set_Left_Limit (Phys_Range, Lit);
+ Lit := Get_Right_Limit (Range_Expr1);
Set_Right_Limit_Expr (Phys_Range, Lit);
+ Set_Right_Limit (Phys_Range, Lit);
Set_Expr_Staticness
(Phys_Range, Get_Expr_Staticness (Range_Expr1));
diff --git a/src/vhdl/vhdl-std_package.adb b/src/vhdl/vhdl-std_package.adb
index cb6e3809d..db6139622 100644
--- a/src/vhdl/vhdl-std_package.adb
+++ b/src/vhdl/vhdl-std_package.adb
@@ -792,30 +792,23 @@ package body Vhdl.Std_Package is
Time_Staticness : Iir_Staticness;
First_Unit, Last_Unit : Iir_Unit_Declaration;
- function Create_Std_Phys_Lit_Wo_Unit (Value : Int64; Unit : Iir)
+ function Create_Std_Phys_Lit (Value : Int64; Unit : Iir)
return Iir_Physical_Int_Literal
is
Lit: Iir_Physical_Int_Literal;
+ Unit_Name : Iir;
begin
Lit := Create_Std_Iir (Iir_Kind_Physical_Int_Literal);
Set_Value (Lit, Value);
pragma Assert (Get_Kind (Unit) = Iir_Kind_Unit_Declaration);
- Set_Physical_Unit (Lit, Unit);
- Set_Type (Lit, Time_Type_Definition);
- Set_Expr_Staticness (Lit, Time_Staticness);
- return Lit;
- end Create_Std_Phys_Lit_Wo_Unit;
- function Create_Std_Phys_Lit (Value : Int64; Unit : Iir)
- return Iir_Physical_Int_Literal
- is
- Lit: Iir_Physical_Int_Literal;
- Unit_Name : Iir;
- begin
- Lit := Create_Std_Phys_Lit_Wo_Unit (Value, Unit);
Unit_Name := Create_Std_Iir (Iir_Kind_Simple_Name);
Set_Identifier (Unit_Name, Get_Identifier (Unit));
+ Set_Named_Entity (Unit_Name, Unit);
Set_Unit_Name (Lit, Unit_Name);
+
+ Set_Type (Lit, Time_Type_Definition);
+ Set_Expr_Staticness (Lit, Time_Staticness);
return Lit;
end Create_Std_Phys_Lit;
@@ -826,15 +819,19 @@ package body Vhdl.Std_Package is
is
Lit, Lit1 : Iir_Physical_Int_Literal;
begin
+ -- The unit.
Unit := Create_Std_Decl (Iir_Kind_Unit_Declaration);
Set_Std_Identifier (Unit, Name);
Set_Type (Unit, Time_Type_Definition);
+ -- The physical literal.
Lit1 := Create_Std_Phys_Lit (Multiplier_Value, Multiplier);
- Lit := Create_Std_Phys_Lit
- (Multiplier_Value
- * Get_Value (Get_Physical_Literal (Multiplier)),
- Get_Physical_Unit (Get_Physical_Literal (Multiplier)));
+
+ -- The computed value of the physical literal.
+ Lit := Create_Std_Iir (Iir_Kind_Integer_Literal);
+ Set_Value (Lit,
+ Multiplier_Value
+ * Get_Value (Get_Physical_Literal (Multiplier)));
Set_Literal_Origin (Lit, Lit1);
Set_Physical_Literal (Unit, Lit);
@@ -867,8 +864,14 @@ package body Vhdl.Std_Package is
Set_Type (Time_Fs_Unit, Time_Type_Definition);
Set_Expr_Staticness (Time_Fs_Unit, Time_Staticness);
Set_Name_Staticness (Time_Fs_Unit, Locally);
- Set_Physical_Literal
- (Time_Fs_Unit, Create_Std_Phys_Lit (1, Time_Fs_Unit));
+ declare
+ Lit : Iir;
+ begin
+ Lit := Create_Std_Iir (Iir_Kind_Integer_Literal);
+ Set_Value (Lit, 1);
+ Set_Physical_Literal (Time_Fs_Unit, Lit);
+ Set_Literal_Origin (Lit, Create_Std_Phys_Lit (1, Time_Fs_Unit));
+ end;
Chain_Append (First_Unit, Last_Unit, Time_Fs_Unit);
Create_Unit (Time_Ps_Unit, 1000, Time_Fs_Unit, Name_Ps);
@@ -893,10 +896,10 @@ package body Vhdl.Std_Package is
Time_Subtype_Definition :=
Create_Std_Iir (Iir_Kind_Physical_Subtype_Definition);
Constraint := Create_Std_Range_Expr
- (Create_Std_Phys_Lit_Wo_Unit (Low_Bound (Flags.Flag_Time_64),
- Time_Fs_Unit),
- Create_Std_Phys_Lit_Wo_Unit (High_Bound (Flags.Flag_Time_64),
- Time_Fs_Unit),
+ (Create_Std_Phys_Lit (Low_Bound (Flags.Flag_Time_64),
+ Time_Fs_Unit),
+ Create_Std_Phys_Lit (High_Bound (Flags.Flag_Time_64),
+ Time_Fs_Unit),
Time_Type_Definition);
Set_Range_Constraint (Time_Subtype_Definition, Constraint);
Set_Base_Type (Time_Subtype_Definition, Time_Type_Definition);
@@ -1273,6 +1276,14 @@ package body Vhdl.Std_Package is
procedure Set_Time_Resolution (Resolution : Character)
is
+ procedure Change_Unit (Lit : Iir; Unit : Iir)
+ is
+ Name : constant Iir := Get_Unit_Name (Lit);
+ begin
+ Set_Identifier (Name, Get_Identifier (Unit));
+ Set_Named_Entity (Name, Unit);
+ end Change_Unit;
+
Unit : Iir;
Prim : Iir;
Rng : Iir;
@@ -1300,14 +1311,14 @@ package body Vhdl.Std_Package is
-- Adjust range of TIME subtype.
Rng := Get_Range_Constraint (Time_Subtype_Definition);
- Set_Physical_Unit (Get_Left_Limit (Rng), Prim);
- Set_Physical_Unit (Get_Right_Limit (Rng), Prim);
+ Change_Unit (Get_Left_Limit (Rng), Prim);
+ Change_Unit (Get_Right_Limit (Rng), Prim);
-- Adjust range of DELAY_LENGTH.
if Vhdl_Std >= Vhdl_93c then
Rng := Get_Range_Constraint (Delay_Length_Subtype_Definition);
- Set_Physical_Unit (Get_Left_Limit (Rng), Prim);
- Set_Physical_Unit (Get_Right_Limit (Rng), Prim);
+ Change_Unit (Get_Left_Limit (Rng), Prim);
+ Change_Unit (Get_Right_Limit (Rng), Prim);
end if;
Unit := Get_Unit_Chain (Time_Type_Definition);
@@ -1319,7 +1330,8 @@ package body Vhdl.Std_Package is
begin
if Prim = Null_Iir then
-- Primary already set, just recompute values.
- Lit_Unit := Get_Physical_Literal (Get_Physical_Unit (Orig));
+ Lit_Unit := Get_Physical_Literal
+ (Get_Named_Entity (Get_Unit_Name (Orig)));
Set_Value (Lit, Get_Value (Orig) * Get_Value (Lit_Unit));
elsif Unit = Prim then
Set_Value (Lit, 1);