systemc: Add some nonstandard SC_WAIT* macros.
authorGabe Black <gabeblack@google.com>
Sat, 16 Jun 2018 00:01:14 +0000 (17:01 -0700)
committerGabe Black <gabeblack@google.com>
Wed, 22 Aug 2018 01:02:43 +0000 (01:02 +0000)
These are not in the standard, but are defined by Accellera and used in
the tests.

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

src/systemc/ext/core/sc_module.hh

index 68d2174b32c52f2312b2d797e107ed45eae19f0f..c83cf1d3b142e9250f3ffc854d3231c8974b1f43 100644 (file)
@@ -250,6 +250,19 @@ bool sc_end_of_simulation_invoked();
 sc_module *sc_module_sc_new(sc_module *);
 #define SC_NEW(x) ::sc_core::sc_module_sc_new(new x);
 
+// Nonstandard
+// In the Accellera implementation, this macro calls sc_set_location to record
+// the current file and line, calls wait, and then calls it again to clear the
+// file and line. We'll ignore the sc_set_location calls for now.
+#define SC_WAIT() ::sc_core::wait();
+
+// Nonstandard
+// Same as above, but passes through an argument.
+#define SC_WAITN(n) ::sc_core::wait(n);
+
+// Nonstandard
+#define SC_WAIT_UNTIL(expr) do { SC_WAIT(); } while (!(expr))
+
 } // namespace sc_core
 
 #endif  //__SYSTEMC_EXT_CORE_SC_MODULE_HH__