ClassicNoCScheduler Class Reference

#include <classic.h>

Inheritance diagram for ClassicNoCScheduler:
Collaboration diagram for ClassicNoCScheduler:

List of all members.

Public Member Functions

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

Private Member Functions

bool classic (const CSize maxDetour, const uint maxNrRipups)
bool findScheduleEntityForMessageUsingClassic (Message *m, const CSize maxDetour)
bool findSlotsOnRouteUsingClassic (NoCSchedulingEntity *e, SlotReservations &s)
void sortRoutesOnCostUsingClassic (Routes &routes, const TTime startTime, const TTime duration)

Private Attributes

CSize maxDetour
uint maxNrRipups

Detailed Description

ClassicNoCScheduler () Classic NoC scheduling algorithm

Constructor & Destructor Documentation

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

Member Function Documentation

bool ClassicNoCScheduler::classic ( const CSize  maxDetour,
const uint  maxNrRipups 
) [private]

classic () Classic NoC scheduling algorithm

References findScheduleEntityForMessageUsingClassic(), NoCScheduler::messagesBegin(), NoCScheduler::messagesEnd(), Message::print(), NoCScheduler::ripupStream(), and NoCScheduler::sortMessagesOnCost().

Referenced by solve().

Here is the call graph for this function:

bool ClassicNoCScheduler::findSlotsOnRouteUsingClassic ( NoCSchedulingEntity e,
SlotReservations s 
) [private]

findSlotsOnRouteUsingClassic () The function looks for a set of slots which can be reserved along the route such that flits entering a router leave it in the next slot and there is enough space to transmit both the data and the packatization headers. On success, the slot reservations for the first link of the route are stored in s and the function returns true. On failure, the function returns false. The function tries to minimize the number of packets used. The classic reservation technique assumes that reconfiguration is not possible and slots cannot be shared amongst streams.

References Packet::endTime, NoCScheduler::findFreePackets(), NoCScheduler::findFreeSlotsForStream(), NoCScheduler::findSlotsAllocatedForStream(), NoCSchedulingEntity::getDuration(), NoCScheduler::getInterconnectGraph(), NoCSchedulingEntity::getMessage(), NoCSchedulingEntity::getRoute(), Message::getSize(), InterconnectGraph::getSlotTableSize(), NoCSchedulingEntity::getStartTime(), Packet::loop, Packet::nrSlots, NoCScheduler::nrSlotsRequired(), and Packet::startTime.

Referenced by findScheduleEntityForMessageUsingClassic().

Here is the call graph for this function:

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

Implements NoCScheduler.

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

Here is the call graph for this function:

void ClassicNoCScheduler::sortRoutesOnCostUsingClassic ( Routes routes,
const TTime  startTime,
const TTime  duration 
) [private]

sortRoutesOnCostUsingClassic () The function sorts all routes using a cost function with cost from high to low. The cost is determined by the minimum number of free slots available overall links within the given time bounds.

References SlotTable::getEndTime(), NoCScheduler::getInterconnectGraph(), SlotTable::getNrFreeSlots(), InterconnectGraph::getSlotTablePeriod(), InterconnectGraph::getSlotTableSize(), SlotTable::getStartTime(), Route::linksBegin(), Route::linksEnd(), Route::setCost(), Link::slotTableSeqBegin(), and Link::slotTableSeqEnd().

Referenced by findScheduleEntityForMessageUsingClassic().

Here is the call graph for this function:

Member Data Documentation

Referenced by solve().

Referenced by solve().

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