Go to the documentation of this file.
57 freeExecOp_(NULL), execOperationsInitialized_(
false),
72 const std::size_t operandCount = inputOperands + outputOperands;
103 "Did not find a free ExecutingOperation.");
122 const std::size_t operandCount = inputOperands + outputOperands;
134 for (std::size_t o = 1; o <= operandCount; ++o) {
140 for (std::size_t o = inputOperands + 1; o <= operandCount; ++o) {
145 execOp.
iostorage_[o - 1], port, resultLatency);
152 for (std::size_t i = 1; i <= inputOperands; ++i) {
155 #ifdef DEBUG_OPERATION_SIMULATION
158 <<
") started" << std::endl;
170 bool foundActiveOperation =
false;
172 for (std::size_t i = 0; i < executingOpCount; ++i) {
179 foundActiveOperation =
true;
180 bool customSimulated =
182 if (execOp.
stage_ == 0 && !customSimulated)
187 #ifdef DEBUG_OPERATION_SIMULATION
190 <<
") finished" << std::endl;
std::vector< ExecutingOperation > executingOps_
The operations "on flight" in this operation executor.
Operation & operation(const char *name)
virtual bool simulateStage(ExecutingOperation &operation)=0
bool execOperationsInitialized_
virtual void setContext(OperationContext &context)
const Operation & operation() const
std::vector< SimValue > iostorage_
virtual int numberOfInputs() const
ExecutingOperation & findFreeExecutingOperation()
static std::ostream & logStream()
virtual TCEString name() const
#define assert(condition)
virtual const SimValue & value() const
bool hasPendingOperations_
This is set to true if the OperationExecutor is not in 'idle' mode.
const std::string & name() const
ExecutingOperation * freeExecOp_
If non-NULL, points to a known free ExecutingOperation slot.
virtual void advanceClock()
virtual void startOperation(Operation &op)
virtual ~MultiLatencyOperationExecutor()
MultiLatencyOperationExecutor()
DetailedOperationSimulator * opSimulator_
If non-NULL, points to a detailed cycle-by-cycle simulation model for the operation simulated by this...
Operation * operation_
The OSAL operation.
find Finds info of the inner loops in the false
virtual bool simulateTrigger(SimValue **, OperationContext &context) const
TTAMachine::HWOperation * hwOperation_
The hardware operation this executor simulates.
std::vector< PendingResult > pendingResults_
virtual int numberOfOutputs() const
PortState & binding(int io) const
OperationContext * context_
Operation context.
virtual OperationExecutor * copy()
std::vector< SimValue * > iovec_
OSAL simulateTrigger() compatible I/O vector for fast execution.