From 600d8fad841f92c600c01d18569e9e4c6f843d21 Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Sun, 22 Mar 2020 08:41:16 +0100 Subject: synth: handle ieee.numeric_std.to_01 --- src/vhdl/vhdl-ieee-numeric.adb | 25 +++++++++++++++++++++++++ src/vhdl/vhdl-nodes.ads | 3 +++ 2 files changed, 28 insertions(+) (limited to 'src/vhdl') 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, -- cgit v1.2.3