OpenASIP
2.0
|
#include <OneCycleOperationExecutor.hh>
Public Member Functions | |
OneCycleOperationExecutor (FUState &parent) | |
virtual | ~OneCycleOperationExecutor () |
virtual int | latency () const |
virtual void | startOperation (Operation &op) |
virtual void | advanceClock () |
virtual OperationExecutor * | copy () |
virtual void | setContext (OperationContext &context) |
Public Member Functions inherited from OperationExecutor | |
OperationExecutor () | |
OperationExecutor (FUState &parent) | |
virtual | ~OperationExecutor () |
FUState & | parent () const |
void | setParent (FUState &parent) |
void | addBinding (int io, PortState &port) |
PortState & | binding (int io) const |
bool | hasPendingOperations () const |
virtual void | reset () |
Private Member Functions | |
OneCycleOperationExecutor & | operator= (const OneCycleOperationExecutor &) |
Assignment not allowed. More... | |
void | initializeIOVector () |
Private Attributes | |
OperationContext * | context_ |
Operation context. More... | |
Operation * | operation_ |
Operation to be executed next. More... | |
SimValue ** | io_ |
Inputs and outputs for the operation. More... | |
bool | ready_ |
True if all the results are ready. More... | |
bool | ioVectorInitialized_ |
True if the io_ vector is initialized-. More... | |
Additional Inherited Members | |
Protected Attributes inherited from OperationExecutor | |
std::vector< PortState * > | bindings_ |
PortStates that are bound to a certain input or output operand. More... | |
bool | hasPendingOperations_ |
This is set to true if the OperationExecutor is not in 'idle' mode. More... | |
Operation executor for one cycle latency operations.
Definition at line 45 of file OneCycleOperationExecutor.hh.
|
explicit |
Constructor.
parent | Parent of the executor. |
Definition at line 55 of file OneCycleOperationExecutor.cc.
Referenced by copy().
|
virtual |
|
virtual |
Advances clock by one cycle.
Implements OperationExecutor.
Definition at line 113 of file OneCycleOperationExecutor.cc.
References OperationExecutor::hasPendingOperations_, and operation_.
|
virtual |
Copies OperationExecutor.
Implements OperationExecutor.
Definition at line 124 of file OneCycleOperationExecutor.cc.
References OneCycleOperationExecutor().
|
inlineprivate |
Initializes the operation input/output vector.
The I/O vector points directly to the function unit port register values. This is possible because there cannot be any other pending operations at once because of latency of 1.
Definition at line 86 of file OneCycleOperationExecutor.cc.
References OperationExecutor::bindings_, io_, and ioVectorInitialized_.
Referenced by startOperation().
|
virtual |
Returns the latency of the executor.
Definition at line 74 of file OneCycleOperationExecutor.cc.
|
private |
Assignment not allowed.
|
virtual |
Sets new context for the OperationExecutor.
context | New OperationContext. |
Implements OperationExecutor.
Definition at line 134 of file OneCycleOperationExecutor.cc.
References context_.
|
virtual |
Starts the execution of the operation.
op | Operation to be triggered. |
Implements OperationExecutor.
Definition at line 102 of file OneCycleOperationExecutor.cc.
References context_, OperationExecutor::hasPendingOperations_, initializeIOVector(), io_, operation_, ready_, and Operation::simulateTrigger().
|
private |
Operation context.
Definition at line 65 of file OneCycleOperationExecutor.hh.
Referenced by setContext(), and startOperation().
|
private |
Inputs and outputs for the operation.
Definition at line 69 of file OneCycleOperationExecutor.hh.
Referenced by initializeIOVector(), startOperation(), and ~OneCycleOperationExecutor().
|
private |
True if the io_ vector is initialized-.
Definition at line 73 of file OneCycleOperationExecutor.hh.
Referenced by initializeIOVector().
|
private |
Operation to be executed next.
Definition at line 67 of file OneCycleOperationExecutor.hh.
Referenced by advanceClock(), and startOperation().
|
private |
True if all the results are ready.
Definition at line 71 of file OneCycleOperationExecutor.hh.
Referenced by startOperation().