diff options
author | Gabe Black <gabeblack@google.com> | 2018-08-30 01:39:21 -0700 |
---|---|---|
committer | Gabe Black <gabeblack@google.com> | 2018-10-03 00:21:28 +0000 |
commit | 1cc084fc7a214e6b3ed30910e9cd9a0c81f25b2f (patch) | |
tree | 87b0cafcc2559d3a95c964d2776068e78e1f1b37 /src/systemc/channel | |
parent | 475e8cd58094b6acad8d5ef8859c6fed0b543a2e (diff) | |
download | gem5-1cc084fc7a214e6b3ed30910e9cd9a0c81f25b2f.tar.xz |
systemc: Raise an error when SC_METHOD, etc. is used after starting.
Those mechanisms for creating processes are only allowed before the
end of elaboration, or in other words before sc_start is called.
Technically the check in Accellera's implementation won't trigger if
the simulation is stopped, and we immitate that behavior.
Change-Id: I9b8b5bd32f876781b6e0d5c0ee0e09de19bdabc1
Reviewed-on: https://gem5-review.googlesource.com/c/12447
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
Diffstat (limited to 'src/systemc/channel')
-rw-r--r-- | src/systemc/channel/sc_clock.cc | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/systemc/channel/sc_clock.cc b/src/systemc/channel/sc_clock.cc index 6736e57cf..7cdd1c1d1 100644 --- a/src/systemc/channel/sc_clock.cc +++ b/src/systemc/channel/sc_clock.cc @@ -32,6 +32,7 @@ #include "sim/core.hh" #include "sim/eventq.hh" #include "systemc/core/kernel.hh" +#include "systemc/core/process_types.hh" #include "systemc/core/sched_event.hh" #include "systemc/core/scheduler.hh" #include "systemc/ext/channel/sc_clock.hh" @@ -60,7 +61,8 @@ class ClockTick : public ScEvent { _name += (to ? ".up_tick" : ".down_tick"); _procName = _name + ".p"; - p = newMethodProcess(_procName.c_str(), &funcWrapper); + p = new Method(_procName.c_str(), &funcWrapper); + scheduler.reg(p); scheduler.dontInitialize(p); } |