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;
ExecutionTrace * trace
the execution trace database
IDF::MachineImplementation * implementation
the implementation definition of the estimated processor
#define EXPORT_FU_COST_ESTIMATOR_PLUGIN(PLUGIN_NAME__)
CycleCount ClockCycleCount
Alias for ClockCycleCount.
static std::ostream & logStream()
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::string OperationID
a type for storing operation identifiers
ClockCycleCount OperationTriggerCount
a type for operation trigger counts
ClockCycleCount simulatedCycleCount() const
std::list< FUOperationTriggerCount > FUOperationTriggerCountList
type to be used for lists of function operation execution counts
FUOperationTriggerCountList * functionUnitOperationTriggerCounts(FunctionUnitID functionUnit) const
boost::tuple< OperationID, OperationTriggerCount > FUOperationTriggerCount
type to be used as a key for storing function unit operation execution counts
DataObject fuCostEstimationData(const std::string &valueName, RowID implementationId, const std::string &pluginName) const
bool estimatePortReadDelay(const TTAMachine::FUPort &, const IDF::FUImplementationLocation &implementation, DelayInNanoSeconds &delay, HDB::HDBManager &hdb)
StrictMatchFUEstimator(const std::string &name)
DESCRIPTION("Simple FU cost estimator plugin that estimates costs of FUs " "simply by looking up direct matches from HDB. In case there's " "no cost data available for the given FU, it's unable to estimate " "it by using linearization etc.")
virtual ~StrictMatchFUEstimator()
virtual bool estimateEnergy(const TTAMachine::FunctionUnit &fu, const IDF::FUImplementationLocation &implementation, const TTAProgram::Program &, const ExecutionTrace &trace, EnergyInMilliJoules &energy, HDB::HDBManager &hdb)
bool estimateMaximumComputationDelay(const TTAMachine::FunctionUnit &, const IDF::FUImplementationLocation &implementation, DelayInNanoSeconds &delay, HDB::HDBManager &hdb)
bool estimatePortWriteDelay(const TTAMachine::FUPort &, const IDF::FUImplementationLocation &implementation, DelayInNanoSeconds &delay, HDB::HDBManager &hdb)
bool estimateArea(const TTAMachine::FunctionUnit &, const IDF::FUImplementationLocation &implementation, AreaInGates &area, 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