Go to the documentation of this file.
34 #ifndef TTA_FU_STATE_HH
35 #define TTA_FU_STATE_HH
std::vector< PortState * > inputPorts_
Input ports of the function unit.
OperationExecutor * nextExecutor_
OperationExecutor to be used for the next operation (an optimization).
virtual void advanceClock()
NullFUState & operator=(const NullFUState &)
Assignment not allowed.
bool sameBindings(OperationExecutor &exec1, OperationExecutor &exec2, Operation &op)
OperationContext operationContext_
The operation context for this FU.
bool trigger_
True if operation is triggered in current clock cycle.
FUState & operator=(const FUState &)
Assignment not allowed.
virtual void addOperationExecutor(OperationExecutor &opExec, Operation &op)
std::vector< PortState * > outputPorts_
Output ports of the function unit.
virtual void addInputPortState(PortState &port)
DetailedOperationSimulator * detailedModel_
Optional detailed operation simulation model. Assume there's one such model per FU or none at all for...
Operation * nextOperation_
Operation to be triggered next.
virtual void addInputPortState(PortState &port)
virtual void advanceClock()
virtual void addOperationExecutor(OperationExecutor &opExec, Operation &op)
ExecutorContainer executors_
All operation executors.
virtual void replaceOperationExecutor(Operation &op, OperationExecutor *newExecutor)
ExecutorList execList_
All the different instances of OperationExecutors.
static NullFUState & instance()
virtual void setOperationSimulator(DetailedOperationSimulator &sim)
std::size_t activeExecutors_
Count of active executors (to allow returning instantly from advanceClock())
virtual void reset()
this is called at (re)initialization of the simulation
virtual OperationExecutor * executor(Operation &op)
bool idle_
The idle status of the FU. The derived classes should alway set this to true when possible to avoid u...
std::map< Operation *, OperationExecutor * > ExecutorContainer
Maps operations to executors.
std::vector< OperationExecutor * > ExecutorList
Contains all the different instances of executors.
virtual void addOutputPortState(PortState &port)
static NullFUState instance_
Unique instance of NullFUState.
void setOperation(Operation &operation)
virtual OperationExecutor * executor(Operation &op)
virtual void addOutputPortState(PortState &port)
virtual OperationContext & context()