diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/grt/grt-options.adb | 8 | ||||
| -rw-r--r-- | src/grt/grt-options.ads | 4 | ||||
| -rw-r--r-- | src/grt/grt-vhdl_types.ads | 4 | ||||
| -rw-r--r-- | src/synth/synth-vhdl_eval.adb | 3 | 
4 files changed, 19 insertions, 0 deletions
diff --git a/src/grt/grt-options.adb b/src/grt/grt-options.adb index bf29c1a5e..2b07278b1 100644 --- a/src/grt/grt-options.adb +++ b/src/grt/grt-options.adb @@ -49,6 +49,14 @@ package body Grt.Options is           when others =>              Error ("unhandled time resolution");        end case; + +      --  For AMS. +      --  (Don't use **, as it requires the runtime). +      Time_Real_To_Phys := 1.0; +      for I in 1 .. Time_Resolution_Scale loop +         Time_Real_To_Phys := Time_Real_To_Phys * 1000.0; +      end loop; +      Time_Phys_To_Real := 1.0 / Time_Real_To_Phys;     end Set_Time_Resolution;     procedure Help diff --git a/src/grt/grt-options.ads b/src/grt/grt-options.ads index fa29cc85f..d9ea57bc5 100644 --- a/src/grt/grt-options.ads +++ b/src/grt/grt-options.ads @@ -64,6 +64,10 @@ package Grt.Options is     subtype Natural_Time_Scale is Natural range 0 .. 5;     Time_Resolution_Scale : Natural_Time_Scale; +   --  For AMS, conversion factors. +   Time_Phys_To_Real : Ghdl_F64; +   Time_Real_To_Phys : Ghdl_F64; +     --  Set Time_Resolution_Scale from Flag_String.     procedure Set_Time_Resolution; diff --git a/src/grt/grt-vhdl_types.ads b/src/grt/grt-vhdl_types.ads index 42db6b9dd..34366161e 100644 --- a/src/grt/grt-vhdl_types.ads +++ b/src/grt/grt-vhdl_types.ads @@ -158,6 +158,10 @@ package Grt.Vhdl_Types is     Current_Time : Std_Time;     --  The current delta cycle number.     Current_Delta : Integer; + +   --  For AMS +   Current_Time_AMS : Ghdl_F64;  private     pragma Export (C, Current_Time, "__ghdl_now"); +   pragma Export (C, Current_Time_AMS, "__ghdl_now_ams");  end Grt.Vhdl_Types; diff --git a/src/synth/synth-vhdl_eval.adb b/src/synth/synth-vhdl_eval.adb index ab1304190..5282473d2 100644 --- a/src/synth/synth-vhdl_eval.adb +++ b/src/synth/synth-vhdl_eval.adb @@ -2005,6 +2005,9 @@ package body Synth.Vhdl_Eval is           when Iir_Predefined_Now_Function =>              return Create_Memory_Discrete                (Int64 (Grt.Vhdl_Types.Current_Time), Res_Typ); +         when Iir_Predefined_Real_Now_Function => +            return Create_Memory_Fp64 +              (Fp64 (Grt.Vhdl_Types.Current_Time_AMS), Res_Typ);           when Iir_Predefined_Endfile =>              declare  | 
