SDFstateSpaceTraceInterconnectCommunication::TransitionSystem Class Reference

Collaboration diagram for SDFstateSpaceTraceInterconnectCommunication::TransitionSystem:

List of all members.


struct  _Token
class  State

Public Types

typedef list< StateStates
typedef States::iterator StatesIter

Public Member Functions

 TransitionSystem (BindingAwareSDFG *bg, PlatformGraph *pg)
 ~TransitionSystem ()
CNodetraceCommunication (uint slotTableSize)

Private Types

typedef struct

Private Member Functions

TTime execSDFgraph ()
bool storeState (State &s, StatesIter &pos)
void clearStoredStates ()
void initTracing ()
TTime computeLengthPeriodicPhase (const StatesIter cycleIter)
void traceConsumptionToken (const CId &ch, const uint &rate, const SDFtime &delay)
void traceProductionToken (const CId &ch, const uint &rate)
void traceAdvanceClocks (const SDFtime step)
bool isTracingCompleted ()
void traceMarkTokensInPeriodicPhase ()
bool actorReadyToFire (SDFactor *a)
void startActorFiring (TimedSDFactor *a)
bool actorReadyToEnd (SDFactor *a)
void endActorFiring (SDFactor *a)
SDFtime clockStep ()
TTime traceMessagesTransient (TTime shiftStartTransPhase, TTime shiftEndTransPhase, CNode *msgTransNode)
TTime traceMessagesPeriodic (TTime duplicationPeriodicPhase, TTime lengthPeriodicPhase, CNode *msgPeriodicNode)
void computeScheduleExtensions (TTime lengthPeriodicPhase, uint slotTableSize, TTime *shiftStartTransPhase, TTime *shiftEndTransPhase, TTime *duplicationPeriodicPhase)
CNodetraceConstructMessages (uint slotTableSize, TTime lengthPeriodicPhase)
void initOutputActor ()
void checkBindingAwareSDFG ()

Private Attributes

TCnt outputActorRepCnt
State currentState
State previousState
States storedStates
bool * isChannelTraced
bool foundPeriodicState
State periodicState
Token ** lastProdTokenCh
Token ** nextConsTokenCh
Token ** firstTokenCh

Member Typedef Documentation

Constructor & Destructor Documentation

SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::TransitionSystem ( BindingAwareSDFG bg,
PlatformGraph pg 
) [inline]

References bindingAwareSDFG, checkBindingAwareSDFG(), initOutputActor(), initTracing(), and platformGraph.

Here is the call graph for this function:

SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::~TransitionSystem (  ) 

Member Function Documentation

bool SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::actorReadyToEnd ( SDFactor a  )  [private]

actorReadyToEnd () The function returns true when the actor is ready to end its firing. Else the function returns false.

References SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::State::actClk, currentState, and SDFcomponent::getId().

Referenced by execSDFgraph().

Here is the call graph for this function:

bool SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::actorReadyToFire ( SDFactor a  )  [private]

actorReadyToFire () The function returns true when the actor is ready to fire in state s. Else it returns false.

References bindingAwareSDFG, c, CH_TOKENS, BindingAwareSDFG::getBindingOfActorToTile(), SDFport::getChannel(), SDFcomponent::getId(), SDFport::getRate(), SDFport::getType(), SDFactor::portsBegin(), SDFactor::portsEnd(), and SOS_ENTRY.

Referenced by execSDFgraph().

Here is the call graph for this function:

void SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::checkBindingAwareSDFG (  )  [private]

checkBindingAwareSDFG () The function performs some sanity checks on the binding-aware SDFG

References ACTOR_NOT_BOUND, SDFgraph::actorsBegin(), SDFgraph::actorsEnd(), bindingAwareSDFG, BindingAwareSDFG::getBindingOfActorToTile(), and BindingAwareSDFG::getScheduleOnTile().

Referenced by TransitionSystem().

Here is the call graph for this function:

void SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::clearStoredStates (  )  [inline, private]

References storedStates.

Referenced by execSDFgraph().

SDFtime SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::clockStep (  )  [private]

clockStep () The function progresses time till the first end of firing transition becomes enabled. The time step is returned. In case of deadlock, the time step is equal to UINT_MAX.

References a, SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::State::actClk, bindingAwareSDFG, currentState, BindingAwareSDFG::getTDMAsizeOnTile(), SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::State::glbClk, SDFgraph::nrActors(), BindingAwareSDFG::nrTilesInPlatformGraph(), SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::State::tdmaPos, and traceAdvanceClocks().

Referenced by execSDFgraph().

Here is the call graph for this function:

TTime SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::computeLengthPeriodicPhase ( const StatesIter  cycleIter  )  [private]

computeLengthPeriodicPhase () The function returns the length (in time-units) of the periodic phase.

References SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::State::glbClk, and storedStates.

Referenced by execSDFgraph().

void SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::computeScheduleExtensions ( TTime  lengthPeriodicPhase,
uint  slotTableSize,
TTime shiftStartTransPhase,
TTime shiftEndTransPhase,
TTime duplicationPeriodicPhase 
) [private]

computeScheduleExtensions () The periodic behavior with which messages are communicated may not be a multiple of the slot-table size. The same may hold for the overlap between the transient and periodic phase. The NoC scheduling algorithm requires that both the periods and the overlap are a multiple of the slot table. This is needed to guarantee a contention-free schedule of the messages. This requirement can be met by shifting the start and end time of the transient schedule and duplicating the periodic schedule for a integer number of times. The function computes the required extensions and duplication.

References bindingAwareSDFG, SDFgraph::channelsBegin(), SDFgraph::channelsEnd(), SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::_Token::consTime, dstTileCh, firstToken, firstTokenCh, SDFcomponent::getId(), Tile::getProcessor(), Processor::getReservedTimeSlice(), PlatformGraph::getTile(), Processor::getTimewheelSize(), SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::_Token::inPeriodicPhase, isChannelTraced, lcm(), SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::_Token::next, SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::_Token::nextInChannel, platformGraph, and SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::_Token::prodTime.

Referenced by traceConstructMessages().

Here is the call graph for this function:

void SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::endActorFiring ( SDFactor a  )  [private]

endActorFiring () Produce tokens on all output channels and remove the actor firing from the list of active firings.

References SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::State::actClk, bindingAwareSDFG, c, currentState, BindingAwareSDFG::getBindingOfActorToTile(), SDFport::getChannel(), SDFcomponent::getId(), SDFport::getRate(), SDFport::getType(), SDFactor::portsBegin(), SDFactor::portsEnd(), PRODUCE, SOS_NEXT_POS, SOS_POS, and traceProductionToken().

Referenced by execSDFgraph().

Here is the call graph for this function:

void SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::initOutputActor (  )  [private]

initOutputActor () The function selects an actor to be used as output actor in the state transition system.

References a, SDFgraph::actorsBegin(), SDFgraph::actorsEnd(), bindingAwareSDFG, FSMSADF::computeRepetitionVector(), SDFcomponent::getId(), outputActor, and outputActorRepCnt.

Referenced by TransitionSystem().

Here is the call graph for this function:

bool SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::isTracingCompleted (  )  [private]

isTracingCompleted () The function checks wether the tracing of all tokens is completed. On completion, it returns true. Else it returns false. The tracing is completed once the periodic state is found and all tokens produced till this state is found are also consumed.

References bindingAwareSDFG, foundPeriodicState, nextConsTokenCh, and SDFgraph::nrChannels().

Referenced by execSDFgraph().

Here is the call graph for this function:

void SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::startActorFiring ( TimedSDFactor a  )  [private]
bool SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::storeState ( State s,
StatesIter pos 
) [private]

storeState () The function stores the state s on whenever s is not already in the list of storedStates. When s is stored, the function returns true. When the state s is already in the list, the state s is not stored. The function returns false. The function always sets the pos variable to the position where the state s is in the list.

References storedStates.

Referenced by execSDFgraph().

void SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::traceAdvanceClocks ( const SDFtime  step  )  [private]

traceAdvanceClocks () The function increases the clocks of all tiles with one time unit.

References bindingAwareSDFG, BindingAwareSDFG::nrTilesInPlatformGraph(), and tileClock.

Referenced by clockStep().

Here is the call graph for this function:

CNode * SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::traceCommunication ( uint  slotTableSize  ) 

traceCommunication () The function generates a trace of all communication over the interconnect of a mapped and scheduled SDFG on a NoC-based platform. The relation between the communication in the transient and periodic part of the schedule is also included.

References execSDFgraph(), and traceConstructMessages().

Referenced by SDFstateSpaceTraceInterconnectCommunication::trace().

Here is the call graph for this function:

CNode * SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::traceConstructMessages ( uint  slotTableSize,
TTime  lengthPeriodicPhase 
) [private]

traceConstructMessages () The function returns two sets of messages. One set contains all tokens (messages) which belong to the transient part of the execution. The other set contains all tokens which belong to the periodic part of the execution.

References bindingAwareSDFG, CAddAttribute(), CAddNode(), CNewNode(), computeScheduleExtensions(), SDFcomponent::getName(), traceMarkTokensInPeriodicPhase(), traceMessagesPeriodic(), and traceMessagesTransient().

Referenced by traceCommunication().

Here is the call graph for this function:

void SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::traceConsumptionToken ( const CId ch,
const uint rate,
const SDFtime delay 
) [private]
void SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::traceMarkTokensInPeriodicPhase (  )  [private]

traceMarkTokensInPeriodicPhase () The function must be called after the SDFG is executed. It marks all tokens as beloning to the periodic phase or not.

References firstToken, SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::_Token::inPeriodicPhase, SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::_Token::next, periodicState, and SDFstateSpaceTraceInterconnectCommunication::TransitionSystem::_Token::state.

Referenced by traceConstructMessages().

Member Data Documentation

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