33#include <boost/format.hpp>
50 unsigned int initiationInterval):
51 initiationInterval_(initiationInterval),
52 resourceMapper_(NULL),
82 for (ResourceMap::const_iterator resIter =
resMap_.begin();
83 resIter !=
resMap_.end(); resIter++) {
118 for (ResourceMap::const_iterator resIter =
resMap_.begin();
119 resIter !=
resMap_.end(); resIter++) {
128 string msg =
"No available resource found.";
165 int immRegIndex)
const {
168 immWriteCycle, immu, immRegIndex);
186 string msg =
"Machine part of for resource ";
188 msg +=
" not found!";
270 pair<const TTAMachine::MachinePart*, SchedulingResource*>(&mp, res));
280 for (ResourceMap::iterator i =
resMap_.begin(); i !=
resMap_.end(); ++i ) {
281 contents.insert(i->second);
330 ResourceMap::const_iterator itr =
resMap_.begin();
332 if (!(*itr).second->validateDependentGroups()) {
333 std::string msg = (boost::format(
334 "Broker '%s' failed to validate DependentGroup for '%s'!") %
338 if (!(*itr).second->validateRelatedGroups()){
339 std::string msg = (boost::format(
340 "Broker '%s' failed to validate RelatedGroup for '%s'!") %
367 for (ResourceMap::iterator i =
resMap_.begin(); i !=
resMap_.end(); i++) {
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 bool isExecutionPipelineBroker() const
MoveResMap assignedResources_
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)
bool hasResource(const SchedulingResource &r) const
ResourceBroker(std::string, unsigned int initiationInterval=0)
virtual ~ResourceBroker()
virtual bool isITemplateBroker() const
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
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
virtual const TTAMachine::MachinePart & machinePartOf(const SchedulingResource &r) const
void resources(ResourceSet &contents)
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
virtual bool canAssign(const int cycle, const MoveNode &node) const =0
virtual const std::string & name() const
virtual bool isAvailable(const int cycle) const =0