diff options
Diffstat (limited to 'src/systemc')
-rw-r--r-- | src/systemc/core/sensitivity.cc | 15 | ||||
-rw-r--r-- | src/systemc/core/sensitivity.hh | 15 |
2 files changed, 15 insertions, 15 deletions
diff --git a/src/systemc/core/sensitivity.cc b/src/systemc/core/sensitivity.cc index b0709ee91..9ce6fc4de 100644 --- a/src/systemc/core/sensitivity.cc +++ b/src/systemc/core/sensitivity.cc @@ -58,7 +58,8 @@ Sensitivity::notify(Event *e) { if (process->disabled()) return false; - return notifyWork(e); + satisfy(); + return true; } bool @@ -213,8 +214,11 @@ DynamicSensitivityEventOrList::DynamicSensitivityEventOrList( {} bool -DynamicSensitivityEventOrList::notifyWork(Event *e) +DynamicSensitivityEventOrList::notify(Event *e) { + if (process->disabled()) + return false; + events.erase(e->sc_event()); // All the other events need this deleted from their lists since this @@ -232,8 +236,11 @@ DynamicSensitivityEventAndList::DynamicSensitivityEventAndList( {} bool -DynamicSensitivityEventAndList::notifyWork(Event *e) +DynamicSensitivityEventAndList::notify(Event *e) { + if (process->disabled()) + return false; + events.erase(e->sc_event()); // This sensitivity is satisfied if all events have triggered. @@ -294,7 +301,7 @@ ResetSensitivitySignal::ResetSensitivitySignal( } bool -ResetSensitivitySignal::notifyWork(Event *e) +ResetSensitivitySignal::notify(Event *e) { process->signalReset(_signal->read() == val(), sync()); return true; diff --git a/src/systemc/core/sensitivity.hh b/src/systemc/core/sensitivity.hh index 0e2f4919d..62c9682c3 100644 --- a/src/systemc/core/sensitivity.hh +++ b/src/systemc/core/sensitivity.hh @@ -72,18 +72,11 @@ class Sensitivity virtual void addToEvent(const ::sc_core::sc_event *e) = 0; virtual void delFromEvent(const ::sc_core::sc_event *e) = 0; - virtual bool - notifyWork(Event *e) - { - satisfy(); - return true; - } - public: virtual void clear() = 0; void satisfy(); - bool notify(Event *e); + virtual bool notify(Event *e); enum Category { @@ -307,7 +300,7 @@ class DynamicSensitivityEventOrList : DynamicSensitivityEventOrList( Process *p, const sc_core::sc_event_or_list *eol); - bool notifyWork(Event *e) override; + bool notify(Event *e) override; }; //XXX This sensitivity can't be reused. To reset it, it has to be deleted and @@ -323,7 +316,7 @@ class DynamicSensitivityEventAndList : DynamicSensitivityEventAndList( Process *p, const sc_core::sc_event_and_list *eal); - bool notifyWork(Event *e) override; + bool notify(Event *e) override; }; /* @@ -355,7 +348,7 @@ class ResetSensitivitySignal : Process *p, const sc_core::sc_signal_in_if<bool> *signal, bool _val, bool _sync); - bool notifyWork(Event *e) override; + bool notify(Event *e) override; }; class ResetSensitivityPort : public ResetSensitivitySignal |