systemc: Add some error checks to the sc_module constructor.
authorGabe Black <gabeblack@google.com>
Wed, 3 Oct 2018 23:24:10 +0000 (16:24 -0700)
committerGabe Black <gabeblack@google.com>
Tue, 16 Oct 2018 00:50:09 +0000 (00:50 +0000)
These match error checks which are already in, for instance, the
sc_port constructor.

Change-Id: I8dfb4ce37bf0e59c6fa879f0afda5112af78b40b
Reviewed-on: https://gem5-review.googlesource.com/c/13290
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

src/systemc/core/sc_module.cc

index 0954805c8eaaf382704405a54ff3eebed145ee91..1c3b54b985bbb64d54bdc7d95f57db4a02c93ee4 100644 (file)
@@ -221,7 +221,16 @@ sc_module::get_child_events() const
 sc_module::sc_module() :
     sc_object(sc_gem5::newModuleChecked()->name()),
     _gem5_module(sc_gem5::currentModule())
-{}
+{
+    if (sc_is_running()) {
+        SC_REPORT_ERROR("(E529) insert module failed", "simulation running");
+        std::cout << "Running!\n";
+    }
+    if (::sc_gem5::scheduler.elaborationDone()) {
+        SC_REPORT_ERROR("(E529) insert module failed", "elaboration done");
+        std::cout << "Elaboration done!\n";
+    }
+}
 
 sc_module::sc_module(const sc_module_name &) : sc_module() {}
 sc_module::sc_module(const char *_name) : sc_module(sc_module_name(_name))