#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
InterconnectGraphgetInterconnectGraph () const
void addScheduleSwitchConstraint (NoCScheduleSwitchConstraint &s)
MessagesIter messagesBegin ()
MessagesIter messagesEnd ()
MessagesCIter messagesBegin () const
MessagesCIter messagesEnd () const
MessagesgetMessages ()
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
InterconnectGraphinterconnectGraph
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: