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;
#define assert(condition)
find Finds info of the inner loops in the false
static std::ostream & logStream()
virtual bool simulateStage(ExecutingOperation &operation)=0
const Operation & operation() const
std::vector< PendingResult > pendingResults_
std::vector< SimValue * > iovec_
OSAL simulateTrigger() compatible I/O vector for fast execution.
std::vector< SimValue > iostorage_
virtual void startOperation(Operation &op)
virtual ~MultiLatencyOperationExecutor()
ExecutingOperation * freeExecOp_
If non-NULL, points to a known free ExecutingOperation slot.
TTAMachine::HWOperation * hwOperation_
The hardware operation this executor simulates.
virtual OperationExecutor * copy()
Operation * operation_
The OSAL operation.
ExecutingOperation & findFreeExecutingOperation()
MultiLatencyOperationExecutor()
bool execOperationsInitialized_
virtual void setContext(OperationContext &context)
virtual void advanceClock()
DetailedOperationSimulator * opSimulator_
If non-NULL, points to a detailed cycle-by-cycle simulation model for the operation simulated by this...
std::vector< ExecutingOperation > executingOps_
The operations "on flight" in this operation executor.
OperationContext * context_
Operation context.
bool hasPendingOperations_
This is set to true if the OperationExecutor is not in 'idle' mode.
PortState & binding(int io) const
Operation & operation(const char *name)
virtual TCEString name() const
virtual bool simulateTrigger(SimValue **, OperationContext &context) const
virtual int numberOfInputs() const
virtual int numberOfOutputs() const
virtual const SimValue & value() const
const std::string & name() const