aboutsummaryrefslogtreecommitdiffstats
path: root/src/vhdl
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2020-03-22 08:41:16 +0100
committerTristan Gingold <tgingold@free.fr>2020-03-22 08:41:16 +0100
commit600d8fad841f92c600c01d18569e9e4c6f843d21 (patch)
tree68f5f55f68ba0493fb1495b10bb6f357bcd7be98 /src/vhdl
parent8a35846d7e91f26d22cb059cfbf21d9e5645314d (diff)
downloadghdl-600d8fad841f92c600c01d18569e9e4c6f843d21.tar.gz
ghdl-600d8fad841f92c600c01d18569e9e4c6f843d21.tar.bz2
ghdl-600d8fad841f92c600c01d18569e9e4c6f843d21.zip
synth: handle ieee.numeric_std.to_01
Diffstat (limited to 'src/vhdl')
-rw-r--r--src/vhdl/vhdl-ieee-numeric.adb25
-rw-r--r--src/vhdl/vhdl-nodes.ads3
2 files changed, 28 insertions, 0 deletions
diff --git a/src/vhdl/vhdl-ieee-numeric.adb b/src/vhdl/vhdl-ieee-numeric.adb
index 8f94b8fde..7be77ac8f 100644
--- a/src/vhdl/vhdl-ieee-numeric.adb
+++ b/src/vhdl/vhdl-ieee-numeric.adb
@@ -718,6 +718,29 @@ package body Vhdl.Ieee.Numeric is
Set_Implicit_Definition (Decl, Predefined);
end Handle_Std_Match;
+ procedure Handle_To_01
+ is
+ Predefined : Iir_Predefined_Functions;
+ begin
+ if Arg1_Kind /= Arg_Vect
+ or else Arg2_Kind /= Arg_Scal
+ or else Arg2_Sign /= Type_Log
+ then
+ raise Error;
+ end if;
+
+ case Arg1_Sign is
+ when Type_Unsigned =>
+ Predefined := Iir_Predefined_Ieee_Numeric_Std_To_01_Uns;
+ when Type_Signed =>
+ Predefined := Iir_Predefined_Ieee_Numeric_Std_To_01_Sgn;
+ when others =>
+ raise Error;
+ end case;
+
+ Set_Implicit_Definition (Decl, Predefined);
+ end Handle_To_01;
+
procedure Handle_Shift (Pats : Shift_Pattern_Type; Sh_Sign : Sign_Kind)
is
Res : Iir_Predefined_Functions;
@@ -885,6 +908,8 @@ package body Vhdl.Ieee.Numeric is
Handle_Shift (Rol_Patterns, Type_Unsigned);
when Name_Rotate_Right =>
Handle_Shift (Ror_Patterns, Type_Unsigned);
+ when Name_To_01 =>
+ Handle_To_01;
when others =>
null;
end case;
diff --git a/src/vhdl/vhdl-nodes.ads b/src/vhdl/vhdl-nodes.ads
index 7c2bebd42..d27e1aed9 100644
--- a/src/vhdl/vhdl-nodes.ads
+++ b/src/vhdl/vhdl-nodes.ads
@@ -5692,6 +5692,9 @@ package Vhdl.Nodes is
Iir_Predefined_Ieee_Numeric_Std_Match_Slv,
Iir_Predefined_Ieee_Numeric_Std_Match_Suv,
+ Iir_Predefined_Ieee_Numeric_Std_To_01_Uns,
+ Iir_Predefined_Ieee_Numeric_Std_To_01_Sgn,
+
-- Math_Real
Iir_Predefined_Ieee_Math_Real_Ceil,
Iir_Predefined_Ieee_Math_Real_Round,