The Sparta Modeling Framework
|
Used to set precedence between Scheduleable types across simulation. More...
#include <GlobalOrderingPoint.hpp>
Public Member Functions | |
GlobalOrderingPoint (sparta::TreeNode *node, const std::string &name) | |
Construction a GlobalOrderingPoint. | |
const std::string & | getName () const |
Handy method for debug. | |
DAG::GOPoint * | getGOPoint () const |
Used by the precedence rules. | |
Used to set precedence between Scheduleable types across simulation.
In cases where two events in different blocks need synchronization, this class can allow a modeler to set a precedence between those entities, even across blocks that do not know about each other.
Example: a core's load/store unit needs to send "ready" to the middle machine for operand readiness. The middle machine will pick the instruction that corresponds to that ready signal on the same cycle the load/store sends ready. The modeler requires the load/store unit to be scheduled first before the middle machine's picker:
In the above case, the event ev_send_ready_
must be scheduled before pick_instruction_
.
To do this, set up a sparta::GlobalOrderingPoint in both unit's constructors:
The modeler must ensure the name of the sparta::GlobalOrderingPoint is the same on both calls.
Definition at line 60 of file GlobalOrderingPoint.hpp.
|
inline |
Construction a GlobalOrderingPoint.
node | The node this GOP is associated with |
name | The name that's used to register with the internal DAG |
See descition for use
Definition at line 71 of file GlobalOrderingPoint.hpp.
|
inline |
Used by the precedence rules.
Definition at line 93 of file GlobalOrderingPoint.hpp.
|
inline |
Handy method for debug.
Definition at line 85 of file GlobalOrderingPoint.hpp.