systemc: Toggle off clumping methods together in the ready list.
authorGabe Black <gabeblack@google.com>
Sat, 1 Sep 2018 00:34:38 +0000 (17:34 -0700)
committerGabe Black <gabeblack@google.com>
Wed, 3 Oct 2018 00:31:01 +0000 (00:31 +0000)
This is totally legal and good for performance, but because some of
Accellera's tests depend on processes which can run in any order
running in a particular order to reproduce the golden output, it needs
to be disabled to pass the tests.

This change leaves it as an option which could even be plumbed out in
the future to support some sort of "compatibility" mode with the tests.

An alternative would be to verify that the tests pass, change the
ordering to the alternative (but still correct) order, and then
update the reference output.

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

src/systemc/core/scheduler.cc

index d5081c6679eaadc02513f59a88c7f0aa35400f7c..eda4ed7e4510d076c7801d889b2619a44916f951 100644 (file)
@@ -190,7 +190,9 @@ void
 Scheduler::ready(Process *p)
 {
     // Clump methods together to minimize context switching.
-    if (p->procKind() == ::sc_core::SC_METHOD_PROC_)
+    static bool cluster_methods = false;
+
+    if (cluster_methods && p->procKind() == ::sc_core::SC_METHOD_PROC_)
         readyList.pushFirst(p);
     else
         readyList.pushLast(p);