OpenASIP  2.0
Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
InterpolatingRFEstimator Class Reference
Inheritance diagram for InterpolatingRFEstimator:
Inheritance graph
Collaboration diagram for InterpolatingRFEstimator:
Collaboration graph

Public Member Functions

 InterpolatingRFEstimator (const std::string &name)
 
virtual ~InterpolatingRFEstimator ()
 
 DESCRIPTION ("RF cost estimator plugin that estimates costs of RFs by generating" "cost database from cost values of HDB and uses interpolation to " "estimate the costs. In case there's no cost data available for the " "given RF the plugin interpolates the estimate if possible.")
 
bool estimateArea (const TTAMachine::BaseRegisterFile &rf, const IDF::RFImplementationLocation &, AreaInGates &area, HDB::HDBManager &hdb)
 
bool estimatePortWriteDelay (const TTAMachine::RFPort &port, const IDF::RFImplementationLocation &, DelayInNanoSeconds &delay, HDB::HDBManager &hdb)
 
bool estimatePortReadDelay (const TTAMachine::RFPort &port, const IDF::RFImplementationLocation &, DelayInNanoSeconds &delay, HDB::HDBManager &hdb)
 
bool estimateMaximumComputationDelay (const TTAMachine::BaseRegisterFile &rf, const IDF::RFImplementationLocation &, DelayInNanoSeconds &delay, HDB::HDBManager &hdb)
 
bool estimateEnergy (const TTAMachine::BaseRegisterFile &rf, const IDF::RFImplementationLocation &, const TTAProgram::Program &, const ExecutionTrace &trace, EnergyInMilliJoules &energy, HDB::HDBManager &hdb)
 
- Public Member Functions inherited from CostEstimator::RFCostEstimationPlugin
 RFCostEstimationPlugin (const std::string &name)
 
virtual ~RFCostEstimationPlugin ()
 
- Public Member Functions inherited from CostEstimator::CostEstimationPlugin
 CostEstimationPlugin (const std::string &name)
 
virtual ~CostEstimationPlugin ()
 
virtual std::string name () const
 
virtual std::string description () const
 

Private Types

typedef std::map< const EntryKeyProperty *, CostDBTypes::MatchTypeTableMatchTypeMap
 Search type for each entry type. More...
 

Private Member Functions

void initializeEstimator (const HDBManager &hdb)
 
CostDBTypes::EntryTable createSearch (const BaseRegisterFile &rf) const
 
void createSearchTypes ()
 

Private Attributes

CostDatabaseRegistrycostDatabaseRegistry_
 Registry of cost databases. More...
 
CostDatabasecostdb_
 Cost database being used. More...
 
SearchStrategystrategy_
 Search strategy to be used with the cost database. More...
 
EntryKeyPropertyrfileProperty_
 Entry key property of register file. More...
 
MatchTypeMap searchTypes_
 Types of matches used for searching entries from the cost database. More...
 
CostDBTypes::MatchTypeTable interpMatchType_
 Table of types of match. More...
 

Additional Inherited Members

- Protected Attributes inherited from CostEstimator::CostEstimationPlugin
std::string name_
 the name of the plugin class in the HDB; used to identify cost data More...
 

Detailed Description

Definition at line 55 of file InterpolatingRFEstimator.cc.

Member Typedef Documentation

◆ MatchTypeMap

Search type for each entry type.

Definition at line 414 of file InterpolatingRFEstimator.cc.

Constructor & Destructor Documentation

◆ InterpolatingRFEstimator()

InterpolatingRFEstimator::InterpolatingRFEstimator ( const std::string &  name)
inline

Definition at line 57 of file InterpolatingRFEstimator.cc.

References CostDatabaseRegistry::instance().

Here is the call graph for this function:

◆ ~InterpolatingRFEstimator()

virtual InterpolatingRFEstimator::~InterpolatingRFEstimator ( )
inlinevirtual

Definition at line 62 of file InterpolatingRFEstimator.cc.

62  {
63  }

Member Function Documentation

◆ createSearch()

CostDBTypes::EntryTable InterpolatingRFEstimator::createSearch ( const BaseRegisterFile rf) const
inlineprivate

Creates a search to cost database to find entries matching the given register file.

Parameters
rfRegister file which matches are searched.
Returns
Returns entries that matched the register file.

Definition at line 444 of file InterpolatingRFEstimator.cc.

444  {
445  CostDBTypes::EntryTable results;
446 
447  RFArchitecture rfArch(&rf);
448 
449  CostDBEntryKey* searchKey = new CostDBEntryKey(rfileProperty_);
450  searchKey->addField(
451  new EntryKeyField(
452  new EntryKeyDataInt(rfArch.size()),
455  searchKey->addField(
456  new EntryKeyField(
457  new EntryKeyDataInt(rfArch.readPortCount()),
460  searchKey->addField(
461  new EntryKeyField(
462  new EntryKeyDataInt(rfArch.writePortCount()),
465  searchKey->addField(
466  new EntryKeyField(
467  new EntryKeyDataInt(rfArch.width()),
469  searchKey->addField(
470  new EntryKeyField(
471  new EntryKeyDataInt(rfArch.latency()),
473  searchKey->addField(
474  new EntryKeyField(
475  new EntryKeyDataInt(rfArch.bidirPortCount()),
478  searchKey->addField(
479  new EntryKeyField(
480  new EntryKeyDataInt(rfArch.maxReads()),
483  searchKey->addField(
484  new EntryKeyField(
485  new EntryKeyDataInt(rfArch.maxWrites()),
488  searchKey->addField(
489  new EntryKeyField(
490  new EntryKeyDataBool(rfArch.hasGuardSupport()),
493  searchKey->addField(
494  new EntryKeyField(
495  new EntryKeyDataInt(rfArch.guardLatency()),
498 
499  // Perform a database query.
500  try {
501  results = costdb_->search(*searchKey, interpMatchType_);
502  } catch (Exception& e) {
503  delete searchKey;
504  searchKey = 0;
505  throw e;
506  }
507  delete searchKey;
508  searchKey = 0;
509  return results;
510 }

References CostDBEntryKey::addField(), HDB::RFArchitecture::bidirPortCount(), CostDBTypes::EKF_BIDIR_PORTS, CostDBTypes::EKF_BIT_WIDTH, CostDBTypes::EKF_GUARD_LATENCY, CostDBTypes::EKF_GUARD_SUPPORT, CostDBTypes::EKF_LATENCY, CostDBTypes::EKF_MAX_READS, CostDBTypes::EKF_MAX_WRITES, CostDBTypes::EKF_NUM_REGISTERS, CostDBTypes::EKF_READ_PORTS, CostDBTypes::EKF_WRITE_PORTS, EntryKeyProperty::fieldProperty(), HDB::RFArchitecture::guardLatency(), HDB::RFArchitecture::hasGuardSupport(), HDB::RFArchitecture::latency(), HDB::RFArchitecture::maxReads(), HDB::RFArchitecture::maxWrites(), HDB::RFArchitecture::readPortCount(), CostDatabase::search(), HDB::RFArchitecture::size(), HDB::RFArchitecture::width(), and HDB::RFArchitecture::writePortCount().

Here is the call graph for this function:

◆ createSearchTypes()

void InterpolatingRFEstimator::createSearchTypes ( )
inlineprivate

Creates types of matches used for searching cost database entries.

Definition at line 516 of file InterpolatingRFEstimator.cc.

516  {
517 
518  interpMatchType_.push_back(
519  new MatchType(
522  interpMatchType_.push_back(
523  new MatchType(
526  interpMatchType_.push_back(
527  new MatchType(
530  interpMatchType_.push_back(
531  new MatchType(
534  interpMatchType_.push_back(
535  new MatchType(
538  interpMatchType_.push_back(
539  new MatchType(
542  interpMatchType_.push_back(
543  new MatchType(
546  interpMatchType_.push_back(
547  new MatchType(
550  interpMatchType_.push_back(
551  new MatchType(
554  interpMatchType_.push_back(
555  new MatchType(
558 }

References CostDBTypes::EKF_BIDIR_PORTS, CostDBTypes::EKF_BIT_WIDTH, CostDBTypes::EKF_GUARD_LATENCY, CostDBTypes::EKF_GUARD_SUPPORT, CostDBTypes::EKF_LATENCY, CostDBTypes::EKF_MAX_READS, CostDBTypes::EKF_MAX_WRITES, CostDBTypes::EKF_NUM_REGISTERS, CostDBTypes::EKF_READ_PORTS, CostDBTypes::EKF_WRITE_PORTS, EntryKeyProperty::fieldProperty(), CostDBTypes::MATCH_EXACT, and CostDBTypes::MATCH_INTERPOLATION.

Here is the call graph for this function:

◆ DESCRIPTION()

InterpolatingRFEstimator::DESCRIPTION ( "RF cost estimator plugin that estimates costs of RFs by generating" "cost database from cost values of HDB and uses interpolation to " "estimate the costs. In case there's no cost data available for the " "given RF the plugin interpolates the estimate if possible."  )

◆ estimateArea()

bool InterpolatingRFEstimator::estimateArea ( const TTAMachine::BaseRegisterFile rf,
const IDF::RFImplementationLocation ,
AreaInGates area,
HDB::HDBManager hdb 
)
inlinevirtual

Estimates the register file's area by fetching cost data named 'area' from HDB.

Reimplemented from CostEstimator::RFCostEstimationPlugin.

Definition at line 77 of file InterpolatingRFEstimator.cc.

81  {
82 
83 //#define DEBUG_AREA_ESTIMATION
84  try {
87  CostDBTypes::EntryTable::const_iterator i = results.begin();
88  area = 0.0;
89  // worst case area is returned
90  for (;i < results.end(); i++) {
91  for (int n = 0; n < (*i)->statisticsCount(); n++) {
92  if (area < (*i)->statistics(n).area()) {
93  area = (*i)->statistics(n).area();
94  }
95  }
96  }
97  } catch (Exception& e) {
98 #ifdef DEBUG_AREA_ESTIMATION
99  std::cout << "Exception: " << e.name() << std::endl
100  << "Error message: " << e.errorMsg() << std::endl
101  << "File: " << e.fileName() << std::endl
102  <<" Line: " e.lineNum() << std::endl;
103 #endif //DEBUG_AREA_ESTIMATION
104  return false;
105  }
106 #ifdef DEBUG_AREA_ESTIMATION
108  << rf.name() << " area " << area << std::endl;
109 #endif //DEBUG_AREA_ESTIMATION
110  return true;
111  }

References Exception::fileName(), Exception::lineNum(), Application::logStream(), and TTAMachine::Component::name().

Here is the call graph for this function:

◆ estimateEnergy()

bool InterpolatingRFEstimator::estimateEnergy ( const TTAMachine::BaseRegisterFile rf,
const IDF::RFImplementationLocation ,
const TTAProgram::Program ,
const ExecutionTrace trace,
EnergyInMilliJoules energy,
HDB::HDBManager hdb 
)
inlinevirtual

Estimates the energy consumed by given RF.

Estimate is done by computing the sum of all register file access type energies and RF idle energy. Register file access energies are stored with entries named 'rf_access_energy Nr Nw'. Nr is the number of read accesses, Nw the number of write accesses. For example, 'rf_access_energy 1 3' is the name of entry which tells how much energy is consumed by the RF in case RF is accessed simultaneously once for reading and trice for writing. Idle energy is stored in entry 'rf_idle_energy'.

Reimplemented from CostEstimator::RFCostEstimationPlugin.

Definition at line 268 of file InterpolatingRFEstimator.cc.

274  {
275 
276 //#define DEBUG_ENERGY_ESTIMATION
277  energy = 0.0;
278  ClockCycleCount cyclesWithRFAccess = 0;
279  CostDBTypes::EntryTable results;
280  try {
281  initializeEstimator(hdb);
282  results = createSearch(rf);
283 
284 #ifdef DEBUG_ENERGY_ESTIMATION
286  << "## register file " << rf.name() << ": " << std::endl;
287 #endif
288 
292  const_iterator i = accessList->begin();
293  i != accessList->end(); ++i) {
294  const ExecutionTrace::ConcurrentRFAccessCount& accessCount =
295  *i;
296 
297  const std::size_t reads = accessCount.get<0>();
298  const std::size_t writes = accessCount.get<1>();
299  const ClockCycleCount count = accessCount.get<2>();
300 
301  const std::string dataName =
302  std::string("rf_access_energy ") +
303  Conversion::toString(reads) + " " +
304  Conversion::toString(writes);
305  try {
306  CostDBTypes::EntryTable::const_iterator i = results.begin();
307  for (;i < results.end(); i++) {
308 
309  // if there are multilpe reults for the rf access
310  // energy, select the worst case
311  // @todo ensure that multiple result is not a bug
312  EnergyInMilliJoules energyTemp = 0.0;
313  for (int n = 0; n < (*i)->statisticsCount(); n++) {
314  if (((*i)->statistics(n).energyReadWrite(
315  reads, writes) * count) > energyTemp) {
316  energyTemp =
317  (*i)->statistics(n).energyReadWrite(
318  reads, writes) * count;
319  }
320 #ifdef DEBUG_ENERGY_ESTIMATION
321  if (n > 0) {
323  << " NOTE: Multiple register access energy "
324  << "results found!"
325  << " "
326  << (*i)->statistics(n).energyReadWrite(
327  reads, writes)
328  << std::endl;
329  }
330 #endif
331  }
332  energy += energyTemp;
333  }
334  cyclesWithRFAccess += count;
335  } catch (const KeyNotFound&) {
336  // if no data found, don't even try to estimate the area
337  delete accessList;
338  accessList = NULL;
340  << "Cost estimation data '" << dataName
341  << "' not found in HDB." << std::endl;
342  return false;
343  } catch (const Exception& e) {
344  delete accessList;
345  accessList = NULL;
346  debugLog(e.errorMessage());
347  return false;
348  }
349  }
350  delete accessList;
351  accessList = NULL;
352  } catch (const Exception& e) {
353  debugLog(e.errorMessage());
354  return false;
355  }
356 
357  // add the cost of RF idling
358  const ClockCycleCount idleCycles =
359  trace.simulatedCycleCount() - cyclesWithRFAccess;
360  const std::string dataName = std::string("rf_idle_energy");
361 
362  try {
363  CostDBTypes::EntryTable::const_iterator i = results.begin();
364  for (;i < results.end(); i++) {
365 
366  // if there are multilpe reults for the rf idle energy,
367  // select the worst case
368  // @todo Ensure that multiple results is not a bug
369  EnergyInMilliJoules energyTemp = 0.0;
370  for (int n = 0; n < (*i)->statisticsCount(); n++) {
371  if (((*i)->statistics(n).energyIdle() * idleCycles) >
372  energyTemp) {
373 
374  energyTemp =
375  (*i)->statistics(n).energyIdle() * idleCycles;
376  }
377 #ifdef DEBUG_ENERGY_ESTIMATION
378  if (n > 0) {
380  << " NOTE: Multiple register idle energy "
381  << "results found!"
382  << " " << (*i)->statistics(n).energyIdle()
383  << std::endl;
384  }
385 #endif
386  }
387  energy += energyTemp;
388  }
389  } catch (const KeyNotFound&) {
390  // if no data found, don't even try to estimate the area
392  << "Cost estimation data '" << dataName
393  << "' not found in HDB." << std::endl;
394  return false;
395  } catch (const Exception& e) {
396  debugLog(e.errorMessage());
397  return false;
398  }
399 
400  return true;
401  }

References debugLog, Exception::errorMessage(), Application::logStream(), TTAMachine::Component::name(), ExecutionTrace::registerFileAccessCounts(), ExecutionTrace::simulatedCycleCount(), Conversion::toString(), and trace.

Here is the call graph for this function:

◆ estimateMaximumComputationDelay()

bool InterpolatingRFEstimator::estimateMaximumComputationDelay ( const TTAMachine::BaseRegisterFile rf,
const IDF::RFImplementationLocation ,
DelayInNanoSeconds delay,
HDB::HDBManager hdb 
)
inlinevirtual

Estimates the register file maximum computation delay by fetching cost data named 'computation_delay' from HDB.

Reimplemented from CostEstimator::RFCostEstimationPlugin.

Definition at line 225 of file InterpolatingRFEstimator.cc.

229  {
230 
231 //#define DEBUG_DELAY_ESTIMATION
232  try {
233  initializeEstimator(hdb);
234  CostDBTypes::EntryTable results = createSearch(rf);
235  CostDBTypes::EntryTable::const_iterator i = results.begin();
236  delay = 0.0;
237  // the worst case is returned if found multiple results
238  for (;i < results.end(); i++) {
239  for (int n = 0; n < (*i)->statisticsCount(); n++) {
240  if (delay < (*i)->statistics(n).delay()) {
241  delay = (*i)->statistics(n).delay();
242  }
243  }
244  }
245  } catch (Exception& e) {
246  return false;
247  }
248 #ifdef DEBUG_DELAY_ESTIMATION
249  Application::logStream() << rf.name()
250  << " computation delay "
251  << delay << std::endl;
252 #endif // DEBUG_DELAY_ESTIMATION
253  return true;
254  }

References Application::logStream(), and TTAMachine::Component::name().

Here is the call graph for this function:

◆ estimatePortReadDelay()

bool InterpolatingRFEstimator::estimatePortReadDelay ( const TTAMachine::RFPort port,
const IDF::RFImplementationLocation ,
DelayInNanoSeconds delay,
HDB::HDBManager hdb 
)
inlinevirtual

Estimates the register file port read delay by fetching cost data named 'output_delay' from HDB.

Assumes that all ports have the same output delay, that is, there is only one 'output_delay' entry for a RF in HDB.

Reimplemented from CostEstimator::RFCostEstimationPlugin.

Definition at line 175 of file InterpolatingRFEstimator.cc.

179  {
180 
181 //#define DEBUG_DELAY_ESTIMATION
182  try {
183  initializeEstimator(hdb);
185  CostDBTypes::EntryTable::const_iterator i = results.begin();
186  delay = 0.0;
187  // worst case delay is returned
188  for (;i < results.end(); i++) {
189  for (int n = 0; n < (*i)->statisticsCount(); n++) {
190 #ifndef UNIQUE_PORT_DELAY
191  if (delay < (*i)->statistics(n).delayPort("output_delay")) {
192  delay = (*i)->statistics(n).delayPort("output_delay");
193  }
194 #endif // UNIQUE_PORT_DELAY
195 #ifdef UNIQUE_PORT_DELAY
196  // this one is used if defferent ports of an unit
197  // can have different delays
198  if (delay < (*i)->statistics(n).delayPort(port.name())) {
199  delay = (*i)->statistics(n).delayPort(port.name());
200  }
201 #endif // UNIQUE_PORT_DELAY
202  }
203  }
204  } catch (Exception& e) {
205 #ifdef DEBUG_DELAY_ESTIMATION
206  Application::logStream() << "No output_delay data for register "
207  << "file "
208  << port.parentUnit()->name()
209  << " found in HDB." << std::endl;
210 #endif // DEBUG_DELAY_ESTIMATION
211  return false;
212  }
213 #ifdef DEBUG_DELAY_ESTIMATION
215  << port.name() << " (port) delay " << delay << std::endl;
216 #endif // DEBUG_DELAY_ESTIMATION
217  return true;
218  }

References Application::logStream(), TTAMachine::Port::name(), TTAMachine::Component::name(), and TTAMachine::RFPort::parentUnit().

Here is the call graph for this function:

◆ estimatePortWriteDelay()

bool InterpolatingRFEstimator::estimatePortWriteDelay ( const TTAMachine::RFPort port,
const IDF::RFImplementationLocation ,
DelayInNanoSeconds delay,
HDB::HDBManager hdb 
)
inlinevirtual

Estimates the register file port write delay by fetching cost data named 'input_delay' from HDB.

Assumes that all ports have the same input delay, that is, there is only one 'input_delay' entry for a RF in HDB.

Reimplemented from CostEstimator::RFCostEstimationPlugin.

Definition at line 121 of file InterpolatingRFEstimator.cc.

125  {
126 
127 //#define DEBUG_DELAY_ESTIMATION
128  try {
129  initializeEstimator(hdb);
131 
132  CostDBTypes::EntryTable::const_iterator i = results.begin();
133  delay = 0.0;
134  // worst case delay is returned
135  for (;i < results.end(); i++) {
136  for (int n = 0; n < (*i)->statisticsCount(); n++) {
137 #ifndef UNIQUE_PORT_DELAY
138  if (delay < (*i)->statistics(n).delayPort("input_delay")) {
139  delay = (*i)->statistics(n).delayPort("input_delay");
140  }
141 #endif // UNIQUE_PORT_DELAY
142 #ifdef UNIQUE_PORT_DELAY
143  // this one is used if defferent ports of an unit
144  // can have different delays
145  if (delay < (*i)->statistics(n).delayPort(port.name())) {
146  delay = (*i)->statistics(n).delayPort(port.name());
147  }
148 #endif // UNIQUE_PORT_DELAY
149  }
150  }
151  } catch (Exception& e) {
152 #ifdef DEBUG_DELAY_ESTIMATION
153  Application::logStream() << "No input_delay data for register "
154  << "file "
155  << port.parentUnit()->name()
156  << " found in HDB." << std::endl;
157 #endif // DEBUG_DELAY_ESTIMATION
158  return false;
159  }
160 #ifdef DEBUG_DELAY_ESTIMATION
162  << port.name() << " (port) delay " << delay << std::endl;
163 #endif // DEBUG_DELAY_ESTIMATION
164  return true;
165  }

References Application::logStream(), TTAMachine::Port::name(), TTAMachine::Component::name(), and TTAMachine::RFPort::parentUnit().

Here is the call graph for this function:

◆ initializeEstimator()

void InterpolatingRFEstimator::initializeEstimator ( const HDBManager hdb)
inlineprivate

Initializes the plugin.

Parameters
hdbThe HDB to be used in searching entries. Cost database is created in basis of this HDB.

Definition at line 427 of file InterpolatingRFEstimator.cc.

References CostDatabaseRegistry::costDatabase(), CostDBTypes::EK_RFILE, EntryKeyProperty::find(), and CostDatabase::setSearchStrategy().

Here is the call graph for this function:

Member Data Documentation

◆ costDatabaseRegistry_

CostDatabaseRegistry* InterpolatingRFEstimator::costDatabaseRegistry_
private

Registry of cost databases.

Definition at line 405 of file InterpolatingRFEstimator.cc.

◆ costdb_

CostDatabase* InterpolatingRFEstimator::costdb_
private

Cost database being used.

Definition at line 407 of file InterpolatingRFEstimator.cc.

◆ interpMatchType_

CostDBTypes::MatchTypeTable InterpolatingRFEstimator::interpMatchType_
private

Table of types of match.

Definition at line 418 of file InterpolatingRFEstimator.cc.

◆ rfileProperty_

EntryKeyProperty* InterpolatingRFEstimator::rfileProperty_
private

Entry key property of register file.

Definition at line 411 of file InterpolatingRFEstimator.cc.

◆ searchTypes_

MatchTypeMap InterpolatingRFEstimator::searchTypes_
private

Types of matches used for searching entries from the cost database.

Definition at line 416 of file InterpolatingRFEstimator.cc.

◆ strategy_

SearchStrategy* InterpolatingRFEstimator::strategy_
private

Search strategy to be used with the cost database.

Definition at line 409 of file InterpolatingRFEstimator.cc.


The documentation for this class was generated from the following file:
CostDBTypes::EK_RFILE
static const std::string EK_RFILE
Entry type for register files.
Definition: CostDBTypes.hh:65
InterpolatingRFEstimator::costdb_
CostDatabase * costdb_
Cost database being used.
Definition: InterpolatingRFEstimator.cc:407
CostDBTypes::EKF_GUARD_SUPPORT
static const std::string EKF_GUARD_SUPPORT
Field type for guard support in an entry.
Definition: CostDBTypes.hh:104
MatchType
Definition: MatchType.hh:49
CostDBTypes::EKF_BIT_WIDTH
static const std::string EKF_BIT_WIDTH
Field type for bit width of an entry.
Definition: CostDBTypes.hh:78
InterpolatingRFEstimator::strategy_
SearchStrategy * strategy_
Search strategy to be used with the cost database.
Definition: InterpolatingRFEstimator.cc:409
Exception::lineNum
int lineNum() const
TTAMachine::Component::name
virtual TCEString name() const
Definition: MachinePart.cc:125
CostEstimator::CostEstimationPlugin::name
virtual std::string name() const
Definition: CostEstimationPlugin.cc:63
CostDatabaseRegistry::costDatabase
CostDatabase & costDatabase(const HDB::HDBManager &hdb)
Definition: CostDatabaseRegistry.cc:79
CostDBTypes::EKF_WRITE_PORTS
static const std::string EKF_WRITE_PORTS
Field type for number of write ports in an entry.
Definition: CostDBTypes.hh:88
CostDBTypes::EntryTable
std::vector< CostDBEntry * > EntryTable
Table of database entries.
Definition: CostDBTypes.hh:111
EntryKeyField
Definition: EntryKeyField.hh:45
InterpolatingRFEstimator::rfileProperty_
EntryKeyProperty * rfileProperty_
Entry key property of register file.
Definition: InterpolatingRFEstimator.cc:411
Application::logStream
static std::ostream & logStream()
Definition: Application.cc:155
InterpolatingRFEstimator::createSearchTypes
void createSearchTypes()
Definition: InterpolatingRFEstimator.cc:516
Conversion::toString
static std::string toString(const T &source)
CostDBTypes::MATCH_EXACT
@ MATCH_EXACT
Definition: CostDBTypes.hh:56
CostDatabaseRegistry::instance
static CostDatabaseRegistry & instance()
Definition: CostDatabaseRegistry.cc:60
Exception::fileName
std::string fileName() const
CostEstimator::EnergyInMilliJoules
double EnergyInMilliJoules
type for consumed energy in milli joules
Definition: CostEstimatorTypes.hh:37
CostDBTypes::EKF_NUM_REGISTERS
static const std::string EKF_NUM_REGISTERS
Field type for number of registers in an entry.
Definition: CostDBTypes.hh:84
CostDBTypes::MATCH_INTERPOLATION
@ MATCH_INTERPOLATION
Definition: CostDBTypes.hh:59
FilterSearch
Definition: FilterSearch.hh:63
CostDatabase::search
CostDBTypes::EntryTable search(const CostDBEntryKey &searchKey, const CostDBTypes::MatchTypeTable &match) const
Definition: CostDatabase.cc:888
CostDBEntryKey::addField
void addField(EntryKeyField *field)
Definition: CostDBEntryKey.cc:88
InterpolatingRFEstimator::initializeEstimator
void initializeEstimator(const HDBManager &hdb)
Definition: InterpolatingRFEstimator.cc:427
Exception
Definition: Exception.hh:54
CostDBTypes::EKF_BIDIR_PORTS
static const std::string EKF_BIDIR_PORTS
Field type for number of bidirectional ports in an entry.
Definition: CostDBTypes.hh:90
Exception::errorMessage
std::string errorMessage() const
Definition: Exception.cc:123
ExecutionTrace::registerFileAccessCounts
ConcurrentRFAccessCountList * registerFileAccessCounts(RegisterFileID registerFile) const
Definition: ExecutionTrace.cc:505
HDB::RFArchitecture
Definition: RFArchitecture.hh:50
InterpolatingRFEstimator::costDatabaseRegistry_
CostDatabaseRegistry * costDatabaseRegistry_
Registry of cost databases.
Definition: InterpolatingRFEstimator.cc:405
TTAMachine::RFPort::parentUnit
BaseRegisterFile * parentUnit() const
Definition: RFPort.cc:93
InterpolatingRFEstimator::interpMatchType_
CostDBTypes::MatchTypeTable interpMatchType_
Table of types of match.
Definition: InterpolatingRFEstimator.cc:418
CostDBTypes::EKF_MAX_WRITES
static const std::string EKF_MAX_WRITES
Field type for number of max simultaneous writes in an entry.
Definition: CostDBTypes.hh:94
TTAMachine::Port::name
virtual std::string name() const
Definition: Port.cc:141
ExecutionTrace::simulatedCycleCount
ClockCycleCount simulatedCycleCount() const
Definition: ExecutionTrace.cc:764
trace
ExecutionTrace * trace
the execution trace database
Definition: EstimatorCmdLineUI.cc:66
ExecutionTrace::ConcurrentRFAccessCount
boost::tuple< RegisterAccessCount, RegisterAccessCount, ClockCycleCount > ConcurrentRFAccessCount
type to be used as a key for storing concurrent RF access info
Definition: ExecutionTrace.hh:105
EntryKeyDataInt
Definition: EntryKeyData.hh:83
CostDBTypes::EKF_READ_PORTS
static const std::string EKF_READ_PORTS
Field type for number of read ports in an entry.
Definition: CostDBTypes.hh:86
ClockCycleCount
CycleCount ClockCycleCount
Alias for ClockCycleCount.
Definition: SimulatorConstants.hh:57
CostDBTypes::EKF_MAX_READS
static const std::string EKF_MAX_READS
Field type for number of max simultaneous reads in an entry.
Definition: CostDBTypes.hh:92
CostDBEntryKey
Definition: CostDBEntryKey.hh:52
ExecutionTrace::ConcurrentRFAccessCountList
std::list< ConcurrentRFAccessCount > ConcurrentRFAccessCountList
type to be used for a list of concurrent RF accesses
Definition: ExecutionTrace.hh:108
KeyNotFound
Definition: Exception.hh:285
CostEstimator::RFCostEstimationPlugin::RFCostEstimationPlugin
RFCostEstimationPlugin(const std::string &name)
Definition: RFCostEstimationPlugin.cc:44
EntryKeyProperty::find
static EntryKeyProperty * find(std::string type)
Definition: EntryKeyProperty.cc:150
EntryKeyDataBool
Definition: EntryKeyData.hh:166
CostDBTypes::EKF_GUARD_LATENCY
static const std::string EKF_GUARD_LATENCY
Field type for guard latency in an entry.
Definition: CostDBTypes.hh:106
CostDatabase::setSearchStrategy
void setSearchStrategy(SearchStrategy *strategy)
Definition: CostDatabase.cc:985
debugLog
#define debugLog(text)
Definition: Application.hh:95
CostDBTypes::EKF_LATENCY
static const std::string EKF_LATENCY
Field type for latency of an entry.
Definition: CostDBTypes.hh:82
InterpolatingRFEstimator::createSearch
CostDBTypes::EntryTable createSearch(const BaseRegisterFile &rf) const
Definition: InterpolatingRFEstimator.cc:444
EntryKeyProperty::fieldProperty
EntryKeyFieldProperty * fieldProperty(std::string field) const
Definition: EntryKeyProperty.cc:104