OpenASIP  2.0
Private Member Functions | Private Attributes | Static Private Attributes | List of all members
SimpleICOptimizer Class Reference
Inheritance diagram for SimpleICOptimizer:
Inheritance graph
Collaboration diagram for SimpleICOptimizer:
Collaboration graph

Private Member Functions

 PLUGIN_DESCRIPTION ("Optimizes the IC of the given configuration")
 
 SimpleICOptimizer ()
 
virtual bool requiresStartingPointArchitecture () const
 
virtual bool producesArchitecture () const
 
virtual bool requiresHDB () const
 
virtual bool requiresSimulationData () const
 
virtual bool requiresApplication () const
 
virtual std::vector< RowIDexplore (const RowID &startPointConfigurationID, const unsigned int &)
 
void readParameters ()
 
void removeAllConnections (TTAMachine::Machine &mach)
 
bool fixIntRegisters (TTAMachine::Machine &mach)
 
void addConnections (TTAMachine::Machine &mach, Program &prog)
 

Private Attributes

std::string tpef_
 name of the tpef file More...
 
bool addOnly_
 can we remove connections More...
 
bool evaluateResult_
 evaluate the result(s) More...
 
bool preserveMinimalOpset_
 respect minimal opset when removing connections More...
 

Static Private Attributes

static const std::string tpefPN_
 
static const std::string tpefDefaultPN_
 
static const std::string addOnlyPN_
 
static const std::string evaluatePN_
 
static const std::string preserveMinOpsPN_
 

Additional Inherited Members

- Public Types inherited from DesignSpaceExplorerPlugin
typedef std::pair< std::string, ExplorerPluginParameterParameter
 
typedef std::map< std::string, ExplorerPluginParameterParameterMap
 
typedef std::map< std::string, ExplorerPluginParameter >::iterator PMIt
 
typedef std::map< std::string, ExplorerPluginParameter >::const_iterator PMCIt
 
- Public Member Functions inherited from DesignSpaceExplorerPlugin
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 &param) const
 
template<typename T >
void readOptionalParameter (const std::string paramName, T &param) const
 
template<typename RT >
RT parameterValue (const std::string &paramName) 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 &paramName) const
 
ParameterMap parameters () const
 
virtual bool booleanValue (const std::string &parameter) const
 
- Public Member Functions inherited from DesignSpaceExplorer
 DesignSpaceExplorer ()
 
virtual ~DesignSpaceExplorer ()
 
virtual void setDSDB (DSDBManager &dsdb)
 
virtual bool evaluate (const DSDBManager::MachineConfiguration &configuration, CostEstimates &results=dummyEstimate_, bool estimate=false)
 
virtual DSDBManagerdb ()
 
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::MachineImplementationselectComponents (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 Public Member Functions inherited from DesignSpaceExplorer
static DesignSpaceExplorerPluginloadExplorerPlugin (const std::string &pluginName, DSDBManager *dsdb=NULL)
 
- Protected Member Functions inherited from DesignSpaceExplorerPlugin
 DesignSpaceExplorerPlugin ()
 
void checkParameters () const
 
- Protected Member Functions inherited from DesignSpaceExplorer
TTAProgram::Programschedule (const std::string applicationFile, TTAMachine::Machine &machine, TCEString paramOptions="-O3")
 
const ExecutionTracesimulate (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)
 
- Protected Attributes inherited from DesignSpaceExplorerPlugin
std::string pluginName_
 the name of the explorer plugin More...
 
ParameterMap parameters_
 Parameters for the plugin. More...
 

Detailed Description

Explorer plugin that optimizes the interconnection network of the given configuration by removing the connections that are not used in the parallel program.

Definition at line 79 of file SimpleICOptimizer.cc.

Constructor & Destructor Documentation

◆ SimpleICOptimizer()

SimpleICOptimizer::SimpleICOptimizer ( )
inlineprivate

Definition at line 82 of file SimpleICOptimizer.cc.

83  tpef_(""),
84  addOnly_(false),
85  evaluateResult_(true),
86  preserveMinimalOpset_(true) {
87 
88  // compulsory parameters
89  // none
90 
91  // parameters that have a default value
92  addParameter(tpefPN_, STRING, false, "");
93  addParameter(addOnlyPN_, BOOL, false,
95  addParameter(evaluatePN_, BOOL, false,
99  }

References BOOL, STRING, and Conversion::toString().

Here is the call graph for this function:

Member Function Documentation

◆ addConnections()

void SimpleICOptimizer::addConnections ( TTAMachine::Machine mach,
Program prog 
)
inlineprivate

Adds connections used in the program to the given machine.

Connections to add are determined by procedure instructions in application domains programs.

Parameters
machMachine where the connections are added.
progScheduled program where the used connections are searched.

Definition at line 423 of file SimpleICOptimizer.cc.

423  {
424  Machine::SocketNavigator socketNav = mach.socketNavigator();
425  Machine::BusNavigator busNav = mach.busNavigator();
426 
427  // go through every procedure in the program
428  for (int i = 0; i < prog.procedureCount(); i++) {
429  Procedure& procedure = prog.procedure(i);
430 
431  // go through every instruction
432  for (int j = 0; j < procedure.instructionCount(); j++) {
433  Instruction& instruction = procedure.instructionAtIndex(j);
434 
435  // check all moves and add connection from source to bus and
436  // bus to destination
437  for (int m = 0; m < instruction.moveCount(); m++) {
438  Move& move = instruction.move(m);
439  std::string busName = move.bus().name();
440  std::string sourceName = "";
441  try {
442  sourceName = move.sourceSocket().name();
443  } catch (const WrongSubclass&) {
444  // source was an immediate, no error
445  assert(move.source().isImmediate());
446  }
447  std::string destinationName =
448  move.destinationSocket().name();
449  Bus* bus = busNav.item(busName);
450 
451  // connect the source socket to the bus
452  if (sourceName != "") {
453  Socket* socket = socketNav.item(sourceName);
454  for (int s = 0; s < bus->segmentCount(); s++) {
455  if (!socket->isConnectedTo(*bus->segment(s))) {
456  socket->attachBus(*bus->segment(s));
457  // socket direction is lost when the
458  // connections were removed
459  socket->setDirection(Socket::OUTPUT);
460  }
461  }
462  }
463  Socket* socket = socketNav.item(destinationName);
464  for (int s = 0; s < bus->segmentCount(); s++) {
465  if (!socket->isConnectedTo(*bus->segment(s))) {
466  socket->attachBus(*bus->segment(s));
467  // socket direction is lost when the
468  // connections were removed
469  socket->setDirection(Socket::INPUT);
470  }
471  }
472  }
473  }
474  }
475  }

References assert, TTAMachine::Socket::attachBus(), TTAProgram::Move::bus(), TTAMachine::Machine::busNavigator(), TTAProgram::Move::destinationSocket(), TTAProgram::CodeSnippet::instructionAtIndex(), TTAProgram::CodeSnippet::instructionCount(), TTAMachine::Socket::isConnectedTo(), TTAProgram::Terminal::isImmediate(), TTAMachine::Machine::Navigator< ComponentType >::item(), TTAProgram::Instruction::move(), TTAProgram::Instruction::moveCount(), TTAMachine::Component::name(), TTAProgram::Program::procedure(), TTAProgram::Program::procedureCount(), TTAMachine::Bus::segment(), TTAMachine::Bus::segmentCount(), TTAMachine::Socket::setDirection(), TTAMachine::Machine::socketNavigator(), TTAProgram::Move::source(), and TTAProgram::Move::sourceSocket().

Here is the call graph for this function:

◆ explore()

virtual std::vector<RowID> SimpleICOptimizer::explore ( const RowID startPointConfigurationID,
const unsigned int &   
)
inlineprivatevirtual

Optimizes the IC of the given configuration by removing not used connections.

First removes connections and then adds them by looking all application domains programs instructions and their moves. Needs the start point configuration to get the architecture which connections are optimized.

Supported parameters:

  • tpef, name of the scheduled program file, no default value.
  • add_only, if parameter is set the connections of the given configuration won't be emptied, just added new ones, not set as default.
Parameters
startPointConfigurationIDConfiguration to optimize.

Reimplemented from DesignSpaceExplorerPlugin.

Definition at line 125 of file SimpleICOptimizer.cc.

125  {
126 
127  std::vector<RowID> result;
128 
129  readParameters();
130 
131  try {
132  DSDBManager& dsdb = db();
134  dsdb.configuration(startPointConfigurationID);
135 
136  // loads starting configuration
137  Machine* origMach = NULL;
138  Machine* mach = NULL;
139  try {
140  origMach = dsdb.architecture(conf.architectureID);
141  mach = dsdb.architecture(conf.architectureID);
142  } catch (const Exception& e) {
143  std::ostringstream msg(std::ostringstream::out);
144  msg << e.errorMessage() << std::endl;
145  verboseLog(msg.str());
146  return result;
147  }
148 
149  if (!addOnly_) {
150  removeAllConnections(*mach);
151  }
152 
153  // if no scheduled programs given
154  Program* program = NULL;
155  if (tpef_ == "") {
156  //SchedulerFrontend scheduler;
157  try {
158  std::set<RowID> appIDs = dsdb.applicationIDs();
159  std::set<RowID>::const_iterator iter = appIDs.begin();
160  if (iter == appIDs.end()) {
161  // no applications, nothing can be done
162  return result;
163  }
164  for (; iter != appIDs.end(); iter++) {
165  TestApplication testApp(dsdb.applicationPath(*iter));
166 
168  testApp.applicationPath(), *origMach);
169  if (program == NULL) {
170  std::string msg = "SimpleICOptimizer: Schedule "
171  "failed for program: " +
172  testApp.applicationPath();
173  verboseLogC(msg, 1)
174  return result;
175  }
176 
177  addConnections(*mach, *program);
178  }
179  } catch (const Exception& e) {
180  std::ostringstream msg(std::ostringstream::out);
181  msg << e.errorMessageStack() << std::endl;
182  verboseLog(msg.str());
183  delete mach;
184  mach = NULL;
185  return result;
186  }
187  } else {
188  try {
189  program = Program::loadFromTPEF(tpef_, *origMach);
190 
191  addConnections(*mach, *program);
192  } catch (const Exception& e) {
193  std::ostringstream msg(std::ostringstream::out);
194  msg << "Error while loading the program in "
195  << "SimpleICOptimizer:" << endl
196  << e.errorMessage() << endl;
197  verboseLog(msg.str());
198  return result;
199  }
200  }
201 
203  try {
204  tempConf.architectureID = dsdb.addArchitecture(*mach);
205  tempConf.hasImplementation = false;
206  } catch (const RelationalDBException& e) {
207  std::ostringstream msg(std::ostringstream::out);
208  msg << "Error while adding ADF to the dsdb. "
209  << "ADF probably too big." << endl;
210  verboseLog(msg.str());
211  return result;
212  }
213 
214  // add config to database to pass it to
215  // RemoveUnconnectedComponents plugin
216  RowID tempConfID = dsdb.addConfiguration(tempConf);
217 
218  // remove unconnected components with RemoveUnconnectedComponents
219  // plugin
220  DesignSpaceExplorerPlugin* removeUnconnected =
222  "RemoveUnconnectedComponents", &db());
223 
224  // parameters for RemoveUnconnectedComponents plugin
225  removeUnconnected->giveParameter("allow_remove", "true");
226 
227  std::vector<RowID> cleanedTempConfIDs =
228  removeUnconnected->explore(tempConfID);
229  delete removeUnconnected;
230  removeUnconnected = NULL;
231  if (cleanedTempConfIDs.size() < 1) {
232  std::string errorMsg = "SimpleICOptimizer plugin: "
233  "RemoveUnconnectedComponents plugin failed to produce"
234  "result.";
235  verboseLogC(errorMsg, 2)
236  return result;
237  }
238 
239  DSDBManager::MachineConfiguration newConf =
240  dsdb.configuration(cleanedTempConfIDs.at(0));
241 
242  // if original machine had enough int registers, check and
243  // possibly try to fix the new machine
244  RegisterQuantityCheck RFCheck;
245  if (RFCheck.checkIntRegs(*origMach)) {
246  Machine* cleanedMach =
247  dsdb.architecture(newConf.architectureID);
248  if (fixIntRegisters(*cleanedMach)) {
249  // replace newConf machine with the fixed one
250  newConf.architectureID =
251  dsdb.addArchitecture(*cleanedMach);
252  }
253  }
254 
255  // create implementation for newConf if orginal config had one
256  if (conf.hasImplementation && !newConf.hasImplementation) {
257  createImplementation(newConf, newConf);
258  } else {
259  newConf.hasImplementation = false;
260  }
261 
262  // evaluate and save new config id as result
263  CostEstimates estimates;
264  if (evaluateResult_) {
265  // evaluate the new config
266  bool estimate = newConf.hasImplementation;
267  if (evaluate(newConf, estimates, estimate)) {
268  RowID confID = dsdb.addConfiguration(newConf);
269  result.push_back(confID);
270  } else {
271  // cannot evaluate
272  std::ostringstream msg(std::ostringstream::out);
273  msg << "SimpleICOptimizer plugin couldn't evaluate "
274  << "generated config - nothing done." << endl;
275  verboseLog(msg.str());
276  return result;
277  }
278  } else {
279  RowID confID = dsdb.addConfiguration(newConf);
280  result.push_back(confID);
281  }
282 
283  } catch (const Exception& e) {
284  std::ostringstream msg(std::ostringstream::out);
285  msg << "Error while using SimpleICOptimizer:" << endl
286  << e.errorMessage() << endl;
287  verboseLog(msg.str());
288  return result;
289  }
290  return result;
291  }

References DSDBManager::addArchitecture(), DSDBManager::addConfiguration(), DSDBManager::applicationIDs(), TestApplication::applicationPath(), DSDBManager::applicationPath(), DSDBManager::architecture(), DSDBManager::MachineConfiguration::architectureID, RegisterQuantityCheck::checkIntRegs(), DSDBManager::configuration(), Exception::errorMessage(), Exception::errorMessageStack(), DesignSpaceExplorerPlugin::explore(), DesignSpaceExplorerPlugin::giveParameter(), DSDBManager::MachineConfiguration::hasImplementation, DesignSpaceExplorer::loadExplorerPlugin(), TTAProgram::Program::loadFromTPEF(), program, DesignSpaceExplorer::schedule(), verboseLog, and verboseLogC.

Here is the call graph for this function:

◆ fixIntRegisters()

bool SimpleICOptimizer::fixIntRegisters ( TTAMachine::Machine mach)
inlineprivate

Checks that produced machine is still usable

Parameters
machMachine where the connections are added.
Returns
True if something done to the machine given as parameter.

Definition at line 398 of file SimpleICOptimizer.cc.

398  {
399  // check that that machine has enough int registers and fix if needed
400  // and can be fixed
401  RegisterQuantityCheck RFCheck;
402  if (!RFCheck.checkIntRegs(mach) && RFCheck.canFixIntRegs(mach)) {
403  if (!RFCheck.fixIntRegs(mach)) {
404  verboseLog("Failed to add missing integer registers to the"
405  "machine.");
406  return false;
407  } else {
408  return true;
409  }
410  }
411  return false;
412  }

References RegisterQuantityCheck::canFixIntRegs(), RegisterQuantityCheck::checkIntRegs(), RegisterQuantityCheck::fixIntRegs(), and verboseLog.

Here is the call graph for this function:

◆ PLUGIN_DESCRIPTION()

SimpleICOptimizer::PLUGIN_DESCRIPTION ( "Optimizes the IC of the given configuration"  )
private

◆ producesArchitecture()

virtual bool SimpleICOptimizer::producesArchitecture ( ) const
inlineprivatevirtual

Implements DesignSpaceExplorerPlugin.

Definition at line 102 of file SimpleICOptimizer.cc.

102 { return true; }

◆ readParameters()

void SimpleICOptimizer::readParameters ( )
inlineprivate

Reads the parameters given to the plugin.

Definition at line 314 of file SimpleICOptimizer.cc.

◆ removeAllConnections()

void SimpleICOptimizer::removeAllConnections ( TTAMachine::Machine mach)
inlineprivate

Removes all socket-bus connection from the given machine.

Parameters
machMachine which connections are removed.

Definition at line 327 of file SimpleICOptimizer.cc.

327  {
328  Machine::SocketNavigator socketNav = mach.socketNavigator();
329  Machine::BusNavigator busNav = mach.busNavigator();
330  RegisterQuantityCheck RFCheck;
331  MinimalOpSetCheck minimalOpSetCheck = MinimalOpSetCheck();
332 
333  if (!preserveMinimalOpset_) {
334  for (int i = 0; i < socketNav.count(); i++) {
335  Socket* socket = socketNav.item(i);
336  for (int bus = 0; bus < busNav.count(); bus++) {
337  socket->detachBus(*busNav.item(bus));
338  }
339  }
340  } else {
341  // remove connections only if connected minimal opset preserved.
342  for (int i = 0; i < socketNav.count(); i++) {
343  Socket* socket = socketNav.item(i);
344  std::set<std::string> ignoreFUNames;
345  std::set<std::string> ignoreRFNames;
346  // check all ports connected to the socket
347  for (int si = 0; si < socket->portCount(); ++si) {
348  Port* port = socket->port(si);
349  if (dynamic_cast<FUPort*>(port)) {
350  ignoreFUNames.insert(port->parentUnit()->name());
351  } else if (dynamic_cast<RFPort*>(port)) {
352  ignoreRFNames.insert(port->parentUnit()->name());
353  }
354  }
355  // TODO: refactor below
356  // TODO: add test that same FU/RF is not checked multiple
357  // times in situations where there are more than one socket
358  // connected to the same FU/RF, do this by storing unit names
359  // and the verdict if connections can be removed as a pair to
360  // a map
361  if (!ignoreFUNames.empty()) {
362  if (minimalOpSetCheck.checkWithIgnore(mach, ignoreFUNames)) {
363  if (!ignoreRFNames.empty()) {
364  if (RFCheck.checkWithIgnore(mach, ignoreRFNames))
365  {
366  for (int bus = 0; bus < busNav.count(); bus++)
367  {
368  socket->detachBus(*busNav.item(bus));
369  }
370  }
371  } else {
372  for (int bus = 0; bus < busNav.count(); bus++) {
373  socket->detachBus(*busNav.item(bus));
374  }
375  }
376  }
377  } else if (!ignoreRFNames.empty()) {
378  if (RFCheck.checkWithIgnore(mach, ignoreRFNames)) {
379  for (int bus = 0; bus < busNav.count(); bus++) {
380  socket->detachBus(*busNav.item(bus));
381  }
382  }
383  } else {
384  for (int bus = 0; bus < busNav.count(); bus++) {
385  socket->detachBus(*busNav.item(bus));
386  }
387  }
388  }
389  }
390  }

References TTAMachine::Machine::busNavigator(), RegisterQuantityCheck::checkWithIgnore(), MinimalOpSetCheck::checkWithIgnore(), TTAMachine::Machine::Navigator< ComponentType >::count(), TTAMachine::Socket::detachBus(), TTAMachine::Machine::Navigator< ComponentType >::item(), TTAMachine::Component::name(), TTAMachine::Port::parentUnit(), TTAMachine::Socket::port(), TTAMachine::Socket::portCount(), and TTAMachine::Machine::socketNavigator().

Here is the call graph for this function:

◆ requiresApplication()

virtual bool SimpleICOptimizer::requiresApplication ( ) const
inlineprivatevirtual

Reimplemented from DesignSpaceExplorerPlugin.

Definition at line 105 of file SimpleICOptimizer.cc.

105 { return false; }

◆ requiresHDB()

virtual bool SimpleICOptimizer::requiresHDB ( ) const
inlineprivatevirtual

Implements DesignSpaceExplorerPlugin.

Definition at line 103 of file SimpleICOptimizer.cc.

103 { return false; }

◆ requiresSimulationData()

virtual bool SimpleICOptimizer::requiresSimulationData ( ) const
inlineprivatevirtual

Implements DesignSpaceExplorerPlugin.

Definition at line 104 of file SimpleICOptimizer.cc.

104 { return false; }

◆ requiresStartingPointArchitecture()

virtual bool SimpleICOptimizer::requiresStartingPointArchitecture ( ) const
inlineprivatevirtual

Implements DesignSpaceExplorerPlugin.

Definition at line 101 of file SimpleICOptimizer.cc.

101 { return true; }

Member Data Documentation

◆ addOnly_

bool SimpleICOptimizer::addOnly_
private

can we remove connections

Definition at line 304 of file SimpleICOptimizer.cc.

◆ addOnlyPN_

const std::string SimpleICOptimizer::addOnlyPN_
staticprivate

Definition at line 297 of file SimpleICOptimizer.cc.

◆ evaluatePN_

const std::string SimpleICOptimizer::evaluatePN_
staticprivate

Definition at line 298 of file SimpleICOptimizer.cc.

◆ evaluateResult_

bool SimpleICOptimizer::evaluateResult_
private

evaluate the result(s)

Definition at line 306 of file SimpleICOptimizer.cc.

◆ preserveMinimalOpset_

bool SimpleICOptimizer::preserveMinimalOpset_
private

respect minimal opset when removing connections

Definition at line 308 of file SimpleICOptimizer.cc.

◆ preserveMinOpsPN_

const std::string SimpleICOptimizer::preserveMinOpsPN_
staticprivate

Definition at line 299 of file SimpleICOptimizer.cc.

◆ tpef_

std::string SimpleICOptimizer::tpef_
private

name of the tpef file

Definition at line 302 of file SimpleICOptimizer.cc.

◆ tpefDefaultPN_

const std::string SimpleICOptimizer::tpefDefaultPN_
staticprivate

Definition at line 296 of file SimpleICOptimizer.cc.

◆ tpefPN_

const std::string SimpleICOptimizer::tpefPN_
staticprivate

Definition at line 295 of file SimpleICOptimizer.cc.


The documentation for this class was generated from the following file:
MinimalOpSetCheck::checkWithIgnore
bool checkWithIgnore(const TTAMachine::Machine &machine, const std::set< std::string > &ignoreFUName) const
Definition: MinimalOpSetCheck.cc:159
DesignSpaceExplorer::evaluate
virtual bool evaluate(const DSDBManager::MachineConfiguration &configuration, CostEstimates &results=dummyEstimate_, bool estimate=false)
Definition: DesignSpaceExplorer.cc:133
TTAProgram::Move::destinationSocket
TTAMachine::Socket & destinationSocket() const
Definition: Move.cc:388
TTAProgram::Program
Definition: Program.hh:63
RegisterQuantityCheck::checkWithIgnore
bool checkWithIgnore(const TTAMachine::Machine &mach, const std::set< std::string > &ignoreRFs) const
Definition: RegisterQuantityCheck.cc:116
MinimalOpSetCheck
Definition: MinimalOpSetCheck.hh:53
TTAMachine::Socket::port
Port * port(int index) const
Definition: Socket.cc:266
TTAMachine::Socket::portCount
int portCount() const
TTAMachine::Component::name
virtual TCEString name() const
Definition: MachinePart.cc:125
SimpleICOptimizer::preserveMinimalOpset_
bool preserveMinimalOpset_
respect minimal opset when removing connections
Definition: SimpleICOptimizer.cc:308
DesignSpaceExplorer::db
virtual DSDBManager & db()
Definition: DesignSpaceExplorer.cc:300
TTAProgram::Instruction::move
Move & move(int i) const
Definition: Instruction.cc:193
TTAProgram::Program::procedureCount
int procedureCount() const
Definition: Program.cc:610
CostEstimates
Definition: CostEstimates.hh:57
RelationalDBException
Definition: Exception.hh:692
DSDBManager::architecture
TTAMachine::Machine * architecture(RowID id) const
Definition: DSDBManager.cc:807
DSDBManager::MachineConfiguration::hasImplementation
bool hasImplementation
Definition: DSDBManager.hh:80
TTAProgram::Instruction
Definition: Instruction.hh:57
TTAMachine::Bus
Definition: Bus.hh:53
SimpleICOptimizer::addConnections
void addConnections(TTAMachine::Machine &mach, Program &prog)
Definition: SimpleICOptimizer.cc:423
RegisterQuantityCheck
Definition: RegisterQuantityCheck.hh:48
SimpleICOptimizer::addOnly_
bool addOnly_
can we remove connections
Definition: SimpleICOptimizer.cc:304
DesignSpaceExplorerPlugin
Definition: DesignSpaceExplorerPlugin.hh:55
SimpleICOptimizer::evaluatePN_
static const std::string evaluatePN_
Definition: SimpleICOptimizer.cc:298
RowID
int RowID
Type definition of row ID in relational databases.
Definition: DBTypes.hh:37
DesignSpaceExplorerPlugin::DesignSpaceExplorerPlugin
DesignSpaceExplorerPlugin()
Definition: DesignSpaceExplorerPlugin.cc:48
TTAProgram::Move::bus
const TTAMachine::Bus & bus() const
Definition: Move.cc:373
SimpleICOptimizer::addOnlyPN_
static const std::string addOnlyPN_
Definition: SimpleICOptimizer.cc:297
TTAMachine::Machine::Navigator::count
int count() const
TTAMachine::Bus::segment
virtual Segment * segment(int index) const
Definition: Bus.cc:329
Conversion::toString
static std::string toString(const T &source)
verboseLog
#define verboseLog(text)
Definition: Application.hh:115
TTAMachine::RFPort
Definition: RFPort.hh:45
BOOL
@ BOOL
Definition: ExplorerPluginParameter.hh:40
assert
#define assert(condition)
Definition: Application.hh:86
TTAProgram::Move::sourceSocket
TTAMachine::Socket & sourceSocket() const
Definition: Move.cc:393
TTAMachine::FUPort
Definition: FUPort.hh:46
DesignSpaceExplorer::schedule
TTAProgram::Program * schedule(const std::string applicationFile, TTAMachine::Machine &machine, TCEString paramOptions="-O3")
Definition: DesignSpaceExplorer.cc:315
SimpleICOptimizer::tpefPN_
static const std::string tpefPN_
Definition: SimpleICOptimizer.cc:295
DesignSpaceExplorerPlugin::readOptionalParameter
void readOptionalParameter(const std::string paramName, T &param) const
TTAMachine::Socket::attachBus
void attachBus(Segment &bus)
Definition: Socket.cc:166
DSDBManager::MachineConfiguration
Definition: DSDBManager.hh:78
STRING
@ STRING
Definition: ExplorerPluginParameter.hh:40
verboseLogC
#define verboseLogC(text, neededVerbosity)
Definition: Application.hh:110
TTAProgram::CodeSnippet::instructionCount
virtual int instructionCount() const
Definition: CodeSnippet.cc:205
SimpleICOptimizer::evaluateResult_
bool evaluateResult_
evaluate the result(s)
Definition: SimpleICOptimizer.cc:306
WrongSubclass
Definition: Exception.hh:336
TTAMachine::Port
Definition: Port.hh:54
TTAMachine::Socket
Definition: Socket.hh:53
DesignSpaceExplorerPlugin::giveParameter
virtual void giveParameter(const std::string &name, const std::string &value)
Definition: DesignSpaceExplorerPlugin.cc:89
SimpleICOptimizer::removeAllConnections
void removeAllConnections(TTAMachine::Machine &mach)
Definition: SimpleICOptimizer.cc:327
SimpleICOptimizer::preserveMinOpsPN_
static const std::string preserveMinOpsPN_
Definition: SimpleICOptimizer.cc:299
TTAProgram::Move
Definition: Move.hh:55
Exception
Definition: Exception.hh:54
DSDBManager
Definition: DSDBManager.hh:76
DesignSpaceExplorer::loadExplorerPlugin
static DesignSpaceExplorerPlugin * loadExplorerPlugin(const std::string &pluginName, DSDBManager *dsdb=NULL)
Definition: DesignSpaceExplorer.cc:527
TTAMachine::Machine::socketNavigator
virtual SocketNavigator socketNavigator() const
Definition: Machine.cc:368
TTAMachine::Socket::setDirection
void setDirection(Direction direction)
Definition: Socket.cc:130
TTAMachine::Socket::isConnectedTo
bool isConnectedTo(const Bus &bus) const
Definition: Socket.cc:331
RegisterQuantityCheck::fixIntRegs
bool fixIntRegs(TTAMachine::Machine &mach) const
Definition: RegisterQuantityCheck.cc:340
TTAMachine::Socket::detachBus
void detachBus(Segment &bus)
Definition: Socket.cc:213
Exception::errorMessage
std::string errorMessage() const
Definition: Exception.cc:123
DSDBManager::addConfiguration
RowID addConfiguration(const MachineConfiguration &conf)
Definition: DSDBManager.cc:299
DSDBManager::addArchitecture
RowID addArchitecture(const TTAMachine::Machine &mom)
Definition: DSDBManager.cc:191
DSDBManager::configuration
MachineConfiguration configuration(RowID id) const
Definition: DSDBManager.cc:361
DesignSpaceExplorer::createImplementation
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")
Definition: DesignSpaceExplorer.cc:650
DesignSpaceExplorerPlugin::explore
virtual std::vector< RowID > explore(const RowID &startPointConfigurationID, const unsigned int &maxIter=0)
Definition: DesignSpaceExplorerPlugin.cc:174
TTAMachine::Machine::busNavigator
virtual BusNavigator busNavigator() const
Definition: Machine.cc:356
SimpleICOptimizer::readParameters
void readParameters()
Definition: SimpleICOptimizer.cc:314
SimpleICOptimizer::tpef_
std::string tpef_
name of the tpef file
Definition: SimpleICOptimizer.cc:302
TTAProgram::CodeSnippet::instructionAtIndex
virtual Instruction & instructionAtIndex(int index) const
Definition: CodeSnippet.cc:285
TTAProgram::Move::source
Terminal & source() const
Definition: Move.cc:302
TTAMachine::Machine::Navigator::item
ComponentType * item(int index) const
program
find Finds info of the inner loops in the program
Definition: InnerLoopFinder.cc:80
DSDBManager::applicationPath
std::string applicationPath(RowID id) const
Definition: DSDBManager.cc:947
RegisterQuantityCheck::checkIntRegs
bool checkIntRegs(const TTAMachine::Machine &mach) const
Definition: RegisterQuantityCheck.cc:186
TTAProgram::Terminal::isImmediate
virtual bool isImmediate() const
Definition: Terminal.cc:63
DSDBManager::MachineConfiguration::architectureID
RowID architectureID
Definition: DSDBManager.hh:79
TTAProgram::Program::procedure
Procedure & procedure(int index) const
Definition: Program.cc:622
TTAProgram::Procedure
Definition: Procedure.hh:55
TestApplication
Definition: TestApplication.hh:46
TTAMachine::Machine::Navigator
Definition: Machine.hh:186
TTAMachine::Bus::segmentCount
virtual int segmentCount() const
Definition: Bus.cc:385
DesignSpaceExplorerPlugin::addParameter
void addParameter(TCEString name, ExplorerPluginParameterType type, bool compulsory=true, TCEString defaultValue="", TCEString description="")
TTAProgram::Instruction::moveCount
int moveCount() const
Definition: Instruction.cc:176
RegisterQuantityCheck::canFixIntRegs
bool canFixIntRegs(const TTAMachine::Machine &mach) const
Definition: RegisterQuantityCheck.cc:380
DSDBManager::applicationIDs
std::set< RowID > applicationIDs() const
Definition: DSDBManager.cc:1381
TTAMachine::Machine
Definition: Machine.hh:73
TTAMachine::Port::parentUnit
Unit * parentUnit() const
SimpleICOptimizer::fixIntRegisters
bool fixIntRegisters(TTAMachine::Machine &mach)
Definition: SimpleICOptimizer.cc:398