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;
ExecutionTrace * trace
the execution trace database
IDF::MachineImplementation * implementation
the implementation definition of the estimated processor
#define EXPORT_RF_COST_ESTIMATOR_PLUGIN(PLUGIN_NAME__)
CycleCount ClockCycleCount
Alias for ClockCycleCount.
static std::ostream & logStream()
static std::string toString(const T &source)
virtual std::string name() const
std::string name_
the name of the plugin class in the HDB; used to identify cost data
virtual double doubleValue() const
std::string errorMessage() const
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
DataObject rfCostEstimationData(const std::string &valueName, RowID implementationId, const std::string &pluginName) const
bool estimateEnergy(const TTAMachine::BaseRegisterFile &rf, const IDF::RFImplementationLocation &implementation, const TTAProgram::Program &, const ExecutionTrace &trace, EnergyInMilliJoules &energy, HDB::HDBManager &hdb)
StrictMatchRFEstimator(const std::string &name)
bool estimateArea(const TTAMachine::BaseRegisterFile &, const IDF::RFImplementationLocation &implementation, AreaInGates &area, HDB::HDBManager &hdb)
DESCRIPTION("Simple RF cost estimator plugin that estimates costs of RFs " "simply by looking up direct matches from HDB. In case there's " "no cost data available for the given RF, it's unable to estimate " "it by using linearization etc.")
bool estimatePortWriteDelay(const TTAMachine::RFPort &, const IDF::RFImplementationLocation &implementation, DelayInNanoSeconds &delay, HDB::HDBManager &hdb)
bool estimatePortReadDelay(const TTAMachine::RFPort &, const IDF::RFImplementationLocation &implementation, DelayInNanoSeconds &delay, HDB::HDBManager &hdb)
virtual ~StrictMatchRFEstimator()
bool estimateMaximumComputationDelay(const TTAMachine::BaseRegisterFile &, const IDF::RFImplementationLocation &implementation, DelayInNanoSeconds &delay, HDB::HDBManager &hdb)
virtual TCEString name() const
double AreaInGates
type for area values in equivalent gates
double DelayInNanoSeconds
type for propagation delays in nano seconds
double EnergyInMilliJoules
type for consumed energy in milli joules