Go to the documentation of this file.
56 "Simple FU cost estimator plugin that estimates costs of FUs "
57 "simply by looking up direct matches from HDB. In case there's "
58 "no cost data available for the given FU, it's unable to estimate "
59 "it by using linearization etc.");
78 #ifdef DEBUG_AREA_ESTIMATION
80 << fu.name() <<
" area " << area << std::endl;
119 <<
"No input_delay cost data found for FU "
155 <<
"No output_delay cost data found for FU "
187 <<
"No computation_delay cost data found for FU "
219 #ifdef DEBUG_ENERGY_ESTIMATION
221 <<
"## function unit " << fu.
name() <<
": " << std::endl;
227 const_iterator i = operationTriggers->begin();
228 i != operationTriggers->end(); ++i) {
237 triggerCount.get<1>();
239 const std::string dataName =
240 std::string(
"operation_execution_energy ") +
248 #ifdef DEBUG_ENERGY_ESTIMATION
250 <<
"## " << operation <<
" = "
252 << count <<
" = " << energyOfAccess << std::endl;
254 energy += energyOfAccess;
255 cyclesWithFUAccess += count;
258 delete operationTriggers;
259 operationTriggers = NULL;
261 <<
"Cost estimation data '" << dataName
262 <<
"' not found in HDB." << std::endl;
265 delete operationTriggers;
266 operationTriggers = NULL;
272 delete operationTriggers;
273 operationTriggers = NULL;
282 const std::string dataName = std::string(
"fu_idle_energy");
289 #ifdef DEBUG_ENERGY_ESTIMATION
291 <<
"## idle energy " << energyFromDB.
doubleValue() <<
" times "
292 << idleCycles <<
" = " << idleEnergy << std::endl;
295 energy += idleEnergy;
300 <<
"Cost estimation data '" << dataName
302 <<
" not found in HDB." << std::endl;
ClockCycleCount OperationTriggerCount
a type for operation trigger counts
virtual TCEString name() const
bool estimatePortWriteDelay(const TTAMachine::FUPort &, const IDF::FUImplementationLocation &implementation, DelayInNanoSeconds &delay, HDB::HDBManager &hdb)
#define DESCRIPTION(TEXT__)
IDF::MachineImplementation * implementation
the implementation definition of the estimated processor
std::list< FUOperationTriggerCount > FUOperationTriggerCountList
type to be used for lists of function operation execution counts
double AreaInGates
type for area values in equivalent gates
static std::ostream & logStream()
virtual bool estimateEnergy(const TTAMachine::FunctionUnit &fu, const IDF::FUImplementationLocation &implementation, const TTAProgram::Program &, const ExecutionTrace &trace, EnergyInMilliJoules &energy, HDB::HDBManager &hdb)
virtual double doubleValue() const
double EnergyInMilliJoules
type for consumed energy in milli joules
virtual ~StrictMatchFUEstimator()
bool estimateMaximumComputationDelay(const TTAMachine::FunctionUnit &, const IDF::FUImplementationLocation &implementation, DelayInNanoSeconds &delay, HDB::HDBManager &hdb)
#define EXPORT_FU_COST_ESTIMATOR_PLUGIN(PLUGIN_NAME__)
bool estimatePortReadDelay(const TTAMachine::FUPort &, const IDF::FUImplementationLocation &implementation, DelayInNanoSeconds &delay, HDB::HDBManager &hdb)
std::string OperationID
a type for storing operation identifiers
bool estimateArea(const TTAMachine::FunctionUnit &, const IDF::FUImplementationLocation &implementation, AreaInGates &area, HDB::HDBManager &hdb)
FUOperationTriggerCountList * functionUnitOperationTriggerCounts(FunctionUnitID functionUnit) const
std::string errorMessage() const
double DelayInNanoSeconds
type for propagation delays in nano seconds
ClockCycleCount simulatedCycleCount() const
ExecutionTrace * trace
the execution trace database
StrictMatchFUEstimator(const std::string &name)
DataObject fuCostEstimationData(const std::string &valueName, RowID implementationId, const std::string &pluginName) const
CycleCount ClockCycleCount
Alias for ClockCycleCount.
boost::tuple< OperationID, OperationTriggerCount > FUOperationTriggerCount
type to be used as a key for storing function unit operation execution counts