misc: Implement the Base SystemC Module as an sc_channel.
authorChristian Menard <Christian.Menard@tu-dresden.de>
Fri, 10 Feb 2017 00:10:25 +0000 (19:10 -0500)
committerChristian Menard <Christian.Menard@tu-dresden.de>
Fri, 10 Feb 2017 00:10:25 +0000 (19:10 -0500)
Implementing the Module as an sc_channel allows derived classes to provide
SystemC interfaces. Other SystemC modules can connect to these interfaces.
This meachanism can be used to control gem5 and acces gem5 components from
within arbitrary SystemC moduels. Since sc_channel is derived from
sc_module, this patch does not break compatibility with existing code.

Signed-off-by: Jason Lowe-Power <jason@lowepower.com>
util/systemc/sc_module.cc
util/systemc/sc_module.hh

index 46a8d39eec5f150bfc0bdaa2450c0a608ef83ca0..40f79bc854ef1b246b82e496e2ecf554a35f24ee 100644 (file)
@@ -43,6 +43,7 @@
  *          Steve Reinhardt
  *          Andrew Bardsley
  *          Matthias Jung
+ *          Christian Menard
  */
 
 /**
@@ -77,7 +78,7 @@ setTickFrequency()
     ::setClockFrequency(1000000000000);
 }
 
-Module::Module(sc_core::sc_module_name name) : sc_core::sc_module(name),
+Module::Module(sc_core::sc_module_name name) : sc_core::sc_channel(name),
     in_simulate(false)
 {
     SC_METHOD(eventLoop);
index b529e213701c43a14d9824e54aa5a38430b49f59..ff4e56e53caca0334d60f01ad60b51b96033a386 100644 (file)
@@ -42,6 +42,7 @@
  * Authors: Nathan Binkert
  *          Steve Reinhardt
  *          Andrew Bardsley
+ *          Christian Menard
  */
 
 /**
@@ -83,7 +84,7 @@ namespace Gem5SystemC
  *  This functionality is wrapped in an sc_module as its intended that
  *  the a class representing top level simulation control should be derived
  *  from this class. */
-class Module : public sc_core::sc_module
+class Module : public sc_core::sc_channel
 {
   protected:
     /** Event to trigger (via. ::notify) for event scheduling from