40#include <boost/format.hpp>
106 icDec_(
"DefaultICDecoder"),
135 virtual std::vector<RowID>
142 std::vector<RowID> result;
144 RowID startPointConfID = startPointConfigurationID;
149 "SimpleICOptimizer", &
db());
152 "MinimizeMachine", &
db());
155 "GrowMachine", &
db());
175 vector<RowID> cycleOptimizedConfs =
176 growMachine->
explore(startPointConfID);
178 std::ostringstream msg(std::ostringstream::out);
179 msg <<
"GrowMachine plugin produced initial configs: ";
180 for (
unsigned int i = 0; i < cycleOptimizedConfs.size(); ++i) {
181 msg << cycleOptimizedConfs.at(i) <<
" ";
190 vector<RowID>::const_iterator archIter;
191 while (currentFrequencyMHz != 0) {
194 currentFrequencyMHz), 3)
198 for (archIter = cycleOptimizedConfs.begin();
199 archIter != cycleOptimizedConfs.end();
202 verboseLogC(
"Testing (fast enough) init config: " +
205 if (
fastEnough(*archIter, currentFrequencyMHz, dsdb)) {
206 verboseLogC(
"Calling minimize machine for init config: " +
220 verboseLogC(
"Implementation selection produced a config: "
224 if (selectedConf == 0) {
225 verboseLogC(
"Component selection failed for minimized"
232 vector<RowID> icOptimizedResult =
233 icOptimizer->
explore(selectedConf);
234 if (icOptimizedResult.size() == 1) {
236 std::ostringstream msg(std::ostringstream::out);
237 msg <<
"Config " << icOptimizedResult.at(0)
238 <<
" created for frequency "
239 << currentFrequencyMHz <<
"." << endl;
242 result.push_back(icOptimizedResult.at(0));
269 delete minimizeMachine;
270 minimizeMachine = NULL;
357 set<RowID>::const_iterator applicationIter;
361 for (applicationIter = applicationIDs.begin();
362 applicationIter != applicationIDs.end();
375 if ((
static_cast<double>(cycleCount) / (
static_cast<double>(freq) *
static_cast<double>(1000000))) >
398 vector<RowID> resultConfs = plugin->
explore(arch);
401 if (resultConfs.size() == 1) {
407 "%s failed to optimize "
408 "configuration %d. Possible bug in Optimizer,"
409 " Estimator or missing data from HDB."
410 ) % arch % plugin->
name()).str());
414 std::ostringstream msg(std::ostringstream::out);
415 msg << plugin->
name()
416 <<
" plugin produced config: "
417 << resultConfs.at(0) << endl;
#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)
ClockCycleCount cycleCount(RowID application, RowID architecture) const
std::set< RowID > applicationIDs() const
MachineConfiguration configuration(RowID id) const
std::string applicationPath(RowID id) const
void checkParameters() const
void readCompulsoryParameter(const std::string paramName, T ¶m) const
void readOptionalParameter(const std::string paramName, T ¶m) const
virtual std::string name() const
void addParameter(TCEString name, ExplorerPluginParameterType type, bool compulsory=true, TCEString defaultValue="", TCEString description="")
virtual std::vector< RowID > explore(const RowID &startPointConfigurationID, const unsigned int &maxIter=0)
virtual void giveParameter(const std::string &name, const std::string &value)
RowID createImplementationAndStore(const DSDBManager::MachineConfiguration &conf, const double &frequency=0.0, const double &maxArea=0.0, const bool &createEstimates=true, const std::string &icDec="DefaultICDecoder", const std::string &icDecHDB="asic_130nm_1.5V.hdb")
virtual DSDBManager & db()
static DesignSpaceExplorerPlugin * loadExplorerPlugin(const std::string &pluginName, DSDBManager *dsdb=NULL)
virtual std::vector< RowID > explore(const RowID &startPointConfigurationID, const unsigned int &)
static const std::string icDecPN_
static const int busCountDefault_
Default value of busCount_.
std::string icDecHDB_
name of the hdb used by ic decoder
virtual bool requiresHDB() const
static const std::string superiorityPN_
DSDBManager::MachineConfiguration callPlugin(DesignSpaceExplorerPlugin *plugin, const RowID &arch, DSDBManager &dsdb)
static const int registerFileSizeDefault_
static const int rfWritePortsDefault_
static const int rfReadPortsDefault_
bool fastEnough(const RowID &id, const int &freq, DSDBManager &dsdb)
PLUGIN_DESCRIPTION("Frequency sweep algorithm.")
std::string icDec_
name of the ic decoder plugin for idf
static const std::string endMHzPN_
static const std::string talo
unsigned int superiority_
Superirity percentage for the GrowMachine plugin.
static const unsigned int immSlotBusIndexDefault_
ComponentImplementationSelector selector_
Selector used by the plugin.
static const std::string stepMHzPN_
virtual bool producesArchitecture() const
virtual bool requiresSimulationData() const
static const std::string startMHzPN_
virtual bool requiresStartingPointArchitecture() const
static const std::string icDecHDBPN_
static const int maxNumberOfRegisterFilesDefault_
static HDBRegistry & instance()
void loadFromSearchPaths()
Runtime maxRuntime() const