Go to the documentation of this file.
56 "Simple RF cost estimator plugin that estimates costs of RFs "
57 "simply by looking up direct matches from HDB. In case there's "
58 "no cost data available for the given RF, it's unable to estimate "
59 "it by using linearization etc.");
80 #ifdef DEBUG_AREA_ESTIMATION
82 << rf.name() <<
" area " << area << std::endl;
120 #ifdef DEBUG_DELAY_ESTIMATION
122 << port.name() <<
" write delay " << delay << std::endl;
128 <<
"No input_delay cost data found for RF "
160 #ifdef DEBUG_DELAY_ESTIMATION
162 << port.name() <<
" read delay " << delay << std::endl;
168 <<
"No output_delay cost data found for RF "
197 #ifdef DEBUG_DELAY_ESTIMATION
199 << rf.name() <<
" computation delay " << delay << std::endl;
205 <<
"No computation_delay cost data found for RF "
242 #ifdef DEBUG_ENERGY_ESTIMATION
244 <<
"## register file " << rf.
name() <<
": " << std::endl;
250 const_iterator i = accessList->begin();
251 i != accessList->end(); ++i) {
255 const std::size_t reads = accessCount.get<0>();
256 const std::size_t writes = accessCount.get<1>();
258 const std::string dataName =
259 std::string(
"rf_access_energy ") +
268 #ifdef DEBUG_ENERGY_ESTIMATION
270 <<
"## reads " << accessCount.get<0>() <<
" "
271 <<
"writes " << accessCount.get<1>() <<
" = "
273 << count <<
" = " << energyOfAccess << std::endl;
275 energy += energyOfAccess;
276 cyclesWithRFAccess += count;
282 <<
"Cost estimation data '" << dataName
283 <<
"' not found in HDB." << std::endl;
302 const std::string dataName = std::string(
"rf_idle_energy");
309 #ifdef DEBUG_ENERGY_ESTIMATION
311 <<
"## idle energy " << energyFromDB.
doubleValue() <<
" times "
312 << idleCycles <<
" = " << idleEnergy << std::endl;
315 energy += idleEnergy;
320 <<
"Cost estimation data '" << dataName
321 <<
"' not found in HDB." << std::endl;
bool estimateEnergy(const TTAMachine::BaseRegisterFile &rf, const IDF::RFImplementationLocation &implementation, const TTAProgram::Program &, const ExecutionTrace &trace, EnergyInMilliJoules &energy, HDB::HDBManager &hdb)
bool estimateArea(const TTAMachine::BaseRegisterFile &, const IDF::RFImplementationLocation &implementation, AreaInGates &area, HDB::HDBManager &hdb)
virtual TCEString name() const
#define DESCRIPTION(TEXT__)
IDF::MachineImplementation * implementation
the implementation definition of the estimated processor
double AreaInGates
type for area values in equivalent gates
static std::ostream & logStream()
static std::string toString(const T &source)
virtual double doubleValue() const
DataObject rfCostEstimationData(const std::string &valueName, RowID implementationId, const std::string &pluginName) const
double EnergyInMilliJoules
type for consumed energy in milli joules
StrictMatchRFEstimator(const std::string &name)
#define EXPORT_RF_COST_ESTIMATOR_PLUGIN(PLUGIN_NAME__)
bool estimatePortReadDelay(const TTAMachine::RFPort &, const IDF::RFImplementationLocation &implementation, DelayInNanoSeconds &delay, HDB::HDBManager &hdb)
bool estimateMaximumComputationDelay(const TTAMachine::BaseRegisterFile &, const IDF::RFImplementationLocation &implementation, DelayInNanoSeconds &delay, HDB::HDBManager &hdb)
std::string errorMessage() const
ConcurrentRFAccessCountList * registerFileAccessCounts(RegisterFileID registerFile) const
double DelayInNanoSeconds
type for propagation delays in nano seconds
ClockCycleCount simulatedCycleCount() const
ExecutionTrace * trace
the execution trace database
boost::tuple< RegisterAccessCount, RegisterAccessCount, ClockCycleCount > ConcurrentRFAccessCount
type to be used as a key for storing concurrent RF access info
CycleCount ClockCycleCount
Alias for ClockCycleCount.
std::list< ConcurrentRFAccessCount > ConcurrentRFAccessCountList
type to be used for a list of concurrent RF accesses
bool estimatePortWriteDelay(const TTAMachine::RFPort &, const IDF::RFImplementationLocation &implementation, DelayInNanoSeconds &delay, HDB::HDBManager &hdb)
virtual ~StrictMatchRFEstimator()