systemc: Match how Accellera schedules processes even more closely.
authorGabe Black <gabeblack@google.com>
Thu, 6 Sep 2018 00:21:11 +0000 (17:21 -0700)
committerGabe Black <gabeblack@google.com>
Tue, 9 Oct 2018 21:36:50 +0000 (21:36 +0000)
commitcdda84fb5df278d083e02b3a7ab616b651e82f58
tree2eb6c833f1695f607c26a9c6ed17cd771fa493c3
parent930386c114eda9e0f57d407d2ef61740fd75fc88
systemc: Match how Accellera schedules processes even more closely.

The Accellera implementation runs processes in a cycle where it first
runs all the methods it has, then all the threads, and then starts
again in case any new methods have been scheduled. This keeps methods
and processes in the order they were marked ready (what a prior change
made this scheduler do), but also keeps the methods together and the
threads together (something it used to do, but that change made it
stop doing). This change should make the gem5 scheduler match in both
respects.

Note that its correct to run the processes in whatever order we want,
it's just that if we're going to compare against the "golden" output
from the Accellera tests, we need to match the order to get sensible
results.

Change-Id: I0b1e4ed24c56f97921148b74e90c2dca5fd3fbc4
Reviewed-on: https://gem5-review.googlesource.com/c/12595
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
src/systemc/core/scheduler.cc
src/systemc/core/scheduler.hh