124 virtual std::vector<RowID>
127 std::vector<RowID> result;
143 std::ostringstream msg(std::ostringstream::out);
159 std::set<RowID>::const_iterator iter = appIDs.begin();
160 if (iter == appIDs.end()) {
164 for (; iter != appIDs.end(); iter++) {
170 std::string msg =
"SimpleICOptimizer: Schedule "
171 "failed for program: " +
180 std::ostringstream msg(std::ostringstream::out);
193 std::ostringstream msg(std::ostringstream::out);
194 msg <<
"Error while loading the program in "
195 <<
"SimpleICOptimizer:" << endl
207 std::ostringstream msg(std::ostringstream::out);
208 msg <<
"Error while adding ADF to the dsdb. "
209 <<
"ADF probably too big." << endl;
222 "RemoveUnconnectedComponents", &
db());
227 std::vector<RowID> cleanedTempConfIDs =
228 removeUnconnected->
explore(tempConfID);
229 delete removeUnconnected;
230 removeUnconnected = NULL;
231 if (cleanedTempConfIDs.size() < 1) {
232 std::string errorMsg =
"SimpleICOptimizer plugin: "
233 "RemoveUnconnectedComponents plugin failed to produce"
267 if (
evaluate(newConf, estimates, estimate)) {
269 result.push_back(confID);
272 std::ostringstream msg(std::ostringstream::out);
273 msg <<
"SimpleICOptimizer plugin couldn't evaluate "
274 <<
"generated config - nothing done." << endl;
280 result.push_back(confID);
284 std::ostringstream msg(std::ostringstream::out);
285 msg <<
"Error while using SimpleICOptimizer:" << endl
334 for (
int i = 0; i < socketNav.
count(); i++) {
336 for (
int bus = 0; bus < busNav.
count(); bus++) {
342 for (
int i = 0; i < socketNav.
count(); i++) {
344 std::set<std::string> ignoreFUNames;
345 std::set<std::string> ignoreRFNames;
347 for (
int si = 0; si < socket->
portCount(); ++si) {
349 if (
dynamic_cast<FUPort*
>(port)) {
351 }
else if (
dynamic_cast<RFPort*
>(port)) {
361 if (!ignoreFUNames.empty()) {
363 if (!ignoreRFNames.empty()) {
366 for (
int bus = 0; bus < busNav.
count(); bus++)
372 for (
int bus = 0; bus < busNav.
count(); bus++) {
377 }
else if (!ignoreRFNames.empty()) {
379 for (
int bus = 0; bus < busNav.
count(); bus++) {
384 for (
int bus = 0; bus < busNav.
count(); bus++) {
404 verboseLog(
"Failed to add missing integer registers to the"
437 for (
int m = 0; m < instruction.
moveCount(); m++) {
439 std::string busName = move.
bus().
name();
440 std::string sourceName =
"";
447 std::string destinationName =
449 Bus* bus = busNav.
item(busName);
452 if (sourceName !=
"") {
463 Socket* socket = socketNav.
item(destinationName);
#define verboseLogC(text, neededVerbosity)
#define assert(condition)
int RowID
Type definition of row ID in relational databases.
#define EXPORT_DESIGN_SPACE_EXPLORER_PLUGIN(PLUGIN_NAME__)
find Finds info of the inner loops in the program
find Finds info of the inner loops in the false
static std::string toString(const T &source)
RowID addArchitecture(const TTAMachine::Machine &mom)
TTAMachine::Machine * architecture(RowID id) const
std::set< RowID > applicationIDs() const
MachineConfiguration configuration(RowID id) const
std::string applicationPath(RowID id) 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 std::vector< RowID > explore(const RowID &startPointConfigurationID, const unsigned int &maxIter=0)
virtual void giveParameter(const std::string &name, const std::string &value)
bool createImplementation(const DSDBManager::MachineConfiguration &conf, DSDBManager::MachineConfiguration &newConf, 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 bool evaluate(const DSDBManager::MachineConfiguration &configuration, CostEstimates &results=dummyEstimate_, bool estimate=false)
TTAProgram::Program * schedule(const std::string applicationFile, TTAMachine::Machine &machine, TCEString paramOptions="-O3")
std::string errorMessageStack(bool messagesOnly=false) const
std::string errorMessage() const
bool checkWithIgnore(const TTAMachine::Machine &machine, const std::set< std::string > &ignoreFUName) const
bool checkWithIgnore(const TTAMachine::Machine &mach, const std::set< std::string > &ignoreRFs) const
bool checkIntRegs(const TTAMachine::Machine &mach) const
bool canFixIntRegs(const TTAMachine::Machine &mach) const
bool fixIntRegs(TTAMachine::Machine &mach) const
static const std::string tpefDefaultPN_
static const std::string preserveMinOpsPN_
virtual bool producesArchitecture() const
bool fixIntRegisters(TTAMachine::Machine &mach)
virtual bool requiresHDB() const
virtual bool requiresStartingPointArchitecture() const
bool evaluateResult_
evaluate the result(s)
std::string tpef_
name of the tpef file
static const std::string evaluatePN_
void addConnections(TTAMachine::Machine &mach, Program &prog)
static const std::string tpefPN_
void removeAllConnections(TTAMachine::Machine &mach)
virtual bool requiresSimulationData() const
PLUGIN_DESCRIPTION("Optimizes the IC of the given configuration")
bool addOnly_
can we remove connections
bool preserveMinimalOpset_
respect minimal opset when removing connections
virtual bool requiresApplication() const
virtual std::vector< RowID > explore(const RowID &startPointConfigurationID, const unsigned int &)
static const std::string addOnlyPN_
virtual Segment * segment(int index) const
virtual int segmentCount() const
virtual TCEString name() const
ComponentType * item(int index) const
virtual SocketNavigator socketNavigator() const
virtual BusNavigator busNavigator() const
Unit * parentUnit() const
void setDirection(Direction direction)
@ OUTPUT
Data goes from port to bus.
@ INPUT
Data goes from bus to port.
bool isConnectedTo(const Bus &bus) const
void detachBus(Segment &bus)
Port * port(int index) const
void attachBus(Segment &bus)
virtual int instructionCount() const
virtual Instruction & instructionAtIndex(int index) const
TTAMachine::Socket & destinationSocket() const
TTAMachine::Socket & sourceSocket() const
Terminal & source() const
const TTAMachine::Bus & bus() const
static Program * loadFromTPEF(const std::string &tpefFileName, const TTAMachine::Machine &theMachine)
Procedure & procedure(int index) const
int procedureCount() const
virtual bool isImmediate() const
const std::string applicationPath() const