KnowledgeNoCScheduler Class Reference

#include <knowledge.h>

Inheritance diagram for KnowledgeNoCScheduler:
Collaboration diagram for KnowledgeNoCScheduler:

List of all members.

Public Member Functions

 KnowledgeNoCScheduler (const CSize maxDetour, const uint maxNrRipups)
 ~KnowledgeNoCScheduler ()
bool solve ()

Private Member Functions

bool knowledge (const CSize maxDetour, const uint maxNrRipups)
void setRequirementsMessages (LinksReqs &linksReqs)
void setRequirementsMessage (Message *m, LinksReqs &linksReqs)
void updateRequirementsLink (const TTime startTime, const TTime endTime, const bool loopPeriod, const uint nrSlotsReq, LinkReqs &lReqs)
double costLinkForMessage (Message *m, LinkReqs &linkReqs)
bool findScheduleEntityForMessageUsingKnowledge (Message *m, const CSize maxDetour, LinksReqs &linksReqs)
void sortRoutesOnMessageRequirements (Message *m, LinksReqs &linksReqs, Routes &routes)

Private Attributes

CSize maxDetour
uint maxNrRipups

Detailed Description

KnowledgeNoCScheduler () Knowledge NoC scheduling algorithm

Constructor & Destructor Documentation

KnowledgeNoCScheduler::KnowledgeNoCScheduler ( const CSize  maxDetour,
const uint  maxNrRipups 
) [inline]
KnowledgeNoCScheduler::~KnowledgeNoCScheduler (  )  [inline]

Member Function Documentation

double KnowledgeNoCScheduler::costLinkForMessage ( Message m,
LinkReqs linkReqs 
) [private]

costLinkForMessage () The cost for using a link by a message is the maximum number of slots allocated in the time period within which the message can be sent.

References _LinkReq::endTime, Message::getDuration(), NoCScheduler::getInterconnectGraph(), InterconnectGraph::getSlotTablePeriod(), Message::getStartTime(), _LinkReq::nrSlotsReq, and _LinkReq::startTime.

Referenced by sortRoutesOnMessageRequirements().

Here is the call graph for this function:

bool KnowledgeNoCScheduler::findScheduleEntityForMessageUsingKnowledge ( Message m,
const CSize  maxDetour,
LinksReqs linksReqs 
) [private]
bool KnowledgeNoCScheduler::knowledge ( const CSize  maxDetour,
const uint  maxNrRipups 
) [private]
void KnowledgeNoCScheduler::setRequirementsMessage ( Message m,
LinksReqs linksReqs 
) [private]

setRequirementsMessage () The function computes the requirements for a message and updates the information in the requirements on the links (i.e. nr of slots needed on links)

References NoCScheduler::findAllRoutes(), Message::getDstNodeId(), Message::getDuration(), Link::getId(), NoCScheduler::getInterconnectGraph(), InterconnectGraph::getNode(), Message::getSize(), InterconnectGraph::getSlotTablePeriod(), Message::getSrcNodeId(), Message::getStartTime(), Route::linksBegin(), Route::linksEnd(), NoCScheduler::nrSlotsRequired(), and updateRequirementsLink().

Referenced by setRequirementsMessages().

Here is the call graph for this function:

void KnowledgeNoCScheduler::setRequirementsMessages ( LinksReqs linksReqs  )  [private]

setRequirementsMessages () The function computes the requirements for all messages and store them in the array linksReqs which contains the requirements for all links in the architecture graph.

References _LinkReq::endTime, NoCScheduler::getInterconnectGraph(), InterconnectGraph::getSlotTablePeriod(), NoCScheduler::messagesBegin(), NoCScheduler::messagesEnd(), InterconnectGraph::nrLinks(), _LinkReq::nrSlotsReq, setRequirementsMessage(), and _LinkReq::startTime.

Referenced by knowledge().

Here is the call graph for this function:

bool KnowledgeNoCScheduler::solve (  )  [inline, virtual]

Implements NoCScheduler.

References NoCScheduler::getSchedulingProblem(), knowledge(), maxDetour, maxNrRipups, and NoCScheduleProblem::setSolvedFlag().

Here is the call graph for this function:

void KnowledgeNoCScheduler::sortRoutesOnMessageRequirements ( Message m,
LinksReqs linksReqs,
Routes routes 
) [private]

sortRoutesOnMessageRequirements () Sort a set of routes based on the resource requirements a message has on the links. Routes are sorted from least used route to heaviest used route.

References costLinkForMessage(), Link::getId(), Route::linksBegin(), Route::linksEnd(), and Route::setCost().

Referenced by findScheduleEntityForMessageUsingKnowledge().

Here is the call graph for this function:

void KnowledgeNoCScheduler::updateRequirementsLink ( const TTime  startTime,
const TTime  endTime,
const bool  loopPeriod,
const uint  nrSlotsReq,
LinkReqs lReqs 
) [private]

updateRequirementsLink () Add the slot requirements (nrSlotsReq) to the correct time intervals for the link requirements 'lReqs'.

References _LinkReq::endTime, _LinkReq::nrSlotsReq, and _LinkReq::startTime.

Referenced by setRequirementsMessage().

Member Data Documentation

The documentation for this class was generated from the following files: