Go to the documentation of this file.
34 #ifndef TTA_SIMPLE_BROKER_DIRECTOR_HH
35 #define TTA_SIMPLE_BROKER_DIRECTOR_HH
45 class TerminalImmediate;
81 int immWriteCycle = -1,
83 int immRegIndex = -1)
const override;
93 int immWriteCycle = -1,
95 int immRegIndex = -1)
override;
102 int immWriteCycle = -1,
104 int immRegIndex = -1)
const override;
110 int immWriteCycle = -1,
112 int immRegIndex = -1)
const override;
118 int immWriteCycle = -1,
120 int immRegIndex = -1)
const override;
126 int immWriteCycle = -1,
128 int immRegIndex = -1)
const override;
136 virtual std::shared_ptr<TTAProgram::TerminalImmediate>
140 int, std::shared_ptr<TTAProgram::Immediate>)
const;
169 std::map<const MoveNode*, OriginalResources*, MoveNode::Comparator>
BusBroker & busBroker() const
virtual int latestCycle(MoveNode &node, const TTAMachine::Bus *bus=nullptr, const TTAMachine::FunctionUnit *srcFU=nullptr, const TTAMachine::FunctionUnit *dstFU=nullptr, int immWriteCycle=-1, const TTAMachine::ImmediateUnit *immu=nullptr, int immRegIndex=-1) const override
SimpleBrokerDirector(const TTAMachine::Machine &machine, AssignmentPlan &plan, unsigned int initiationInterval_)
virtual void unassign(MoveNode &node) override
virtual int smallestCycle() const override
virtual bool isTemplateAvailable(int, std::shared_ptr< TTAProgram::Immediate >) const
virtual bool hasGuard(const MoveNode &node) const
unsigned int initiationInterval_
virtual bool canAssign(int cycle, MoveNode &node, const TTAMachine::Bus *bus=nullptr, const TTAMachine::FunctionUnit *srcFU=nullptr, const TTAMachine::FunctionUnit *dstFU=nullptr, int immWriteCycle=-1, const TTAMachine::ImmediateUnit *immu=nullptr, int immRegIndex=-1) const override
virtual void assign(int cycle, MoveNode &node, const TTAMachine::Bus *bus=nullptr, const TTAMachine::FunctionUnit *srcFU=nullptr, const TTAMachine::FunctionUnit *dstFU=nullptr, int immWriteCycle=-1, const TTAMachine::ImmediateUnit *immu=nullptr, int immRegIndex=-1) override
virtual bool canTransportImmediate(const MoveNode &node, const TTAMachine::Bus *preAssignedBus) const
virtual void loseInstructionOwnership(int cycle)
int schedulingWindow_
the number of instructions to look back in the schedule for a free slot
ITemplateBroker & instructionTemplateBroker() const
virtual ~SimpleBrokerDirector()
OriginalResources(TTAProgram::Terminal *, TTAProgram::Terminal *, const TTAMachine::Bus *, TTAProgram::MoveGuard *, bool)
std::map< int, int > moveCounts_
TTAProgram::Terminal * dst_
virtual int earliestCycle(MoveNode &node, const TTAMachine::Bus *bus=nullptr, const TTAMachine::FunctionUnit *srcFU=nullptr, const TTAMachine::FunctionUnit *dstFU=nullptr, int immWriteCycle=-1, const TTAMachine::ImmediateUnit *immu=nullptr, int immRegIndex=-1) const override
void setBBN(const BasicBlockNode *bbn)
virtual int largestCycle() const override
ExecutionPipelineBroker & executionPipelineBroker() const
TTAProgram::MoveGuard * guard_
void setCFG(const ControlFlowGraph *cfg)
const TTAMachine::Bus * bus_
void setDDG(const DataDependenceGraph *ddg)
virtual std::shared_ptr< TTAProgram::TerminalImmediate > immediateValue(const MoveNode &)
unsigned int instructionIndex(unsigned int maxCycle) const
TTAProgram::Terminal * src_
virtual int immediateWriteCycle(const MoveNode &) const
IUBroker & immediateUnitBroker() const
const TTAMachine::Machine & machine() const
virtual TTAProgram::Instruction * instruction(int cycle) const override
virtual bool supportsExternalAssignments() const override
std::map< const MoveNode *, OriginalResources *, MoveNode::Comparator > origResMap_
void setMaxCycle(unsigned int cycle)