OpenASIP 2.2
Loading...
Searching...
No Matches
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.
 

Private Member Functions

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

Private Attributes

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

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
 

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_, and 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 {
446
447 RFArchitecture rfArch(&rf);
448
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}
void addField(EntryKeyField *field)
static const std::string EKF_READ_PORTS
Field type for number of read ports in an entry.
static const std::string EKF_MAX_WRITES
Field type for number of max simultaneous writes in an entry.
static const std::string EKF_BIDIR_PORTS
Field type for number of bidirectional ports in an entry.
static const std::string EKF_GUARD_SUPPORT
Field type for guard support in an entry.
static const std::string EKF_LATENCY
Field type for latency of an entry.
static const std::string EKF_GUARD_LATENCY
Field type for guard latency in an entry.
static const std::string EKF_MAX_READS
Field type for number of max simultaneous reads in an entry.
static const std::string EKF_WRITE_PORTS
Field type for number of write ports in an entry.
static const std::string EKF_NUM_REGISTERS
Field type for number of registers in an entry.
std::vector< CostDBEntry * > EntryTable
Table of database entries.
static const std::string EKF_BIT_WIDTH
Field type for bit width of an entry.
CostDBTypes::EntryTable search(const CostDBEntryKey &searchKey, const CostDBTypes::MatchTypeTable &match) const
EntryKeyFieldProperty * fieldProperty(std::string field) const
CostDBTypes::MatchTypeTable interpMatchType_
Table of types of match.
EntryKeyProperty * rfileProperty_
Entry key property of register file.
CostDatabase * costdb_
Cost database being used.

References CostDBEntryKey::addField(), HDB::RFArchitecture::bidirPortCount(), costdb_, 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(), interpMatchType_, HDB::RFArchitecture::latency(), HDB::RFArchitecture::maxReads(), HDB::RFArchitecture::maxWrites(), HDB::RFArchitecture::readPortCount(), rfileProperty_, CostDatabase::search(), HDB::RFArchitecture::size(), HDB::RFArchitecture::width(), and HDB::RFArchitecture::writePortCount().

Referenced by estimateArea(), estimateEnergy(), estimateMaximumComputationDelay(), estimatePortReadDelay(), and estimatePortWriteDelay().

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(), interpMatchType_, CostDBTypes::MATCH_EXACT, CostDBTypes::MATCH_INTERPOLATION, and rfileProperty_.

Referenced by initializeEstimator().

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 }
static std::ostream & logStream()
std::string fileName() const
int lineNum() const
void initializeEstimator(const HDBManager &hdb)
CostDBTypes::EntryTable createSearch(const BaseRegisterFile &rf) const
virtual TCEString name() const

References createSearch(), Exception::fileName(), initializeEstimator(), 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;
280 try {
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;
347 return false;
348 }
349 }
350 delete accessList;
351 accessList = NULL;
352 } catch (const Exception& e) {
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) {
397 return false;
398 }
399
400 return true;
401 }
#define debugLog(text)
ExecutionTrace * trace
the execution trace database
CycleCount ClockCycleCount
Alias for ClockCycleCount.
static std::string toString(const T &source)
std::string errorMessage() const
Definition Exception.cc:123
std::list< ConcurrentRFAccessCount > ConcurrentRFAccessCountList
type to be used for a list of concurrent RF accesses
boost::tuple< RegisterAccessCount, RegisterAccessCount, ClockCycleCount > ConcurrentRFAccessCount
type to be used as a key for storing concurrent RF access info
ClockCycleCount simulatedCycleCount() const
ConcurrentRFAccessCountList * registerFileAccessCounts(RegisterFileID registerFile) const
double EnergyInMilliJoules
type for consumed energy in milli joules

References createSearch(), debugLog, Exception::errorMessage(), initializeEstimator(), 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 {
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
250 << " computation delay "
251 << delay << std::endl;
252#endif // DEBUG_DELAY_ESTIMATION
253 return true;
254 }

References createSearch(), initializeEstimator(), 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 {
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 }
virtual std::string name() const
Definition Port.cc:141
BaseRegisterFile * parentUnit() const
Definition RFPort.cc:93

References createSearch(), initializeEstimator(), Application::logStream(), TTAMachine::Component::name(), TTAMachine::Port::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 {
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 createSearch(), initializeEstimator(), Application::logStream(), TTAMachine::Component::name(), TTAMachine::Port::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.

427 {
428
430 strategy_ = new FilterSearch();
434}
static const std::string EK_RFILE
Entry type for register files.
CostDatabase & costDatabase(const HDB::HDBManager &hdb)
void setSearchStrategy(SearchStrategy *strategy)
static EntryKeyProperty * find(std::string type)
SearchStrategy * strategy_
Search strategy to be used with the cost database.

References CostDatabaseRegistry::costDatabase(), costDatabaseRegistry_, costdb_, createSearchTypes(), CostDBTypes::EK_RFILE, EntryKeyProperty::find(), rfileProperty_, CostDatabase::setSearchStrategy(), and strategy_.

Referenced by estimateArea(), estimateEnergy(), estimateMaximumComputationDelay(), estimatePortReadDelay(), and estimatePortWriteDelay().

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.

Referenced by initializeEstimator(), and InterpolatingRFEstimator().

◆ costdb_

CostDatabase* InterpolatingRFEstimator::costdb_
private

Cost database being used.

Definition at line 407 of file InterpolatingRFEstimator.cc.

Referenced by createSearch(), and initializeEstimator().

◆ interpMatchType_

CostDBTypes::MatchTypeTable InterpolatingRFEstimator::interpMatchType_
private

Table of types of match.

Definition at line 418 of file InterpolatingRFEstimator.cc.

Referenced by createSearch(), and createSearchTypes().

◆ rfileProperty_

EntryKeyProperty* InterpolatingRFEstimator::rfileProperty_
private

Entry key property of register file.

Definition at line 411 of file InterpolatingRFEstimator.cc.

Referenced by createSearch(), createSearchTypes(), and initializeEstimator().

◆ 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.

Referenced by initializeEstimator().


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