summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/systemc/core/sensitivity.cc15
-rw-r--r--src/systemc/core/sensitivity.hh15
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