diff options
Diffstat (limited to 'src/grt/grt-signals.adb')
-rw-r--r-- | src/grt/grt-signals.adb | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/grt/grt-signals.adb b/src/grt/grt-signals.adb index 363e7977e..4cdc8c424 100644 --- a/src/grt/grt-signals.adb +++ b/src/grt/grt-signals.adb @@ -3324,15 +3324,21 @@ package body Grt.Signals is Sig := Fv.Sig; -- FIXME: Implement the full semantic of force: really force, -- only set driving/effective value, release... + Mark_Active (Sig); case Fv.Kind is when Force_Driving => - Mark_Active (Sig); Sig.Driving_Value := Fv.Val; - Set_Effective_Value (Sig, Sig.Driving_Value'Access); when Force_Effective => - Mark_Active (Sig); - Set_Effective_Value (Sig, Fv.Val'Access); + null; end case; + Set_Effective_Value (Sig, Fv.Val'Access); + + if Sig.Net in Signal_Net_Defined then + -- HACK: mark SIG as active so that propagation will execute + -- just below. + Add_Active_Chain (Sig); + end if; + Next_Fv := Fv.Next; Free (Fv); Fv := Next_Fv; |