|
| PLUGIN_DESCRIPTION ("Explorer plugin that produces a clustered machine with N lanes/nodes " "and an 'extras' node.") |
|
| ADFCombiner () |
|
virtual bool | requiresStartingPointArchitecture () const |
|
virtual bool | producesArchitecture () const |
|
virtual bool | requiresHDB () const |
|
virtual bool | requiresSimulationData () const |
|
virtual bool | requiresApplication () const |
|
virtual std::vector< RowID > | explore (const RowID &, const unsigned int &) |
|
void | readParameters () |
|
GuardSet | findGuards (TTAMachine::Machine *mach) |
|
void | addComponents (TTAMachine::Machine *finalMach, TTAMachine::Machine *nodeMach, TTAMachine::Machine *extraMach, unsigned nodeCount) |
|
TCEString | nodeNamePrefix (int nodeId) |
|
void | addAllGuardsToConnectionBuses (TTAMachine::Machine *finalMach, const BusVector &connectionBuses) |
|
void | addGuardsToBuses (std::map< Bus *, std::pair< Bus *, int > > &busMapping, GuardSet &extrasGuards) |
|
void | addBuses (TTAMachine::Machine *finalMach, TTAMachine::Machine *nodeMach, unsigned nodeCount, std::map< Bus *, std::pair< Bus *, int > > &busMapping) |
|
void | addRegisterFiles (TTAMachine::Machine *finalMach, TTAMachine::Machine *nodeMach, unsigned nodeCount) |
|
void | addFunctionUnits (TTAMachine::Machine *finalMach, TTAMachine::Machine *nodeMach, unsigned nodeCount) |
|
void | connectPorts (TTAMachine::Machine *finalMach, TTAMachine::Unit *original, TTAMachine::Unit *newUnit, int count) |
|
void | addAddressSpaces (TTAMachine::Machine *finalMach, TTAMachine::Machine *nodeMach) |
|
void | connectRegisterFiles (TTAMachine::Machine *finalMach, TTAMachine::Machine *nodeMach, TTAMachine::Machine *extraMach, unsigned nodeCount, std::set< TTAMachine::Guard *, TTAMachine::MachinePart::Comparator > extrasGuards, BusVector &connectionBuses) |
|
TTAMachine::Bus * | createBus (TTAMachine::Machine *finalMach, TCEString busName, int width) |
|
void | createPortsAndSockets (TTAMachine::Machine *finalMach, TTAMachine::RegisterFile *rf, TTAMachine::Bus *newBus, TCEString name, bool readOnly, int nodeNumber=-1) |
|
bool | connectVectorLSU (TTAMachine::Machine *finalMach, TTAMachine::Machine *nodeMach, TTAMachine::Machine *extraMach, int nodeCount) |
|
void | renameExtraUnits (TTAMachine::Machine *finalMach) |
|
TCEString | getNodeComponentName (TCEString originalName, int idx) |
|
TCEString | getExtraComponentName (TCEString originalName) |
|
void | copyGuards (TTAMachine::Bus &originalBus, TTAMachine::Bus &addBus, const TCEString &prefix) |
|
|
typedef std::pair< std::string, ExplorerPluginParameter > | Parameter |
|
typedef std::map< std::string, ExplorerPluginParameter > | ParameterMap |
|
typedef std::map< std::string, ExplorerPluginParameter >::iterator | PMIt |
|
typedef std::map< std::string, ExplorerPluginParameter >::const_iterator | PMCIt |
|
virtual std::string | description () const |
|
void | addParameter (TCEString name, ExplorerPluginParameterType type, bool compulsory=true, TCEString defaultValue="", TCEString description="") |
|
template<typename T > |
void | readCompulsoryParameter (const std::string paramName, T ¶m) const |
|
template<typename T > |
void | readOptionalParameter (const std::string paramName, T ¶m) const |
|
template<typename RT > |
RT | parameterValue (const std::string ¶mName) const |
|
virtual | ~DesignSpaceExplorerPlugin () |
|
virtual void | giveParameter (const std::string &name, const std::string &value) |
|
virtual std::string | name () const |
|
virtual void | setPluginName (const std::string &pluginName) |
|
virtual bool | hasParameter (const std::string ¶mName) const |
|
ParameterMap | parameters () const |
|
virtual bool | booleanValue (const std::string ¶meter) const |
|
| DesignSpaceExplorer () |
|
virtual | ~DesignSpaceExplorer () |
|
virtual void | setDSDB (DSDBManager &dsdb) |
|
virtual bool | evaluate (const DSDBManager::MachineConfiguration &configuration, CostEstimates &results=dummyEstimate_, bool estimate=false) |
|
virtual DSDBManager & | db () |
|
std::vector< DesignSpaceExplorerPlugin * > | getPlugins () |
|
RowID | createImplementationAndStore (const DSDBManager::MachineConfiguration &conf, const double &frequency=0.0, const double &maxArea=0.0, const bool &createEstimates=true, const std::string &icDec="DefaultICDecoder", const std::string &icDecHDB="asic_130nm_1.5V.hdb") |
|
bool | createImplementation (const DSDBManager::MachineConfiguration &conf, DSDBManager::MachineConfiguration &newConf, const double &frequency=0.0, const double &maxArea=0.0, const bool &createEstimates=true, const std::string &icDec="DefaultICDecoder", const std::string &icDecHDB="asic_130nm_1.5V.hdb") |
|
IDF::MachineImplementation * | selectComponents (const TTAMachine::Machine &mach, const double &frequency=0.0, const double &maxArea=0.0, const std::string &icDec="DefaultICDecoder", const std::string &icDecHDB="asic_130nm_1.5V.hdb") const |
|
void | createEstimateData (const TTAMachine::Machine &mach, const IDF::MachineImplementation &idf, CostEstimator::AreaInGates &area, CostEstimator::DelayInNanoSeconds &longestPathDelay) |
|
RowID | addConfToDSDB (const DSDBManager::MachineConfiguration &conf) |
|
static DesignSpaceExplorerPlugin * | loadExplorerPlugin (const std::string &pluginName, DSDBManager *dsdb=NULL) |
|
| DesignSpaceExplorerPlugin () |
|
void | checkParameters () const |
|
TTAProgram::Program * | schedule (const std::string applicationFile, TTAMachine::Machine &machine, TCEString paramOptions="-O3") |
|
const ExecutionTrace * | simulate (const TTAProgram::Program &program, const TTAMachine::Machine &machine, const TestApplication &testApplication, const ClockCycleCount &maxCycles, ClockCycleCount &runnedCycles, const bool tracing, const bool useCompiledSimulation=false, std::vector< ClockCycleCount > *executionCounts=NULL) |
|
std::string | pluginName_ |
| the name of the explorer plugin More...
|
|
ParameterMap | parameters_ |
| Parameters for the plugin. More...
|
|
Explorer plugin that adds machine components to a given machine.
Definition at line 60 of file ADFCombiner.cc.
◆ BusVector
◆ GuardSet
◆ ADFCombiner()
ADFCombiner::ADFCombiner |
( |
| ) |
|
|
inlineprivate |
◆ addAddressSpaces()
◆ addAllGuardsToConnectionBuses()
◆ addBuses()
Adds buses and sockets to the machine.
Definition at line 399 of file ADFCombiner.cc.
408 for (
unsigned j = 0; j < nodeCount; j++) {
409 bool socketsCreated =
false;
411 for (
int i = 0; i < busNav.
count(); i++) {
414 busMapping[addBus] = std::pair<Bus*,int>(originalBus, j);
420 finalMach->
addBus(*addBus);
422 TCEString msg =
"ADFCombiner: Tried to add Bus with an "
423 "already existing name (" + busName +
")";
428 for (
int k = 0; k < socketNav.
count(); k++) {
430 if (socketNav.
item(k)->portCount() == 0) {
436 if (!socketsCreated) {
443 TCEString msg =
"ADFCombiner: Tried to add Socket with "
444 " an already existing name (" + socketName +
")";
458 if (socketNav.
item(k)->isConnectedTo(
462 socketNav.
item(k)->direction());
466 socketsCreated =
true;
References __func__, TTAMachine::Machine::addBus(), TTAMachine::Machine::addSocket(), TTAMachine::Socket::attachBus(), TTAMachine::Machine::busNavigator(), TTAMachine::Machine::Navigator< ComponentType >::count(), TTAMachine::Machine::Navigator< ComponentType >::item(), TTAMachine::Component::name(), TTAMachine::Bus::segment(), TTAMachine::Bus::segmentCount(), TTAMachine::Socket::setDirection(), TTAMachine::Bus::setName(), TTAMachine::Machine::socketNavigator(), and Conversion::toString().
◆ addComponents()
Copies node.adf to the final machine nodeCount times.
- Returns
- The initial machine of NULL if an error occurred.
Definition at line 320 of file ADFCombiner.cc.
326 std::map<Bus*, std::pair<Bus*, int> > busMapping;
336 if (extraMach != NULL)
338 addBuses(finalMach, nodeMach, nodeCount, busMapping);
344 finalMach, nodeMach, extraMach, nodeCount, extrasGuards,
◆ addFunctionUnits()
Adds function unit(s) to the machine
- Returns
- void
Definition at line 511 of file ADFCombiner.cc.
516 for (
unsigned j = 0; j < nodeCount; j++) {
517 for (
int i = 0; i < FUNav.
count(); i++) {
527 "ADFCombiner: Tried to add FU with an already"
528 "existing name (" + FUName +
")";
References __func__, TTAMachine::Machine::addFunctionUnit(), TTAMachine::FunctionUnit::addressSpace(), TTAMachine::Machine::addressSpaceNavigator(), assert, FullyConnectedCheck::connectControlUnit(), TTAMachine::Machine::controlUnit(), TTAMachine::ControlUnit::copy(), TTAMachine::Machine::Navigator< ComponentType >::count(), TTAMachine::Machine::functionUnitNavigator(), TTAMachine::FunctionUnit::hasAddressSpace(), TTAMachine::Machine::Navigator< ComponentType >::hasItem(), TTAMachine::Machine::Navigator< ComponentType >::item(), TTAMachine::Component::name(), TTAMachine::FunctionUnit::setAddressSpace(), TTAMachine::Machine::setGlobalControl(), and TTAMachine::FunctionUnit::setName().
◆ addGuardsToBuses()
void ADFCombiner::addGuardsToBuses |
( |
std::map< Bus *, std::pair< Bus *, int > > & |
busMapping, |
|
|
GuardSet & |
extrasGuards |
|
) |
| |
|
inlineprivate |
Definition at line 378 of file ADFCombiner.cc.
380 for (std::map<
Bus*, std::pair<Bus*, int> >::iterator i =
381 busMapping.begin(); i != busMapping.end(); i++) {
385 for (GuardSet::iterator j = extrasGuards.begin();
386 j != extrasGuards.end(); j++) {
387 if (!i->first->hasGuard(**j)) {
388 (*j)->copyTo(*i->first);
◆ addRegisterFiles()
◆ connectPorts()
◆ connectRegisterFiles()
Connect register files from extra and node into a ring, star or bar.
Definition at line 645 of file ADFCombiner.cc.
665 for (
int i = 0; i < nodeNav.
count(); i++) {
668 for (
unsigned int j = 0; j < nodeCount -1; j++) {
677 int width = std::max(firstRF->
width(), secondRF->
width());
681 newBus = busNav.
item(busName);
683 newBus =
createBus(finalMach, busName, width);
685 connectionBuses.push_back(newBus);
688 for (GuardSet::iterator k = extrasGuards.begin();
689 k != extrasGuards.end(); k++) {
691 (*k)->copyTo(*newBus);
695 finalMach, firstRF, newBus, firstName,
false);
697 finalMach, secondRF, newBus, secondName,
false);
701 if (extraMach == NULL)
continue;
713 for (
int k = 0; k < extraNav.
count(); k++) {
721 int width = std::max(firstRF->
width(), extraRF->
width());
722 TCEString busName =
"connect_extra_first";
725 newBus = busNav.
item(busName);
727 newBus =
createBus(finalMach, busName, width);
729 for (GuardSet::iterator j = extrasGuards.begin();
730 j != extrasGuards.end(); j++) {
732 (*j)->copyTo(*newBus);
736 finalMach, firstRF, newBus, firstName,
false);
738 finalMach, extraRF, newBus, extraName,
false);
741 if (firstName != lastName) {
742 width = std::max(lastRF->
width(), extraRF->
width());
743 busName =
"connect_extra_last";
745 newBus = busNav.
item(busName);
747 newBus =
createBus(finalMach, busName, width);
749 for (GuardSet::iterator j = extrasGuards.begin();
750 j != extrasGuards.end(); j++) {
752 (*j)->copyTo(*newBus);
756 finalMach, lastRF, newBus, lastName,
false);
758 finalMach, extraRF, newBus, extraName,
false);
764 int busCount = nodeCount;
765 for (
int i = 0; i < busCount; i++) {
770 connectionBuses.push_back(newBus);
772 for (
int i = 0; i < nodeNav.
count(); i++) {
775 for (
unsigned int j = 0; j < nodeCount; j++) {
781 finalNav.
item(nodeName);
783 finalMach, nodeRF, newBus, nodeName,
false);
787 if (extraMach == NULL)
continue;
792 for (
int k = 0; k < extraNav.
count(); k++) {
797 int width = extraRF->
width();
802 for (GuardSet::iterator j = extrasGuards.begin();
803 j != extrasGuards.end(); j++) {
805 (*j)->copyTo(*newBus);
814 for (
int k = 0; k < extraImmNav.
count(); k++) {
819 int width = extraImm->
width();
824 finalMach, extraImm, newBus, extraName,
true);
825 for (GuardSet::iterator j = extrasGuards.begin();
826 j != extrasGuards.end(); j++) {
828 (*j)->copyTo(*newBus);
835 if (extraMach != NULL) {
839 for (
unsigned int i = 0; i*
nodesPerBus_ < nodeCount; i++) {
844 connectionBuses.push_back(newBus);
846 for (
int k = 0; k < extraNav.
count(); k++) {
850 finalNav.
item(newName);
852 int width = extraRF->
width();
857 finalMach, extraRF, newBus, extraName,
false, i);
858 for (GuardSet::iterator j = extrasGuards.begin();
859 j != extrasGuards.end(); j++) {
861 (*j)->copyTo(*newBus);
866 for (
int j = 0; j < nodeNav.
count(); j++) {
876 finalNav.
item(nodeName);
878 finalMach, nodeRF, newBus, nodeName,
false);
885 for (
int k = 0; k < extraImmNav.
count(); k++) {
890 int width = extraImm->
width();
895 finalMach, extraImm, newBus, extraName,
true);
896 for (GuardSet::iterator j = extrasGuards.begin();
897 j != extrasGuards.end(); j++) {
899 (*j)->copyTo(*newBus);
907 for (
unsigned int i = 0; i*
nodesPerBus_ < nodeCount-1; i++) {
912 connectionBuses.push_back(newBus);
914 for (
int j = 0; j < nodeNav.
count(); j++) {
919 < nodeCount-1; k++) {
924 finalNav.
item(nodeName);
926 finalMach, nodeRF, newBus, nodeName,
false);
931 for (
int j = 0; j < nodeNav.
count(); j++) {
937 finalNav.
item(node0Name);
938 int width = node0RF->
width();
943 finalMach, node0RF, newBus, node0Name,
false, i);
References TTAMachine::Machine::busNavigator(), TTAMachine::Machine::Navigator< ComponentType >::count(), TTAMachine::Bus::hasGuard(), TTAMachine::Machine::Navigator< ComponentType >::hasItem(), TTAMachine::Machine::immediateUnitNavigator(), TTAMachine::Machine::Navigator< ComponentType >::item(), TTAMachine::Component::name(), TTAMachine::Machine::registerFileNavigator(), Conversion::toString(), and TTAMachine::BaseRegisterFile::width().
◆ connectVectorLSU()
If extra has LSU that is not connected to any of the buses, treat it as a vector LSU and connect address write port to extra and data ports to respective number of nodes.
The name of bus is generated same way as when creating new buses for nodes. Any change there must be reflected here as well! In case LSU has more ports then there are nodes we start from beginning.
The name of bus is generated same way as when creating new buses for nodes. Any change there must be reflected here as well! In case LSU has more ports then there are nodes we start from beginning.
Definition at line 1110 of file ADFCombiner.cc.
1122 int triggerIndex = -1;
1123 int outputPortCount = 0;
1124 bool broadcastUnit =
false;
1125 for (
int i = 0; i < finalNav.
count(); i++) {
1127 bool unconnected =
false;
1136 unconnected =
false;
1156 broadcastUnit =
true;
1159 verboseLog(
"Candidate for Vector LSU does not have "
1160 "address space defined - " + fu->
name());
1164 if (vectorLSU == NULL) {
1186 "ADFCombiner: Tried to add Socket with "
1187 " an already existing name (" + triggerSocket->
name() +
")";
1189 __FILE__, __LINE__,
__func__, msg);
1197 "ADFCombiner: Tried to add Socket with "
1198 " an already existing name (" + inExtraSocket->
name() +
")";
1200 __FILE__, __LINE__,
__func__, msg);
1209 "ADFCombiner: Tried to add Socket with "
1210 " an already existing name (" + outExtraSocket->
name() +
")";
1212 __FILE__, __LINE__,
__func__, msg);
1224 for (
int i = 0; i < extraBusNav.
count(); i++) {
1228 triggerSocket->
attachBus(*finalBusNav.
item(busName)->segment(0));
1230 inExtraSocket->
attachBus(*finalBusNav.
item(busName)->segment(0));
1232 outExtraSocket->
attachBus(*finalBusNav.
item(busName)->segment(0));
1250 TTAMachine::ExecutionPipeline::OperandSet::iterator it =
1251 readOperandSet.begin();
1252 bool writeConnectedToExtra =
false;
1253 for (; it != readOperandSet.end(); it++) {
1255 if (port != trigger && port != inExtra) {
1267 "ADFCombiner: Tried to add Socket with "
1268 " an already existing name (" + inputSocket->
name() +
")";
1270 __FILE__, __LINE__,
__func__, msg);
1279 for (
int i = 0; i < nodeBusNav.
count(); i++) {
1288 nodeBusNav.
item(i)->name() +
"_connect_" +
1294 *finalBusNav.
item(busName)->segment(0))) {
1296 *finalBusNav.
item(busName)->segment(0));
1299 if (!writeConnectedToExtra) {
1300 for (
int i = 0; i < extraBusNav.
count(); i++) {
1305 *finalBusNav.
item(busName)->segment(0)))
1307 *finalBusNav.
item(busName)->segment(0));
1309 writeConnectedToExtra =
true;
1317 it = writeOperandSet.begin();
1318 bool readConnectedToExtra =
false;
1319 for (; it != writeOperandSet.end(); it++) {
1321 if (port == outExtra)
1333 "ADFCombiner: Tried to add Socket with "
1334 " an already existing name (" + outputSocket->
name() +
")";
1336 __FILE__, __LINE__,
__func__, msg);
1345 for (
int i = 0; i < nodeBusNav.
count(); i++) {
1354 nodeBusNav.
item(i)->name() +
"_connect_" +
1360 *finalBusNav.
item(busName)->segment(0))) {
1362 *finalBusNav.
item(busName)->segment(0));
1365 if (!readConnectedToExtra && !broadcastUnit) {
1366 for (
int i = 0; i < extraBusNav.
count(); i++) {
1371 *finalBusNav.
item(busName)->segment(0)))
1373 *finalBusNav.
item(busName)->segment(0));
1375 readConnectedToExtra =
true;
References __func__, TTAMachine::Machine::addSocket(), assert, TTAMachine::Socket::attachBus(), TTAMachine::Port::attachSocket(), TTAMachine::Machine::busNavigator(), TTAMachine::Machine::Navigator< ComponentType >::count(), TTAMachine::Machine::functionUnitNavigator(), TTAMachine::FunctionUnit::hasAddressSpace(), TTAMachine::Machine::Navigator< ComponentType >::hasItem(), TTAMachine::Socket::INPUT, TTAMachine::Port::isConnectedTo(), TTAMachine::Socket::isConnectedTo(), TTAMachine::FUPort::isTriggering(), TTAMachine::Machine::Navigator< ComponentType >::item(), TTAMachine::Port::name(), TTAMachine::Component::name(), TTAMachine::FunctionUnit::operation(), TTAMachine::FunctionUnit::operationCount(), TTAMachine::FunctionUnit::operationPort(), TTAMachine::FunctionUnit::operationPortCount(), TTAMachine::Socket::OUTPUT, TTAMachine::HWOperation::pipeline(), TTAMachine::HWOperation::port(), TTAMachine::ExecutionPipeline::readOperands(), TTAMachine::Socket::setDirection(), TTAMachine::Port::socketCount(), TTAMachine::Machine::socketNavigator(), Conversion::toString(), verboseLog, and TTAMachine::ExecutionPipeline::writtenOperands().
◆ copyGuards()
Definition at line 1410 of file ADFCombiner.cc.
1412 for (
int i = 0; i < originalBus.
guardCount(); ++i) {
1415 TCEString rfName = prefix + rg->registerFile()->name();
1416 int index = rg->registerIndex();
1419 if (rfNew == NULL) {
1420 std::cerr <<
"RF: " << rfName <<
" not found from mach!"
1425 rg->isInverted(), *rfNew, index, &addBus);
1427 FUPort* fuPort = pg->port();
1431 for (
int i = 0; i < fu->
portCount(); i++) {
1432 if (fu->
port(i) == fuPort) {
1440 if (fuNew == NULL) {
1441 std::cerr <<
"FU: " << fuName <<
" not found from mach!"
1446 new PortGuard(pg->isInverted(), *port, addBus);
References assert, TTAMachine::Machine::functionUnitNavigator(), TTAMachine::Bus::guard(), TTAMachine::Bus::guardCount(), TTAMachine::Machine::Navigator< ComponentType >::item(), TTAMachine::Component::machine(), TTAMachine::Component::name(), TTAMachine::BaseFUPort::parentUnit(), TTAMachine::FunctionUnit::port(), TTAMachine::Unit::portCount(), and TTAMachine::Machine::registerFileNavigator().
◆ createBus()
◆ createPortsAndSockets()
Create new ports in RF and connected them to sockets and connect sockets to the bus.
Definition at line 978 of file ADFCombiner.cc.
993 for (
int k = 0; k < rf->
portCount(); k++) {
995 readPort = rf->
port(k);
998 writePort = rf->
port(k);
1004 int indexRead = nodeNumber % rf->
maxReads();
1005 int indexWrite = nodeNumber % rf->
maxWrites();
1007 int foundWrites = 0;
1008 for (
int k = 0; k < rf->
portCount(); k++) {
1010 if (foundReads == indexRead) {
1011 readPort = rf->
port(k);
1017 if (foundWrites == indexWrite) {
1018 writePort = rf->
port(k);
1026 for (
int k = 0; k < rf->
portCount(); k++) {
1028 if (readPort == NULL) {
1029 readPort = rf->
port(k);
1034 if (writePort == NULL) {
1035 writePort = rf->
port(k);
1042 if (readPort == NULL) {
1044 name +
"_connect_r", *rf);
1046 if (!readOnly && writePort == NULL) {
1048 name +
"_connect_w", *rf);
1056 if (readSocket == NULL) {
1063 "ADFCombiner: Tried to add Socket with "
1064 " an already existing name (" + readSocket->
name() +
")";
1066 __FILE__, __LINE__,
__func__, msg);
1069 readSocket = socketNavigator.
item(readPort->
name());
1073 if (!readOnly && writeSocket == NULL) {
1074 if (!socketNavigator.
hasItem(writePort->
name())) {
1080 "ADFCombiner: Tried to add Socket with "
1081 " an already existing name (" + writeSocket->
name() +
")";
1083 __FILE__, __LINE__,
__func__, msg);
1086 writeSocket = socketNavigator.
item(writePort->
name());
1097 if (!readOnly && writePort->
inputSocket() == NULL) {
References __func__, TTAMachine::Machine::addSocket(), TTAMachine::Socket::attachBus(), TTAMachine::Port::attachSocket(), TTAMachine::Machine::Navigator< ComponentType >::hasItem(), TTAMachine::Socket::INPUT, TTAMachine::Port::inputSocket(), TTAMachine::Socket::isConnectedTo(), TTAMachine::Machine::Navigator< ComponentType >::item(), TTAMachine::RegisterFile::maxReads(), TTAMachine::RegisterFile::maxWrites(), TTAMachine::Port::name(), TTAMachine::Component::name(), TTAMachine::Socket::OUTPUT, TTAMachine::Port::outputSocket(), TTAMachine::BaseRegisterFile::port(), TTAMachine::Unit::portCount(), TTAMachine::Bus::segment(), TTAMachine::Socket::setDirection(), and TTAMachine::Machine::socketNavigator().
◆ explore()
virtual std::vector<RowID> ADFCombiner::explore |
( |
const RowID & |
, |
|
|
const unsigned int & |
|
|
) |
| |
|
inlineprivatevirtual |
Explorer plugin that adds machine components to a given machine with adf parameter or with configuration id in dsdb.
Reimplemented from DesignSpaceExplorerPlugin.
Definition at line 129 of file ADFCombiner.cc.
131 std::vector<RowID> result;
136 "No node.adf or extra.adf defined. "
137 "Give adfs as plugin parameters.";
154 "Error loading the \'" +
node_ +
"\'";
166 "Error loading the \'" +
extra_ +
"\'";
189 "VectorLSGenerator", &
db());
202 std::vector<RowID> addedLSUConf =
207 bool connectAgain =
false;
212 }
while (connectAgain);
230 result.push_back(confID);
References __func__, DSDBManager::addArchitecture(), DSDBManager::addConfiguration(), DSDBManager::architecture(), DSDBManager::MachineConfiguration::architectureID, assert, Exception::errorMessageStack(), DesignSpaceExplorerPlugin::explore(), DesignSpaceExplorerPlugin::giveParameter(), DSDBManager::MachineConfiguration::hasImplementation, DesignSpaceExplorer::loadExplorerPlugin(), TTAMachine::Machine::loadFromADF(), and Conversion::toString().
◆ findGuards()
◆ getExtraComponentName()
◆ getNodeComponentName()
◆ nodeNamePrefix()
TCEString ADFCombiner::nodeNamePrefix |
( |
int |
nodeId | ) |
|
|
inlineprivate |
◆ PLUGIN_DESCRIPTION()
ADFCombiner::PLUGIN_DESCRIPTION |
( |
"Explorer plugin that produces a clustered machine with N lanes/nodes " "and an 'extras' node." |
| ) |
|
|
private |
◆ producesArchitecture()
virtual bool ADFCombiner::producesArchitecture |
( |
| ) |
const |
|
inlineprivatevirtual |
◆ readParameters()
void ADFCombiner::readParameters |
( |
| ) |
|
|
inlineprivate |
◆ renameExtraUnits()
◆ requiresApplication()
virtual bool ADFCombiner::requiresApplication |
( |
| ) |
const |
|
inlineprivatevirtual |
◆ requiresHDB()
virtual bool ADFCombiner::requiresHDB |
( |
| ) |
const |
|
inlineprivatevirtual |
◆ requiresSimulationData()
virtual bool ADFCombiner::requiresSimulationData |
( |
| ) |
const |
|
inlineprivatevirtual |
◆ requiresStartingPointArchitecture()
virtual bool ADFCombiner::requiresStartingPointArchitecture |
( |
| ) |
const |
|
inlineprivatevirtual |
◆ addBar_
bool ADFCombiner::addBar_ |
|
private |
◆ AddBarConnectionPN_
const TCEString ADFCombiner::AddBarConnectionPN_ |
|
staticprivate |
◆ addBroadcast_
bool ADFCombiner::addBroadcast_ |
|
private |
◆ AddBroadcastPN_
◆ addressSpaces_
◆ AddressSpacesPN_
const TCEString ADFCombiner::AddressSpacesPN_ |
|
staticprivate |
◆ addRing_
bool ADFCombiner::addRing_ |
|
private |
◆ AddRingConnectionPN_
const TCEString ADFCombiner::AddRingConnectionPN_ |
|
staticprivate |
◆ addStar_
bool ADFCombiner::addStar_ |
|
private |
◆ AddStarConnectionPN_
const TCEString ADFCombiner::AddStarConnectionPN_ |
|
staticprivate |
◆ buildIDF_
bool ADFCombiner::buildIDF_ |
|
private |
◆ BuildIDFPN_
◆ dataLSULatency_
int ADFCombiner::dataLSULatency_ |
|
private |
◆ DataLSULatencyPN_
const TCEString ADFCombiner::DataLSULatencyPN_ |
|
staticprivate |
◆ extra_
◆ ExtraPN_
◆ node_
◆ nodeCount_
int ADFCombiner::nodeCount_ |
|
private |
◆ NodeCountPN_
◆ NodePN_
◆ nodesPerBus_
int ADFCombiner::nodesPerBus_ |
|
private |
◆ NodesPerBusPN_
◆ reuseRFPorts_
bool ADFCombiner::reuseRFPorts_ |
|
private |
◆ ReuseRFPortsPN_
◆ selector_
◆ sharedLSULatency_
int ADFCombiner::sharedLSULatency_ |
|
private |
◆ SharedLSULatencyPN_
const TCEString ADFCombiner::SharedLSULatencyPN_ |
|
staticprivate |
◆ vectorLSU_
bool ADFCombiner::vectorLSU_ |
|
private |
◆ VectorLSUPN_
◆ VLSUConnectionBuses_
int ADFCombiner::VLSUConnectionBuses_ |
|
private |
◆ VLSUConnectionBusesPN_
const TCEString ADFCombiner::VLSUConnectionBusesPN_ |
|
staticprivate |
The documentation for this class was generated from the following file:
bool hasGuard(const Guard &guard) const
virtual Socket * unconnectedSocket(int index) const
void addAllGuardsToConnectionBuses(TTAMachine::Machine *finalMach, const BusVector &connectionBuses)
static const TCEString AddStarConnectionPN_
virtual Socket * inputSocket() const
static const TCEString AddBarConnectionPN_
virtual TCEString name() const
virtual DSDBManager & db()
virtual bool hasAddressSpace() const
FunctionUnit * parentUnit() const
TTAMachine::Machine * architecture(RowID id) const
static const TCEString AddressSpacesPN_
void addBuses(TTAMachine::Machine *finalMach, TTAMachine::Machine *nodeMach, unsigned nodeCount, std::map< Bus *, std::pair< Bus *, int > > &busMapping)
int RowID
Type definition of row ID in relational databases.
DesignSpaceExplorerPlugin()
static const TCEString ReuseRFPortsPN_
void copyGuards(TTAMachine::Bus &originalBus, TTAMachine::Bus &addBus, const TCEString &prefix)
void connectRegisterFiles(TTAMachine::Machine *finalMach, TTAMachine::Machine *nodeMach, TTAMachine::Machine *extraMach, unsigned nodeCount, std::set< TTAMachine::Guard *, TTAMachine::MachinePart::Comparator > extrasGuards, BusVector &connectionBuses)
virtual BaseFUPort * port(const std::string &name) const
virtual AddressSpace * addressSpace() const
std::vector< TTAMachine::Bus * > BusVector
OperandSet writtenOperands(int cycle) const
static std::ostream & logStream()
void addFunctionUnits(TTAMachine::Machine *finalMach, TTAMachine::Machine *nodeMach, unsigned nodeCount)
void connectPorts(TTAMachine::Machine *finalMach, TTAMachine::Unit *original, TTAMachine::Unit *newUnit, int count)
OperandSet readOperands(int cycle) const
virtual Segment * segment(int index) const
virtual bool isTriggering() const
virtual int maxWrites() const
static std::string toString(const T &source)
TCEString nodeNamePrefix(int nodeId)
TTAMachine::Bus * createBus(TTAMachine::Machine *finalMach, TCEString busName, int width)
virtual int socketCount() const
static const TCEString NodeCountPN_
bool connectVectorLSU(TTAMachine::Machine *finalMach, TTAMachine::Machine *nodeMach, TTAMachine::Machine *extraMach, int nodeCount)
#define assert(condition)
virtual FUPort * port(int operand) const
virtual void attachSocket(Socket &socket)
virtual void addRegisterFile(RegisterFile &unit)
virtual ControlUnit * copy() const
void readOptionalParameter(const std::string paramName, T ¶m) const
virtual ControlUnit * controlUnit() const
virtual int maxReads() const
void attachBus(Segment &bus)
virtual ImmediateUnitNavigator immediateUnitNavigator() const
virtual void setName(const std::string &name)
bool hasItem(const std::string &name) const
virtual Port * port(const std::string &name) const
virtual FunctionUnitNavigator functionUnitNavigator() const
virtual void giveParameter(const std::string &name, const std::string &value)
static const TCEString VectorLSUPN_
static const TCEString AddBroadcastPN_
std::string errorMessageStack(bool messagesOnly=false) const
virtual int operationCount() const
virtual ObjectState * saveState() const
static const TCEString NodePN_
static const TCEString AddRingConnectionPN_
virtual void setAddressSpace(AddressSpace *as)
static DesignSpaceExplorerPlugin * loadExplorerPlugin(const std::string &pluginName, DSDBManager *dsdb=NULL)
virtual AddressSpaceNavigator addressSpaceNavigator() const
virtual bool hasSegment(const std::string &name) const
virtual SocketNavigator socketNavigator() const
std::set< int > OperandSet
Set for operand indexes.
void setDirection(Direction direction)
virtual int operationPortCount() const
static const TCEString NodesPerBusPN_
virtual void addBus(Bus &bus)
bool isConnectedTo(const Bus &bus) const
Guard * guard(int index) const
virtual int portCount() const
void renameExtraUnits(TTAMachine::Machine *finalMach)
virtual void setGlobalControl(ControlUnit &unit)
RowID addConfiguration(const MachineConfiguration &conf)
static const TCEString ExtraPN_
ComponentImplementationSelector selector_
Selector used by the plugin.
RowID addArchitecture(const TTAMachine::Machine &mom)
virtual RFPort * port(const std::string &name) const
virtual RegisterFileNavigator registerFileNavigator() const
virtual std::vector< RowID > explore(const RowID &startPointConfigurationID, const unsigned int &maxIter=0)
virtual void addFunctionUnit(FunctionUnit &unit)
void addAddressSpaces(TTAMachine::Machine *finalMach, TTAMachine::Machine *nodeMach)
void addComponents(TTAMachine::Machine *finalMach, TTAMachine::Machine *nodeMach, TTAMachine::Machine *extraMach, unsigned nodeCount)
virtual Machine * machine() const
virtual std::string name() const
static const TCEString SharedLSULatencyPN_
std::set< TTAMachine::Guard *, TTAMachine::MachinePart::Comparator > GuardSet
virtual BusNavigator busNavigator() const
static const TCEString DataLSULatencyPN_
virtual Socket * outputSocket() const
virtual std::string name() const
static const TCEString VLSUConnectionBusesPN_
ExecutionPipeline * pipeline() const
void addGuardsToBuses(std::map< Bus *, std::pair< Bus *, int > > &busMapping, GuardSet &extrasGuards)
ComponentType * item(int index) const
virtual HWOperation * operation(const std::string &name) const
virtual bool isConnectedTo(const Socket &socket) const
virtual FUPort * operationPort(const std::string &name) const
void selectComponentsToConf(DSDBManager::MachineConfiguration &conf, DSDBManager &dsdb, TTAMachine::Machine *mach=NULL, const std::string &icDecoder="ic_hdb", const std::string &icDecoderHDB="asic_130nm_1.5V.hdb", const double &frequency=0, const double &maxArea=0)
TCEString getNodeComponentName(TCEString originalName, int idx)
void addRegisterFiles(TTAMachine::Machine *finalMach, TTAMachine::Machine *nodeMach, unsigned nodeCount)
virtual int width() const
virtual void setName(const std::string &name)
void connectControlUnit(TTAMachine::ControlUnit &gcu) const
virtual void addSocket(Socket &socket)
virtual int segmentCount() const
void addParameter(TCEString name, ExplorerPluginParameterType type, bool compulsory=true, TCEString defaultValue="", TCEString description="")
TCEString getExtraComponentName(TCEString originalName)
virtual void setName(const std::string &name)
GuardSet findGuards(TTAMachine::Machine *mach)
static const TCEString BuildIDFPN_
virtual void copyGuardsTo(Bus &other) const
static Machine * loadFromADF(const std::string &adfFileName)
void createPortsAndSockets(TTAMachine::Machine *finalMach, TTAMachine::RegisterFile *rf, TTAMachine::Bus *newBus, TCEString name, bool readOnly, int nodeNumber=-1)