94 virtual std::vector<RowID>
96 std::vector<RowID> result;
109 debugLog(std::string(
"Fetching architecture from DSDB failed in "
113 result.push_back(configurationID);
126 bool estimate =
false;
127 if (!explorer.
evaluate(startConf, estimates, estimate)) {
128 debugLog(std::string(
"Evaluate failed in GrowMachine."));
129 result.push_back(configurationID);
135 debugLog(std::string(
"Error in GrowMachine: ")
138 result.push_back(configurationID);
144 std::vector<ClockCycleCount> cycleCounts =
148 if (cycleCounts.size() < 1) {
149 std::ostringstream msg(std::ostringstream::out);
150 msg <<
"GrowMachine error: Couldn't evaluate cycle "
151 <<
"counts for applications, correct_simulation_output"
152 <<
" probably missing." << std::endl;
154 result.push_back(configurationID);
162 for (
int i = 1; i < (int)cycleCounts.size(); i++) {
163 if (cycleCounts.at(i) < currentMinCycles) {
164 currentMinCycles = cycleCounts.at(i);
170 std::map<ClockCycleCount, RowID> resultMap;
172 prevMinCycles = currentMinCycles;
194 if (explorer.
evaluate(newConfiguration, newEstimates,
false)) {
196 std::vector<ClockCycleCount> newCycleCounts =
199 currentMinCycles = newCycleCounts.at(0);
200 for (
int i = 1; i < (int)newCycleCounts.size(); i++) {
201 if (newCycleCounts.at(i) < currentMinCycles) {
202 currentMinCycles = newCycleCounts.at(i);
207 std::ostringstream msg(std::ostringstream::out);
208 msg <<
"GrowMachine produced config: "
209 << confID <<
", with cycle count: "
210 << currentMinCycles <<
" ("
220 resultMap[currentMinCycles] = confID;
226 debugLog(
"GrowMachine: Evaluating config with id: "
228 +
" failed. This is probably a bug.");
233 debugLog(std::string(
"Error in GrowMachine: ")
236 result.push_back(configurationID);
243 std::map<ClockCycleCount, RowID>::const_iterator mapIter =
245 for (; mapIter != resultMap.end(); mapIter++) {
246 result.push_back((*mapIter).second);
248 if (result.empty()) {
250 verboseLogC(
"GrowMachine could not generate new configs.", 2)
251 result.push_back(configurationID);
286 if ((newCC < oldCC) &&
304 return (1.0 -(
static_cast<double>(newCC)/oldCC))*100.0;
#define verboseLogC(text, neededVerbosity)
int RowID
Type definition of row ID in relational databases.
#define EXPORT_DESIGN_SPACE_EXPLORER_PLUGIN(PLUGIN_NAME__)
CycleCount ClockCycleCount
Alias for ClockCycleCount.
static int verboseLevel()
static std::string toString(const T &source)
RowID addArchitecture(const TTAMachine::Machine &mom)
TTAMachine::Machine * architecture(RowID id) const
MachineConfiguration configuration(RowID id) const
std::vector< ClockCycleCount > cycleCounts(const MachineConfiguration &conf) const
RowID addConfiguration(const MachineConfiguration &conf)
void readOptionalParameter(const std::string paramName, T ¶m) const
void addParameter(TCEString name, ExplorerPluginParameterType type, bool compulsory=true, TCEString defaultValue="", TCEString description="")
virtual void setDSDB(DSDBManager &dsdb)
virtual DSDBManager & db()
virtual bool evaluate(const DSDBManager::MachineConfiguration &configuration, CostEstimates &results=dummyEstimate_, bool estimate=false)
std::string errorMessageStack(bool messagesOnly=false) const
std::string errorMessage() const
virtual bool producesArchitecture() const
virtual bool requiresSimulationData() const
virtual bool requiresHDB() const
virtual std::vector< RowID > explore(const RowID &configurationID, const unsigned int &)
unsigned int superiority_
Percentage value of how much faster schedules are wanted until cycle count optimization is stopped.
double calculateImprovement(const ClockCycleCount &newCC, const ClockCycleCount &oldCC) const
static const std::string superiorityPN_
PLUGIN_DESCRIPTION("Adds resources until cycle count doesn't go down anymore.")
bool checkSuperiority(const ClockCycleCount &newCC, const ClockCycleCount &oldCC) const
virtual bool requiresStartingPointArchitecture() const
void increaseAllFUsThatDiffersByAmount(int moreFUs, TTAMachine::Machine &mach)
void addBusesByAmount(int busesToAdd, TTAMachine::Machine &mach)
void increaseAllRFsThatDiffersByAmount(int registersToAdd, TTAMachine::Machine &mach)