33#ifndef TTA_RESOURCE_BROKER_HH
34#define TTA_RESOURCE_BROKER_HH
84 int immRegIndex)
const;
92 int immRegIndex)
const;
100 int immRegIndex)
const;
108 int immRegIndex)
const = 0;
116 int immRegIndex)
const = 0;
124 int immRegIndex) = 0;
146 virtual void clear();
void addResource(const TTAMachine::MachinePart &mp, SchedulingResource *res)
virtual bool isIUBroker() const
const ResourceMapper * resourceMapper_
virtual std::string brokerName() const
int resourceCount() const
void validateResources() const
virtual void setupResourceLinks(const ResourceMapper &mapper)=0
std::map< const TTAMachine::MachinePart *, SchedulingResource *, TTAMachine::MachinePart::Comparator > ResourceMap
virtual bool isExecutionPipelineBroker() const
MoveResMap assignedResources_
SchedulingResource * resourceOf(const TTAMachine::MachinePart &mp) const
virtual bool isAvailable(SchedulingResource &des, const MoveNode &node, int cycle, const TTAMachine::Bus *bus, const TTAMachine::FunctionUnit *srcFU, const TTAMachine::FunctionUnit *dstFU, int immWriteCycle, const TTAMachine::ImmediateUnit *immu, int immRegIndex) const
unsigned int instructionIndex(unsigned int) const
const ResourceMapper & resourceMapper() const
virtual void setInitiationInterval(unsigned int cycles)
virtual bool isAlreadyAssigned(int cycle, const MoveNode &node, const TTAMachine::Bus *preassignedBus) const =0
bool hasResource(const SchedulingResource &r) const
virtual int earliestCycle(int cycle, const MoveNode &node, const TTAMachine::Bus *bus, const TTAMachine::FunctionUnit *srcFU, const TTAMachine::FunctionUnit *dstFU, int immWriteCycle, const TTAMachine::ImmediateUnit *immu, int immRegIndex) const =0
virtual void assign(int cycle, MoveNode &node, SchedulingResource &res, int immWriteCycle, int immRegIndex)=0
virtual ~ResourceBroker()
virtual void setMaxCycle(unsigned int)
virtual bool isITemplateBroker() const
virtual void buildResources(const TTAMachine::Machine &target)=0
virtual void unassign(MoveNode &node)=0
virtual bool isBusBroker() const
virtual SchedulingResourceSet allAvailableResources(int cycle, const MoveNode &node, const TTAMachine::Bus *bus, const TTAMachine::FunctionUnit *srcFU, const TTAMachine::FunctionUnit *dstFU, int immWriteCycle, const TTAMachine::ImmediateUnit *immu, int immRegIndex) const
virtual bool isApplicable(const MoveNode &node, const TTAMachine::Bus *preassignedBus) const =0
void setResourceMapper(const ResourceMapper &mapper)
virtual bool isAnyResourceAvailable(int cycle, const MoveNode &node, const TTAMachine::Bus *bus, const TTAMachine::FunctionUnit *srcFU, const TTAMachine::FunctionUnit *dstFU, int immWriteCycle, const TTAMachine::ImmediateUnit *immu, int immRegIndex) const
unsigned int initiationInterval_
bool hasResourceOf(const TTAMachine::MachinePart &mp) const
std::set< SchedulingResource * > ResourceSet
virtual const TTAMachine::MachinePart & machinePartOf(const SchedulingResource &r) const
void resources(ResourceSet &contents)
virtual int latestCycle(int cycle, const MoveNode &node, const TTAMachine::Bus *bus, const TTAMachine::FunctionUnit *srcFU, const TTAMachine::FunctionUnit *dstFU, int immWriteCycle, const TTAMachine::ImmediateUnit *immu, int immRegIndex) const =0
virtual SchedulingResource & availableResource(int cycle, const MoveNode &node, const TTAMachine::Bus *bus, const TTAMachine::FunctionUnit *srcFU, const TTAMachine::FunctionUnit *dstFU, int immWriteCycle, const TTAMachine::ImmediateUnit *immu, int immRegIndex) const
std::map< const MoveNode *, SchedulingResource *, MoveNode::Comparator > MoveResMap