diff options
Diffstat (limited to 'src/vhdl/simulate/iir_values.adb')
-rw-r--r-- | src/vhdl/simulate/iir_values.adb | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/vhdl/simulate/iir_values.adb b/src/vhdl/simulate/iir_values.adb index ab9ad5215..3d308e7f6 100644 --- a/src/vhdl/simulate/iir_values.adb +++ b/src/vhdl/simulate/iir_values.adb @@ -362,6 +362,17 @@ package body Iir_Values is (Kind => Iir_Value_Quantity, Quantity => Quantity))); end Create_Quantity_Value; + function Create_Environment_Value (Env : Environment_Index_Type) + return Iir_Value_Literal_Acc + is + subtype Environment_Value is Iir_Value_Literal (Iir_Value_Environment); + function Alloc is new Alloc_On_Pool_Addr (Environment_Value); + begin + return To_Iir_Value_Literal_Acc + (Alloc (Global_Pool'Access, + (Kind => Iir_Value_Environment, Environment => Env))); + end Create_Environment_Value; + function Create_Protected_Value (Prot : Protected_Index_Type) return Iir_Value_Literal_Acc is @@ -639,9 +650,11 @@ package body Iir_Values is pragma Assert (Src.Sig = null); return Create_Signal_Value (Src.Sig); + when Iir_Value_Environment => + return Create_Environment_Value (Src.Environment); + when Iir_Value_Quantity - | Iir_Value_Terminal - | Iir_Value_Environment => + | Iir_Value_Terminal => raise Internal_Error; end case; end Copy; |