NoCMapping Class Reference
#include <nocmapping.h>
Detailed Description
NoCMapping Container class NoC-based interconnect scheduling.
Constructor & Destructor Documentation
NoCMapping::NoCMapping | ( | NoCScheduler * | schedulingAlgo, | |
SDFflowType | type | |||
) |
NoCMapping () Constructor.
References appGraph, flowType, occupiedInBandwidthTile, occupiedOutBandwidthTile, platformGraph, scheduleProblems, xmlArchGraph, xmlMessagesSet, and xmlSystemUsage.
NoCMapping::~NoCMapping | ( | ) |
~NoCMapping () Destructor.
References occupiedInBandwidthTile, occupiedOutBandwidthTile, and scheduleProblems.
Member Function Documentation
addUsageNode () Create an XML node which describes the usage of the links in the interconnect. This node is added to the systemUsageNode supplied to the function. The systemUsageNode is also returned by the function. The function also updates the used incoming and outgoing bandwidth of the NIs inside the tiles based on the communication schedule.
References CAddNode(), CGetAttribute(), CGetChildNode(), CNextNode(), createUsageNode(), CSetAttribute(), ArchComponent::getId(), PlatformGraph::getTile(), occupiedInBandwidthTile, occupiedOutBandwidthTile, and platformGraph.
Referenced by SDF3Flow::createSDF3Node().
CNode * NoCMapping::createMappingNode | ( | ) |
createMappingNode () Create an XML node which describes the mapping of messages send over the interconnect to the resources in the interconnect.
References SetOfNoCScheduleProblems::createNetworkMappingNode(), SetOfNoCScheduleProblems::nrScheduleProblems(), and scheduleProblems.
Referenced by SDF3Flow::createSDF3Node().
CNode * NoCMapping::createNetworkNode | ( | ) |
createNetworkNode () Create an XML node which describes the structure of the interconnect graph.
References InterconnectGraph::createInterconnectGraphNode(), g, getFlowType(), SDFflowTypeMPFlow, and xmlArchGraph.
Referenced by SDF3Flow::createSDF3Node().
CNode * NoCMapping::createUsageNode | ( | ) |
createUsageNode () Create an XML node which describes the usage of the links in the interconnect.
References SetOfNoCScheduleProblems::createNetworkUsageNode(), SetOfNoCScheduleProblems::nrScheduleProblems(), and scheduleProblems.
Referenced by addUsageNode().
bool NoCMapping::extractCommunicationConstraints | ( | ) |
extractCommunicationConstraints () Extract communication scheduling problem from the bound and scheduled application SDFG.
References CRemoveNode(), getAppGraph(), getFlowType(), getPlatformGraph(), getSlotTableSize(), SDFstateSpaceTraceInterconnectCommunication::trace(), and xmlMessagesSet.
Referenced by SDF3Flow::extractCommunicationConstraints().
TimedSDFgraph* NoCMapping::getAppGraph | ( | ) | [inline, private] |
References appGraph.
Referenced by extractCommunicationConstraints().
SDFflowType NoCMapping::getFlowType | ( | ) | const [inline] |
References flowType.
Referenced by createNetworkNode(), and extractCommunicationConstraints().
CNode* NoCMapping::getMessages | ( | ) | [inline] |
References xmlMessagesSet.
Referenced by SDF3Flow::createSDF3Node().
CNode * NoCMapping::getNetworkNode | ( | ) | [private] |
getNetworkNode () The function return the network node from the XML architecture description.
References CGetChildNode(), CHasChildNode(), and xmlArchGraph.
Referenced by getSlotTableSize().
PlatformGraph* NoCMapping::getPlatformGraph | ( | ) | [inline, private] |
References platformGraph.
Referenced by extractCommunicationConstraints().
SetOfNoCScheduleProblems* NoCMapping::getSetOfNoCScheduleProblems | ( | ) | const [inline] |
References scheduleProblems.
Referenced by SDF3Flow::outputMappingAsHTML().
uint NoCMapping::getSlotTableSize | ( | ) |
getSlotTableSize () The function returns the slot-table size used in the NoC.
References CGetAttribute(), CHasAttribute(), and getNetworkNode().
Referenced by extractCommunicationConstraints().
void NoCMapping::init | ( | TimedSDFgraph * | app, | |
PlatformGraph * | platform, | |||
CNode * | archGraph, | |||
CNode * | systemUsage | |||
) |
init () The function initializes all data structures required for the NoC mapping. This function must be called prior to any of the actual NoC mapping functions.
References setAppGraph(), setPlatformGraph(), xmlArchGraph, and xmlSystemUsage.
Referenced by SDF3Flow::checkInputDesignFlow().
bool NoCMapping::scheduleCommunication | ( | ) |
scheduleCommunication () The function tries to find a valid scheduling function for the scheduling problem.
References SetOfNoCScheduleProblems::clear(), NoCScheduler::schedule(), scheduleProblems, schedulingAlgo, xmlArchGraph, xmlMessagesSet, and xmlSystemUsage.
Referenced by SDF3Flow::scheduleCommunication().
void NoCMapping::setAppGraph | ( | TimedSDFgraph * | g | ) | [inline, private] |
void NoCMapping::setPlatformGraph | ( | PlatformGraph * | g | ) | [inline, private] |
References platformGraph.
Referenced by init().
bool NoCMapping::updateBandwidthAllocations | ( | ) |
updateBandwidthAllocations () The function updates the bandwidth allocations made in the platform graph based on the actual requirements as given by the NoC scheduling function.
References InterconnectGraph::getFlitSize(), ArchComponent::getId(), NoCScheduleProblem::getInterconnectGraph(), ArchComponent::getName(), InterconnectGraph::getNode(), InterconnectGraph::getSlotTableSize(), Node::incomingLinksBegin(), Node::incomingLinksEnd(), SlotTable::isSlotFree(), logMsg(), PlatformGraph::nrTiles(), occupiedInBandwidthTile, occupiedOutBandwidthTile, Node::outgoingLinksBegin(), Node::outgoingLinksEnd(), platformGraph, scheduleProblems, SetOfNoCScheduleProblems::scheduleProblemsBegin(), SetOfNoCScheduleProblems::scheduleProblemsEnd(), Link::slotTableSeqBegin(), Link::slotTableSeqEnd(), PlatformGraph::tilesBegin(), PlatformGraph::tilesEnd(), and xmlArchGraph.
Referenced by SDF3Flow::updateBandwidthAllocations().
Member Data Documentation
TimedSDFgraph* NoCMapping::appGraph [private] |
Referenced by getAppGraph(), NoCMapping(), and setAppGraph().
SDFflowType NoCMapping::flowType [private] |
Referenced by getFlowType(), and NoCMapping().
double* NoCMapping::occupiedInBandwidthTile [private] |
Referenced by addUsageNode(), NoCMapping(), updateBandwidthAllocations(), and ~NoCMapping().
double* NoCMapping::occupiedOutBandwidthTile [private] |
Referenced by addUsageNode(), NoCMapping(), updateBandwidthAllocations(), and ~NoCMapping().
PlatformGraph* NoCMapping::platformGraph [private] |
Referenced by addUsageNode(), getPlatformGraph(), NoCMapping(), setPlatformGraph(), and updateBandwidthAllocations().
NoCScheduler* NoCMapping::schedulingAlgo [private] |
Referenced by scheduleCommunication().
CNode* NoCMapping::xmlArchGraph [private] |
Referenced by createNetworkNode(), getNetworkNode(), init(), NoCMapping(), scheduleCommunication(), and updateBandwidthAllocations().
CNode* NoCMapping::xmlMessagesSet [private] |
Referenced by extractCommunicationConstraints(), getMessages(), NoCMapping(), and scheduleCommunication().
CNode* NoCMapping::xmlSystemUsage [private] |
Referenced by init(), NoCMapping(), and scheduleCommunication().
The documentation for this class was generated from the following files: