#include <flow.h>

Collaboration diagram for SDF3Flow:

List of all members.

Public Types

enum  FlowState {
  FlowStart, FlowModelNonLocalMemory, FlowComputeStorageDist, FlowSelectStorageDist,
  FlowEstimateStorageDist, FlowEstimateLatencyConstraint, FlowEstimateBandwidthConstraint, FlowBindSDFGtoTile,
  FlowStaticOrderScheduleTiles, FlowAllocateTDMAtimeSlices, FlowOptimizeStorageSpaceAllocations, FlowExtractCommunicationConstraints,
  FlowScheduleCommunication, FlowUpdateBandwidthAllocations, FlowCompleted, FlowFailed
}

Public Member Functions

 SDF3Flow (SDFflowType type, CNode *xmlAppGraph, CNode *xmlArchGraph, CNode *xmlSystemUsage)
 ~SDF3Flow ()
SDFflowType getFlowType () const
FlowState run ()
bool getStepMode () const
void setStepMode (bool flag)
void setTileMappingAlgo (TileMapping *a)
void setNoCMappingAlgo (NoCMapping *a)
CNodecreateSDF3Node ()
void outputMappingAsXML (ostream &out)
void outputMappingAsHTML ()

Private Member Functions

TimedSDFgraphgetAppGraph ()
TimedSDFgraphcreateAppGraph (CNode *xmlAppGraph)
PlatformGraphgetPlatformGraph ()
PlatformGraphcreatePlatformGraph (CNode *xmlPlatformGraph)
void setSystemUsagePlatformGraph (PlatformGraph *g, CNode *systemUsage)
void setNextStateOfFlow (FlowState s)
FlowState getStateOfFlow ()
void checkInputDesignFlow ()
void modelNonLocalMemoryAccesses ()
void computeStorageDistributions ()
void selectStorageDistribution ()
void estimateStorageConstraints ()
void estimateLatencyConstraints ()
void estimateBandwidthConstraints ()
void bindSDFGtoTiles ()
void constructStaticOrderScheduleTiles ()
void allocateTDMAtimeSlices ()
void optimizeStorageSpaceAllocations ()
void extractCommunicationConstraints ()
void scheduleCommunication ()
void updateBandwidthAllocations ()
void handleUserInteraction ()
CNodecreateStorageDistributionsNode (StorageDistributionSet *distributions)

Private Attributes

SDFflowType flowType
bool stepMode
CNodexmlAppGraph
CNodexmlArchGraph
CNodexmlSystemUsage
TimedSDFgraphappGraph
PlatformGraphplatformGraph
TileMappingtileMapping
NoCMappingnocMapping
FlowState stateOfFlow
SDFstateSpaceBufferAnalysis bufferAnalysisAlgo
StorageDistributionSetminStorageDistributions
StorageDistributionSetselectedStorageDistributionSet
StorageDistributionselectedStorageDistribution

Detailed Description

SDFG mapping to MP-SoC flow


Member Enumeration Documentation

Enumerator:
FlowStart 
FlowModelNonLocalMemory 
FlowComputeStorageDist 
FlowSelectStorageDist 
FlowEstimateStorageDist 
FlowEstimateLatencyConstraint 
FlowEstimateBandwidthConstraint 
FlowBindSDFGtoTile 
FlowStaticOrderScheduleTiles 
FlowAllocateTDMAtimeSlices 
FlowOptimizeStorageSpaceAllocations 
FlowExtractCommunicationConstraints 
FlowScheduleCommunication 
FlowUpdateBandwidthAllocations 
FlowCompleted 
FlowFailed 

Constructor & Destructor Documentation

SDF3Flow::SDF3Flow ( SDFflowType  type,
CNode xmlAppGraph,
CNode xmlArchGraph,
CNode xmlSystemUsage 
)
SDF3Flow::~SDF3Flow (  ) 

~SDF3Flow () Destructor.

References appGraph, nocMapping, platformGraph, and tileMapping.


Member Function Documentation

void SDF3Flow::allocateTDMAtimeSlices (  )  [private]

allocateTDMAtimeSlices () Allocate TDMA time slices on the processors executing actors from the application.

References Binding::allocateTDMAtimeSlices(), FlowOptimizeStorageSpaceAllocations, FlowSelectStorageDist, logInfo(), setNextStateOfFlow(), and tileMapping.

Referenced by run().

Here is the call graph for this function:

void SDF3Flow::bindSDFGtoTiles (  )  [private]

bindSDFGtoTiles () Bind actor and channels of the SDFG to the tile resources.

References Binding::bindSDFGtoTiles(), FlowSelectStorageDist, FlowStaticOrderScheduleTiles, logInfo(), Binding::releaseResources(), setNextStateOfFlow(), and tileMapping.

Referenced by run().

Here is the call graph for this function:

void SDF3Flow::checkInputDesignFlow (  )  [private]

checkInputDesignFlow () The function checks that all required inputs are present and it initializes the used data-structures.

References FlowModelNonLocalMemory, getAppGraph(), getPlatformGraph(), NoCMapping::init(), logInfo(), nocMapping, Binding::setAppGraph(), Binding::setArchGraph(), setNextStateOfFlow(), tileMapping, xmlArchGraph, and xmlSystemUsage.

Referenced by run().

Here is the call graph for this function:

void SDF3Flow::constructStaticOrderScheduleTiles (  )  [private]

constructStaticOrderScheduleTiles () Constrauct static-order schedule for every tile to which actors are bound.

References Binding::constructStaticOrderScheduleTiles(), FlowAllocateTDMAtimeSlices, FlowFailed, logInfo(), setNextStateOfFlow(), and tileMapping.

Referenced by run().

Here is the call graph for this function:

TimedSDFgraph * SDF3Flow::createAppGraph ( CNode xmlAppGraph  )  [private]

createAppGraph () The function creates an timed SDFG according to the XML specification.

References CGetChildNode(), TimedSDFgraph::construct(), and g.

Referenced by SDF3Flow().

Here is the call graph for this function:

PlatformGraph * SDF3Flow::createPlatformGraph ( CNode xmlPlatformGraph  )  [private]

createPlatformGraph () The function creates a platform graph according to the XML specification.

References constructPlatformGraph().

Referenced by SDF3Flow().

Here is the call graph for this function:

CNode * SDF3Flow::createStorageDistributionsNode ( StorageDistributionSet distributions  )  [private]

createStorageDistributionsNode () The function returns an XML node that describes the storage-space throughput trade-off points.

References appGraph, CAddAttribute(), CAddNode(), CNewNode(), SDFgraph::getChannel(), SDFcomponent::getName(), _StorageDistribution::next, SDFgraph::nrChannels(), and _StorageDistribution::sp.

Referenced by createSDF3Node().

Here is the call graph for this function:

void SDF3Flow::estimateBandwidthConstraints (  )  [private]
void SDF3Flow::extractCommunicationConstraints (  )  [private]

extractCommunicationConstraints () Extract communication scheduling problem from the bound and scheduled application.

References NoCMapping::extractCommunicationConstraints(), FlowFailed, FlowScheduleCommunication, logInfo(), nocMapping, and setNextStateOfFlow().

Referenced by run().

Here is the call graph for this function:

SDFflowType SDF3Flow::getFlowType (  )  const [inline]
PlatformGraph* SDF3Flow::getPlatformGraph (  )  [inline, private]
FlowState SDF3Flow::getStateOfFlow (  )  [inline, private]

References stateOfFlow.

Referenced by run().

bool SDF3Flow::getStepMode (  )  const [inline]

References stepMode.

Referenced by run().

void SDF3Flow::handleUserInteraction (  )  [private]

handleUserInteraction () The function request the user for the next action to perform. Possible actions include continuing with the next step of the flow, completing the remaining flow or printing the current result of the flow to the terminal.

References c, outputMappingAsHTML(), outputMappingAsXML(), and setStepMode().

Referenced by run().

Here is the call graph for this function:

void SDF3Flow::modelNonLocalMemoryAccesses (  )  [private]

modelNonLocalMemoryAccesses () Model non-local memory accesses in the application graph.

References FlowComputeStorageDist, and setNextStateOfFlow().

Referenced by run().

Here is the call graph for this function:

void SDF3Flow::optimizeStorageSpaceAllocations (  )  [private]

optimizeStorageSpaceAllocations () Optimize the storage space allocations.

References FlowCompleted, FlowExtractCommunicationConstraints, FlowFailed, getFlowType(), logInfo(), Binding::optimizeStorageSpaceAllocations(), setNextStateOfFlow(), and tileMapping.

Referenced by run().

Here is the call graph for this function:

void SDF3Flow::outputMappingAsHTML (  ) 
void SDF3Flow::outputMappingAsXML ( ostream &  out  ) 

outputMappingAsXML () The function ouputs an sdf3 node to the supplied stream.

References CNewDoc(), createSDF3Node(), and CSaveFile().

Referenced by handleUserInteraction(), and mapApplicationGraphToArchitectureGraph().

Here is the call graph for this function:

void SDF3Flow::scheduleCommunication (  )  [private]

scheduleCommunication () The function tries to find a valid schedule function for the communication scheduling problem.

References FlowSelectStorageDist, FlowUpdateBandwidthAllocations, logInfo(), nocMapping, NoCMapping::scheduleCommunication(), and setNextStateOfFlow().

Referenced by run().

Here is the call graph for this function:

void SDF3Flow::setNoCMappingAlgo ( NoCMapping a  )  [inline]
void SDF3Flow::setStepMode ( bool  flag  )  [inline]
void SDF3Flow::setSystemUsagePlatformGraph ( PlatformGraph g,
CNode systemUsage 
) [private]

setSystemUsagePlatformGraph () The function sets the usage of the platform graph as specified in the XML specs.

References setUsagePlatformGraph().

Referenced by SDF3Flow().

Here is the call graph for this function:

void SDF3Flow::setTileMappingAlgo ( TileMapping a  )  [inline]
void SDF3Flow::updateBandwidthAllocations (  )  [private]

updateBandwidthAllocations () The function computes the minimal amount of bandwidth needed on the NIs and it updates these allocations accordingly.

References FlowCompleted, FlowFailed, logInfo(), nocMapping, setNextStateOfFlow(), and NoCMapping::updateBandwidthAllocations().

Referenced by run().

Here is the call graph for this function:


Member Data Documentation

Referenced by getFlowType().

bool SDF3Flow::stepMode [private]

Referenced by getStepMode(), SDF3Flow(), and setStepMode().


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