OpenASIP
2.0
|
#include <ConflictDetectingOperationExecutor.hh>
Private Member Functions | |
ConflictDetectingOperationExecutor & | operator= (const ConflictDetectingOperationExecutor &) |
Assignment not allowed. More... | |
Private Attributes | |
FUResourceConflictDetector & | detector_ |
The conflict detector used to test whether starting operation is legal. More... | |
const FUResourceConflictDetector::OperationID | operationID_ |
The conflict detector ID of the operation executed with this executor. More... | |
const bool | throwWhenConflict_ |
True in case an exception should be thrown in case of a resource conflict. More... | |
ClockCycleCount | conflictCounter_ |
Counter for detected conflicts. 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... | |
OperationExecutor that checks for FU resource conflicts.
This kind of OperationExecutor is created for each operation in the simulated FU. This is purely for optimization purposes: as we need to check the resource conflicts using a per operation ID, it's faster to use a constant ID for requesting the conflict detection data instead of first fetching the constant from a map for the executed operation.
Definition at line 49 of file ConflictDetectingOperationExecutor.hh.
ConflictDetectingOperationExecutor::ConflictDetectingOperationExecutor | ( | FUResourceConflictDetector & | detector, |
FUResourceConflictDetector::OperationID | operationID, | ||
FUState & | parent, | ||
TTAMachine::HWOperation & | hwOp, | ||
bool | throwWhenConflict | ||
) |
Constructor.
detector | The conflict detector. |
operationID | The conflict detector ID of the operation executed by this operation executor. |
parent | Parent of the OperationExecutor. |
throwWhenConflict | In case an exception should be thrown in case of a resource conflict (otherwise the conflicts are only counted). |
Definition at line 53 of file ConflictDetectingOperationExecutor.cc.
Referenced by copy().
|
virtual |
Destructor.
Definition at line 67 of file ConflictDetectingOperationExecutor.cc.
References conflictCounter_.
|
virtual |
Advances clock by one cycle.
Updates the resource conflict model.
Reimplemented from MultiLatencyOperationExecutor.
Definition at line 109 of file ConflictDetectingOperationExecutor.cc.
References MultiLatencyOperationExecutor::advanceClock(), and OperationExecutor::hasPendingOperations_.
|
virtual |
Copies OperationExecutor.
Reimplemented from MultiLatencyOperationExecutor.
Definition at line 123 of file ConflictDetectingOperationExecutor.cc.
References ConflictDetectingOperationExecutor().
|
private |
Assignment not allowed.
|
virtual |
Starts new operation.
Checks for resource conflicts before actually simulating the operation using the parent class implementation.
op | Operation to be triggered. |
Reimplemented from MultiLatencyOperationExecutor.
Definition at line 83 of file ConflictDetectingOperationExecutor.cc.
References __func__, conflictCounter_, detector_, OperationExecutor::hasPendingOperations_, FUResourceConflictDetector::issueOperation(), Operation::name(), operationID_, MultiLatencyOperationExecutor::startOperation(), and throwWhenConflict_.
|
private |
Counter for detected conflicts.
Definition at line 79 of file ConflictDetectingOperationExecutor.hh.
Referenced by startOperation(), and ~ConflictDetectingOperationExecutor().
|
private |
The conflict detector used to test whether starting operation is legal.
Definition at line 72 of file ConflictDetectingOperationExecutor.hh.
Referenced by startOperation().
|
private |
The conflict detector ID of the operation executed with this executor.
Definition at line 74 of file ConflictDetectingOperationExecutor.hh.
Referenced by startOperation().
|
private |
True in case an exception should be thrown in case of a resource conflict.
Definition at line 77 of file ConflictDetectingOperationExecutor.hh.
Referenced by startOperation().