aboutsummaryrefslogtreecommitdiffstats
path: root/src/vhdl/vhdl-nodes_meta.adb
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2019-12-31 08:22:30 +0100
committerTristan Gingold <tgingold@free.fr>2019-12-31 09:34:34 +0100
commit8a60406d94e89804a5a52afb95bdac4c3bdd7f40 (patch)
tree6ffa80d954978fd005542b46dc20296d8b63cfba /src/vhdl/vhdl-nodes_meta.adb
parent10b0ac263ed7c59c438c1cb82faef51370cbd67e (diff)
downloadghdl-8a60406d94e89804a5a52afb95bdac4c3bdd7f40.tar.gz
ghdl-8a60406d94e89804a5a52afb95bdac4c3bdd7f40.tar.bz2
ghdl-8a60406d94e89804a5a52afb95bdac4c3bdd7f40.zip
ams-vhdl: handle zoh, ltf and ztf attributes.
Diffstat (limited to 'src/vhdl/vhdl-nodes_meta.adb')
-rw-r--r--src/vhdl/vhdl-nodes_meta.adb148
1 files changed, 119 insertions, 29 deletions
diff --git a/src/vhdl/vhdl-nodes_meta.adb b/src/vhdl/vhdl-nodes_meta.adb
index ed955d05c..48029e8c9 100644
--- a/src/vhdl/vhdl-nodes_meta.adb
+++ b/src/vhdl/vhdl-nodes_meta.adb
@@ -305,6 +305,8 @@ package body Vhdl.Nodes_Meta is
Field_Index_Subtype => Type_Iir,
Field_Parameter => Type_Iir,
Field_Parameter_2 => Type_Iir,
+ Field_Parameter_3 => Type_Iir,
+ Field_Parameter_4 => Type_Iir,
Field_Attr_Chain => Type_Iir,
Field_Signal_Attribute_Declaration => Type_Iir,
Field_Actual_Type => Type_Iir,
@@ -957,6 +959,10 @@ package body Vhdl.Nodes_Meta is
return "parameter";
when Field_Parameter_2 =>
return "parameter_2";
+ when Field_Parameter_3 =>
+ return "parameter_3";
+ when Field_Parameter_4 =>
+ return "parameter_4";
when Field_Attr_Chain =>
return "attr_chain";
when Field_Signal_Attribute_Declaration =>
@@ -1653,6 +1659,12 @@ package body Vhdl.Nodes_Meta is
return "quantity_slew_attribute";
when Iir_Kind_Ramp_Attribute =>
return "ramp_attribute";
+ when Iir_Kind_Zoh_Attribute =>
+ return "zoh_attribute";
+ when Iir_Kind_Ltf_Attribute =>
+ return "ltf_attribute";
+ when Iir_Kind_Ztf_Attribute =>
+ return "ztf_attribute";
when Iir_Kind_Dot_Attribute =>
return "dot_attribute";
when Iir_Kind_Integ_Attribute =>
@@ -2287,6 +2299,10 @@ package body Vhdl.Nodes_Meta is
return Attr_None;
when Field_Parameter_2 =>
return Attr_None;
+ when Field_Parameter_3 =>
+ return Attr_None;
+ when Field_Parameter_4 =>
+ return Attr_None;
when Field_Attr_Chain =>
return Attr_Forward_Ref;
when Field_Signal_Attribute_Declaration =>
@@ -4798,6 +4814,35 @@ package body Vhdl.Nodes_Meta is
Field_Parameter,
Field_Parameter_2,
Field_Base_Name,
+ -- Iir_Kind_Zoh_Attribute
+ Field_Expr_Staticness,
+ Field_Name_Staticness,
+ Field_Prefix,
+ Field_Type,
+ Field_Attr_Chain,
+ Field_Parameter,
+ Field_Parameter_2,
+ Field_Base_Name,
+ -- Iir_Kind_Ltf_Attribute
+ Field_Expr_Staticness,
+ Field_Name_Staticness,
+ Field_Prefix,
+ Field_Type,
+ Field_Attr_Chain,
+ Field_Parameter,
+ Field_Parameter_2,
+ Field_Base_Name,
+ -- Iir_Kind_Ztf_Attribute
+ Field_Expr_Staticness,
+ Field_Name_Staticness,
+ Field_Prefix,
+ Field_Type,
+ Field_Attr_Chain,
+ Field_Parameter,
+ Field_Parameter_2,
+ Field_Parameter_3,
+ Field_Parameter_4,
+ Field_Base_Name,
-- Iir_Kind_Dot_Attribute
Field_Expr_Staticness,
Field_Name_Staticness,
@@ -5273,34 +5318,37 @@ package body Vhdl.Nodes_Meta is
Iir_Kind_Signal_Slew_Attribute => 2074,
Iir_Kind_Quantity_Slew_Attribute => 2082,
Iir_Kind_Ramp_Attribute => 2090,
- Iir_Kind_Dot_Attribute => 2097,
- Iir_Kind_Integ_Attribute => 2104,
- Iir_Kind_Above_Attribute => 2112,
- Iir_Kind_Delayed_Attribute => 2121,
- Iir_Kind_Stable_Attribute => 2130,
- Iir_Kind_Quiet_Attribute => 2139,
- Iir_Kind_Transaction_Attribute => 2148,
- Iir_Kind_Event_Attribute => 2152,
- Iir_Kind_Active_Attribute => 2156,
- Iir_Kind_Last_Event_Attribute => 2160,
- Iir_Kind_Last_Active_Attribute => 2164,
- Iir_Kind_Last_Value_Attribute => 2168,
- Iir_Kind_Driving_Attribute => 2172,
- Iir_Kind_Driving_Value_Attribute => 2176,
- Iir_Kind_Behavior_Attribute => 2176,
- Iir_Kind_Structure_Attribute => 2176,
- Iir_Kind_Simple_Name_Attribute => 2183,
- Iir_Kind_Instance_Name_Attribute => 2188,
- Iir_Kind_Path_Name_Attribute => 2193,
- Iir_Kind_Left_Array_Attribute => 2200,
- Iir_Kind_Right_Array_Attribute => 2207,
- Iir_Kind_High_Array_Attribute => 2214,
- Iir_Kind_Low_Array_Attribute => 2221,
- Iir_Kind_Length_Array_Attribute => 2228,
- Iir_Kind_Ascending_Array_Attribute => 2235,
- Iir_Kind_Range_Array_Attribute => 2242,
- Iir_Kind_Reverse_Range_Array_Attribute => 2249,
- Iir_Kind_Attribute_Name => 2258
+ Iir_Kind_Zoh_Attribute => 2098,
+ Iir_Kind_Ltf_Attribute => 2106,
+ Iir_Kind_Ztf_Attribute => 2116,
+ Iir_Kind_Dot_Attribute => 2123,
+ Iir_Kind_Integ_Attribute => 2130,
+ Iir_Kind_Above_Attribute => 2138,
+ Iir_Kind_Delayed_Attribute => 2147,
+ Iir_Kind_Stable_Attribute => 2156,
+ Iir_Kind_Quiet_Attribute => 2165,
+ Iir_Kind_Transaction_Attribute => 2174,
+ Iir_Kind_Event_Attribute => 2178,
+ Iir_Kind_Active_Attribute => 2182,
+ Iir_Kind_Last_Event_Attribute => 2186,
+ Iir_Kind_Last_Active_Attribute => 2190,
+ Iir_Kind_Last_Value_Attribute => 2194,
+ Iir_Kind_Driving_Attribute => 2198,
+ Iir_Kind_Driving_Value_Attribute => 2202,
+ Iir_Kind_Behavior_Attribute => 2202,
+ Iir_Kind_Structure_Attribute => 2202,
+ Iir_Kind_Simple_Name_Attribute => 2209,
+ Iir_Kind_Instance_Name_Attribute => 2214,
+ Iir_Kind_Path_Name_Attribute => 2219,
+ Iir_Kind_Left_Array_Attribute => 2226,
+ Iir_Kind_Right_Array_Attribute => 2233,
+ Iir_Kind_High_Array_Attribute => 2240,
+ Iir_Kind_Low_Array_Attribute => 2247,
+ Iir_Kind_Length_Array_Attribute => 2254,
+ Iir_Kind_Ascending_Array_Attribute => 2261,
+ Iir_Kind_Range_Array_Attribute => 2268,
+ Iir_Kind_Reverse_Range_Array_Attribute => 2275,
+ Iir_Kind_Attribute_Name => 2284
);
function Get_Fields_First (K : Iir_Kind) return Fields_Index is
@@ -6089,6 +6137,10 @@ package body Vhdl.Nodes_Meta is
return Get_Parameter (N);
when Field_Parameter_2 =>
return Get_Parameter_2 (N);
+ when Field_Parameter_3 =>
+ return Get_Parameter_3 (N);
+ when Field_Parameter_4 =>
+ return Get_Parameter_4 (N);
when Field_Attr_Chain =>
return Get_Attr_Chain (N);
when Field_Signal_Attribute_Declaration =>
@@ -6533,6 +6585,10 @@ package body Vhdl.Nodes_Meta is
Set_Parameter (N, V);
when Field_Parameter_2 =>
Set_Parameter_2 (N, V);
+ when Field_Parameter_3 =>
+ Set_Parameter_3 (N, V);
+ when Field_Parameter_4 =>
+ Set_Parameter_4 (N, V);
when Field_Attr_Chain =>
Set_Attr_Chain (N, V);
when Field_Signal_Attribute_Declaration =>
@@ -8351,6 +8407,9 @@ package body Vhdl.Nodes_Meta is
| Iir_Kind_Signal_Slew_Attribute
| Iir_Kind_Quantity_Slew_Attribute
| Iir_Kind_Ramp_Attribute
+ | Iir_Kind_Zoh_Attribute
+ | Iir_Kind_Ltf_Attribute
+ | Iir_Kind_Ztf_Attribute
| Iir_Kind_Dot_Attribute
| Iir_Kind_Integ_Attribute
| Iir_Kind_Above_Attribute
@@ -8558,6 +8617,9 @@ package body Vhdl.Nodes_Meta is
| Iir_Kind_Signal_Slew_Attribute
| Iir_Kind_Quantity_Slew_Attribute
| Iir_Kind_Ramp_Attribute
+ | Iir_Kind_Zoh_Attribute
+ | Iir_Kind_Ltf_Attribute
+ | Iir_Kind_Ztf_Attribute
| Iir_Kind_Dot_Attribute
| Iir_Kind_Integ_Attribute
| Iir_Kind_Above_Attribute
@@ -10751,6 +10813,9 @@ package body Vhdl.Nodes_Meta is
| Iir_Kind_Signal_Slew_Attribute
| Iir_Kind_Quantity_Slew_Attribute
| Iir_Kind_Ramp_Attribute
+ | Iir_Kind_Zoh_Attribute
+ | Iir_Kind_Ltf_Attribute
+ | Iir_Kind_Ztf_Attribute
| Iir_Kind_Dot_Attribute
| Iir_Kind_Integ_Attribute
| Iir_Kind_Above_Attribute
@@ -10990,6 +11055,9 @@ package body Vhdl.Nodes_Meta is
| Iir_Kind_Signal_Slew_Attribute
| Iir_Kind_Quantity_Slew_Attribute
| Iir_Kind_Ramp_Attribute
+ | Iir_Kind_Zoh_Attribute
+ | Iir_Kind_Ltf_Attribute
+ | Iir_Kind_Ztf_Attribute
| Iir_Kind_Dot_Attribute
| Iir_Kind_Integ_Attribute
| Iir_Kind_Above_Attribute
@@ -11057,6 +11125,9 @@ package body Vhdl.Nodes_Meta is
| Iir_Kind_Signal_Slew_Attribute
| Iir_Kind_Quantity_Slew_Attribute
| Iir_Kind_Ramp_Attribute
+ | Iir_Kind_Zoh_Attribute
+ | Iir_Kind_Ltf_Attribute
+ | Iir_Kind_Ztf_Attribute
| Iir_Kind_Dot_Attribute
| Iir_Kind_Integ_Attribute
| Iir_Kind_Above_Attribute
@@ -11181,6 +11252,9 @@ package body Vhdl.Nodes_Meta is
| Iir_Kind_Signal_Slew_Attribute
| Iir_Kind_Quantity_Slew_Attribute
| Iir_Kind_Ramp_Attribute
+ | Iir_Kind_Zoh_Attribute
+ | Iir_Kind_Ltf_Attribute
+ | Iir_Kind_Ztf_Attribute
| Iir_Kind_Above_Attribute
| Iir_Kind_Delayed_Attribute
| Iir_Kind_Stable_Attribute
@@ -11205,19 +11279,35 @@ package body Vhdl.Nodes_Meta is
case K is
when Iir_Kind_Signal_Slew_Attribute
| Iir_Kind_Quantity_Slew_Attribute
- | Iir_Kind_Ramp_Attribute =>
+ | Iir_Kind_Ramp_Attribute
+ | Iir_Kind_Zoh_Attribute
+ | Iir_Kind_Ltf_Attribute
+ | Iir_Kind_Ztf_Attribute =>
return True;
when others =>
return False;
end case;
end Has_Parameter_2;
+ function Has_Parameter_3 (K : Iir_Kind) return Boolean is
+ begin
+ return K = Iir_Kind_Ztf_Attribute;
+ end Has_Parameter_3;
+
+ function Has_Parameter_4 (K : Iir_Kind) return Boolean is
+ begin
+ return K = Iir_Kind_Ztf_Attribute;
+ end Has_Parameter_4;
+
function Has_Attr_Chain (K : Iir_Kind) return Boolean is
begin
case K is
when Iir_Kind_Signal_Slew_Attribute
| Iir_Kind_Quantity_Slew_Attribute
| Iir_Kind_Ramp_Attribute
+ | Iir_Kind_Zoh_Attribute
+ | Iir_Kind_Ltf_Attribute
+ | Iir_Kind_Ztf_Attribute
| Iir_Kind_Dot_Attribute
| Iir_Kind_Integ_Attribute
| Iir_Kind_Above_Attribute