#include <problem.h>

Collaboration diagram for NoCScheduleProblem:

List of all members.

Public Member Functions

 NoCScheduleProblem (CString name, CNode *messagesNode, CNode *archGraphNode, CNode *systemUsageNode)
 ~NoCScheduleProblem ()
CString getName () const
InterconnectGraph * getInterconnectGraph () const
void addScheduleSwitchConstraint (NoCScheduleSwitchConstraint &s)
MessagesIter messagesBegin ()
MessagesIter messagesEnd ()
MessagesCIter messagesBegin () const
MessagesCIter messagesEnd () const
Messages & getMessages ()
NoCSchedulingEntitiesIter schedulingEntitiesBegin ()
NoCSchedulingEntitiesIter schedulingEntitiesEnd ()
uint nrSchedulingEntities () const
bool isProblemSolved () const
bool setSolvedFlag (bool flag)
void constrainOtherSchedulingProblem (NoCScheduleProblem *p)
NoCScheduleSwitchConstraintsIter scheduleSwitchConstraintsBegin ()
NoCScheduleSwitchConstraintsIter scheduleSwitchConstraintsEnd ()
void markPreferedSlots (InterconnectGraph *g)

Private Member Functions

void constructMessages (CNode *messagesNode, InterconnectGraph *archGraph)

Private Attributes

CString scheduleName
TTime schedulePeriod
InterconnectGraph * interconnectGraph
Messages messages
NoCScheduleSwitchConstraints scheduleSwitchConstraints
NoCSchedulingEntities schedulingEntities
bool solvedFlag

Detailed Description

NoCScheduleProblem A NoC scheduling problem (single set of messages)


Constructor & Destructor Documentation

NoCScheduleProblem::NoCScheduleProblem ( CString  name,
CNode *  messagesNode,
CNode *  archGraphNode,
CNode *  systemUsageNode 
)
NoCScheduleProblem::~NoCScheduleProblem (  ) 

~ScheduleProblem () Destructor.

References interconnectGraph, and messages.


Member Function Documentation

void NoCScheduleProblem::addScheduleSwitchConstraint ( NoCScheduleSwitchConstraint &  s  )  [inline]
void NoCScheduleProblem::constrainOtherSchedulingProblem ( NoCScheduleProblem *  p  ) 

constrainOtherSchedulingProblem () The function marks slots on links of the interconnect graph in the schedule problem p which it uses in its own schedule.

It is possible that the overlap between the schedules contains multiple periods of the source and/or destination schedule.

References _NoCScheduleSwitchConstraint::from, SlotTable::getEndTime(), getInterconnectGraph(), InterconnectGraph::getLink(), Link::getName(), getName(), InterconnectGraph::getSlotTablePeriod(), SlotTable::getStartTime(), SlotTable::getUsedSlotsOfSchedule(), interconnectGraph, isProblemSolved(), InterconnectGraph::linksBegin(), InterconnectGraph::linksEnd(), _NoCScheduleSwitchConstraint::overlap, schedulePeriod, scheduleSwitchConstraints, Link::setUsedSlots(), Link::slotTableSeqBegin(), Link::slotTableSeqEnd(), and _NoCScheduleSwitchConstraint::to.

Here is the call graph for this function:

void NoCScheduleProblem::constructMessages ( CNode *  messagesNode,
InterconnectGraph *  archGraph 
) [private]
bool NoCScheduleProblem::isProblemSolved (  )  const [inline]
void NoCScheduleProblem::markPreferedSlots ( InterconnectGraph *  g  ) 

markPreferedSlots () The function marks all slots in all links of the interconnect graph as prefered slots (with the maximal preference level - UINT_MAX) when this slot is used in the corresponding link of the interconnect graph g.

References Link::getId(), InterconnectGraph::getLink(), InterconnectGraph::getSlotTableSize(), interconnectGraph, InterconnectGraph::linksBegin(), InterconnectGraph::linksEnd(), and Link::preferredSlots.

Referenced by NoCScheduler::markPreferedSlotsOnLinks().

Here is the call graph for this function:

MessagesIter NoCScheduleProblem::messagesBegin (  )  [inline]
MessagesCIter NoCScheduleProblem::messagesBegin (  )  const [inline]

References messages.

MessagesIter NoCScheduleProblem::messagesEnd (  )  [inline]
MessagesCIter NoCScheduleProblem::messagesEnd (  )  const [inline]

References messages.

uint NoCScheduleProblem::nrSchedulingEntities (  )  const [inline]
NoCScheduleSwitchConstraintsIter NoCScheduleProblem::scheduleSwitchConstraintsBegin (  )  [inline]
NoCScheduleSwitchConstraintsIter NoCScheduleProblem::scheduleSwitchConstraintsEnd (  )  [inline]
NoCSchedulingEntitiesIter NoCScheduleProblem::schedulingEntitiesBegin (  )  [inline]
NoCSchedulingEntitiesIter NoCScheduleProblem::schedulingEntitiesEnd (  )  [inline]

Member Data Documentation


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