Go to the documentation of this file.
61 unsigned int initiationInterval) :
63 outputFUBroker_(fub), busBroker_(NULL), rm_(rm) {
93 string msg =
"Broker not capable of assigning resources to node!";
113 for (
int i = 0; i < rf.
portCount(); i++) {
117 if (outputSocket != NULL) {
129 for (
int i = 0; i < iu.
portCount(); i++) {
132 if (outputSocket != NULL) {
164 string msg =
"Broker not capable of assigning resources to node!";
185 for (
int i = 0; i < rf.
portCount(); i++) {
189 if (outputSocket != NULL) {
201 for (
int i = 0; i < iu.
portCount(); i++) {
204 if (outputSocket != NULL) {
245 string msg =
"Broker does not contain given resource.";
256 for (
int i = 0; i < socket.
portCount(); i++) {
265 port = socket.
port(i);
272 "Broker can not find necesary Port!");
280 std::pair<const MoveNode*, SchedulingResource*>(&node, &res));
297 MapTools::valueForKey<SchedulingResource*>(
381 if (res != NULL && res->
isInUse(cycle) &&
433 for (
int i = 0; i < navi.
count(); i++) {
435 if (socket->
direction() == Socket::OUTPUT) {
456 for (ResourceMap::iterator resIter =
resMap_.begin();
457 resIter !=
resMap_.end(); resIter++) {
460 static_cast<const Socket*
>((*resIter).first);
464 for (
int i = 0; i < socket->
portCount(); i++) {
477 std::string msg =
"OutputPSocketBroker: finding ";
478 msg +=
" resource for IU ";
479 msg +=
" failed with error: ";
495 std::string msg =
"OutputPSocketBroker: finding ";
496 msg +=
" resource for Segment ";
497 msg +=
" failed with error: ";
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 override
virtual bool isFUPort() const
Port * port(int index) const
unsigned int initiationInterval_
virtual TCEString name() const
virtual int index() const
SimpleResourceManager * rm_
ResourceBroker & outputFUBroker_
virtual const TTAMachine::RegisterFile & registerFile() const
virtual void unassign(const int cycle, MoveNode &node)=0
virtual void assign(int cycle, MoveNode &node, SchedulingResource &res, int immWriteCycle, int immRegIndex) override
virtual ~OutputPSocketBroker()
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 override
bool hasResource(const SchedulingResource &r) const
bool isSourceConstant() const
MoveResMap assignedResources_
Segment * segment(int index) const
SchedulingResource & resourceOf(const TTAMachine::MachinePart &mp, int index=0) const
Direction direction() const
void addResource(const TTAMachine::MachinePart &mp, SchedulingResource *res)
void setBusBroker(ResourceBroker &sb)
virtual bool isImmediateRegister() const
virtual bool isApplicable(const MoveNode &node, const TTAMachine::Bus *b) const override
void setResourceMapper(const ResourceMapper &mapper)
virtual void assign(const int cycle, MoveNode &node)=0
virtual void setupResourceLinks(const ResourceMapper &mapper) override
#define abortWithError(message)
virtual void addToRelatedGroup(const int group, SchedulingResource &resource)
virtual bool isAlreadyAssigned(int cycle, const MoveNode &node, const TTAMachine::Bus *preassignedBus) const override
virtual bool isGPR() const
std::string errorMessageStack(bool messagesOnly=false) const
SchedulingResource * resourceOf(const TTAMachine::MachinePart &mp) const
virtual const TTAMachine::ImmediateUnit & immediateUnit() const
OutputPSocketBroker(std::string name, ResourceBroker &ofb, SimpleResourceManager *, unsigned int initiationInterval=0)
virtual bool isInUse(const int cycle) const =0
virtual SocketNavigator socketNavigator() const
virtual void buildResources(const TTAMachine::Machine &target) override
virtual int portCount() const
bool hasAnnotations(ProgramAnnotation::Id id=ProgramAnnotation::ANN_UNDEF_ID) const
virtual void unassign(MoveNode &node) override
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 override
TTAProgram::Move & move()
virtual RFPort * port(const std::string &name) const
virtual bool canAssign(const int cycle, const MoveNode &node) const =0
virtual bool canTransportImmediate(const MoveNode &node, const TTAMachine::Bus *preAssignedBus=NULL) const
unsigned int instructionIndex(unsigned int) const
virtual Socket * outputSocket() const
Terminal & source() const
virtual const TTAMachine::MachinePart & machinePartOf(const SchedulingResource &r) const
virtual const TTAMachine::Port & port() const
ComponentType * item(int index) 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 override
void insert(SchedulingResource &resource)
ResourceBroker * busBroker_
void setSource(Terminal *src)
Unit * parentUnit() const