diff --git a/simulators/c++2/src_simulator/arch/CPU.cpp b/simulators/c++2/src_simulator/arch/CPU.cpp index 3a02c798d6a4e853aa28e43d5c1f0213139ff74f..6415fa913ae2d74357b909c4ed822209f7c96cfb 100644 --- a/simulators/c++2/src_simulator/arch/CPU.cpp +++ b/simulators/c++2/src_simulator/arch/CPU.cpp @@ -168,7 +168,155 @@ void CPU::schedule2XML(std::ostringstream& glob,std::ofstream& myfile) const{ } } +std::map<TMLTask*, std::string> CPU::HWTIMELINE2HTML(std::ofstream& myfile,std::map<TMLTask*, std::string> taskCellClasses,unsigned int nextCellClassIndex, std::string& iTracetaskList) const { + TransactionList _transactListClone; + std::string taskList = iTracetaskList.c_str(); + for (int z = 0; z < _transactList.size(); z++) { + std::string taskName = _transactList[z]->getCommand()->getTask()->toString(); + std::size_t pos = taskList.find(taskName); /*pos1 = position of "bin" if we working with open model*/ + if(pos != std::string::npos){ + _transactListClone.push_back(_transactList[z]); + } + } + if ( _transactListClone.size() == 0 ) { + std::cout << "Device never activated" << std::endl; + } else { + myfile << "<tr><td width=\"170px\" style=\"max-width: unset;min-width: 170px;background-color: aqua;\">" << _name << "_core_" << this->_cycleTime << "</td>\n<td class=\"notfirst\"></td>\n<td class=\"notlast\"></td>" << std::endl;//myfile << "<table>" << std::endl << "<tr>"; +// std::map<TMLTask*, std::string> taskCellClasses; +// unsigned int nextCellClassIndex = 0; + TMLTime aCurrTime = 0; + unsigned int tempReduce = 0; + std::vector<unsigned int> listScale; + std::vector<unsigned int> listScaleTime; + listScale.push_back(0); + listScaleTime.push_back(0); + bool changeCssClass = false; + unsigned int endTimeOfCore = 0; + for( unsigned int j = _transactListClone.size()-1; j >= 0; j-- ) { + if( _transactListClone[j]->getTransactCoreNumber() == this->_cycleTime ){ + endTimeOfCore = _transactListClone[j]->getEndTime(); + break; + } + } + for( TransactionList::const_iterator i = _transactListClone.begin(); i != _transactListClone.end(); ++i ) { + std::cout<<"get transaction core number is: "<<(*i)->getTransactCoreNumber()<<std::endl; + std::cout<<"time : "<<_cycleTime<<std::endl; + //std::cout << "CPU:calcSTL: html of CPU " << _name << ": " << (*i)->toString() << std::endl; + if( (*i)->getTransactCoreNumber() == this->_cycleTime ){ + TMLTransaction* aCurrTrans = *i; + unsigned int aBlanks = aCurrTrans->getStartTime() - aCurrTime; + bool isBlankTooBig = false; + std::ostringstream tempString; + int tempBlanks; + if(endTimeOfCore >= 250 && aBlanks > 10) { + int newBlanks = 10; + tempBlanks = aBlanks; + tempReduce += aBlanks - newBlanks; + aBlanks = newBlanks; + isBlankTooBig = true; + changeCssClass = true; + } + if ( aBlanks >= 0 && (!(aCurrTrans->getCommand()->getActiveDelay()) && aCurrTrans->getCommand()->isDelayTransaction()) ){ + listScale.push_back(aBlanks+1); + tempString << tempBlanks+1; + if(aCurrTrans->getStartTime()+1 > listScaleTime.back()){ + listScaleTime.push_back(aCurrTrans->getStartTime()+1); + } + if (isBlankTooBig){ + writeHTMLColumn( myfile, aBlanks+1, "not", "idle time", "<- idle " + tempString.str() + " ->", false ); + } else { + writeHTMLColumn( myfile, aBlanks+1, "not", "idle time" ); + } + } + else if ( aBlanks > 0 ){ + listScale.push_back(aBlanks); + tempString << tempBlanks; + if(aCurrTrans->getStartTime() > listScaleTime.back()){ + listScaleTime.push_back(aCurrTrans->getStartTime()); + } + if (isBlankTooBig){ + writeHTMLColumn( myfile, aBlanks, "not", "idle time", "<- idle " + tempString.str() + " ->", false ); + } else { + writeHTMLColumn( myfile, aBlanks, "not", "idle time" ); + } + } + unsigned int aLength = aCurrTrans->getPenalties(); + if ( aLength != 0 ) { + listScaleTime.push_back(listScaleTime.back()+aLength); + if (endTimeOfCore >= 250 && aLength > 10){ + tempReduce += aLength - 10; + aLength = 10; + } + listScale.push_back(aLength); + std::ostringstream title; + title << "idle:" << aCurrTrans->getIdlePenalty() << " switching penalty:" << aCurrTrans->getTaskSwitchingPenalty(); + writeHTMLColumn( myfile, aLength, "not", title.str() ); + } + aLength = aCurrTrans->getOperationLength(); + + // Issue #4 + TMLTask* task = aCurrTrans->getCommand()->getTask(); + const std::string cellClass = determineHTMLCellClass( taskCellClasses, task, nextCellClassIndex ); + std::string aCurrTransName=aCurrTrans->toShortString(); + unsigned int indexTrans=aCurrTransName.find_first_of(":"); + std::string aCurrContent=aCurrTransName.substr(indexTrans+1,2); + if(!(!(aCurrTrans->getCommand()->getActiveDelay()) && aCurrTrans->getCommand()->isDelayTransaction())){ + if (endTimeOfCore >= 250 && aLength > 10){ + tempReduce += aLength - 10; + aLength = 10; + } + writeHTMLColumn( myfile, aLength, cellClass, aCurrTrans->toShortString(), aCurrContent ); + listScale.push_back(aLength); + if(aCurrTrans->getStartTime() > listScaleTime.back()){ + listScaleTime.push_back(aCurrTrans->getStartTime()); + } + if(aCurrTrans->getEndTime() > listScaleTime.back()){ + listScaleTime.push_back(aCurrTrans->getEndTime()); + } + } + if(aCurrTrans->getCommand()->getTask()->getIsDaemon() == true && aCurrTrans->getEndTime() > _simulatedTime) + aCurrTime = _simulatedTime; + else + aCurrTime = aCurrTrans->getEndTime(); + } + } + + myfile << "</tr>" << std::endl << "<tr>"; + for ( unsigned int aLength = 0; aLength < aCurrTime - tempReduce + 2; aLength++ ) { + if( aLength == 1) { + myfile << "<th class=\"notfirst\">"; + } else { + myfile << "<th></th>"; + } + } + myfile << "</tr>" << std::endl << "<tr>"; + myfile << "<td width=\"170px\" style=\"max-width: unset;min-width: 170px;border-style: none none none none;\"></td>\n<td class=\"notfirst\"></td>\n<td class=\"notlast\"></td>\n"; + for ( unsigned int aLength = 0; aLength < listScale.size(); aLength += 1 ) { + std::ostringstream spanVal; + if(aLength < listScaleTime.size()) + spanVal << listScaleTime[aLength]; + else + spanVal << ""; + if(aLength+1 >= listScale.size()){ + if(changeCssClass){ + writeHTMLColumn( myfile, 5, "sc1", spanVal.str(), spanVal.str(), false ); + } else + writeHTMLColumn( myfile, 5, "sc", spanVal.str(), spanVal.str(), false ); + }else { + if(changeCssClass){ + writeHTMLColumn( myfile, listScale[aLength+1], "sc1", spanVal.str(), spanVal.str(), false ); + } else + writeHTMLColumn( myfile, listScale[aLength+1], "sc", spanVal.str(), spanVal.str(), false ); + } + //myfile << "<td colspan=\"5\" class=\"sc\">" << aLength << "</td>"; + } + + myfile << "</tr>" << std::endl << std::endl; + myfile << SCHED_HTML_JS_CLEAR << std::endl; + } + return taskCellClasses; +} void CPU::HW2HTML(std::ofstream& myfile) const { // myfile << "<h2><span>Scheduling for device: "<< _name <<"_core_"<<this->_cycleTime<< "</span></h2>" << std::endl; myfile << SCHED_HTML_BOARD; diff --git a/simulators/c++2/src_simulator/arch/CPU.h b/simulators/c++2/src_simulator/arch/CPU.h index 5e4448648d6d7aab6a5aa208de573fde8b70f515..71c9de992436648116193b4803794b7a1c694b9b 100755 --- a/simulators/c++2/src_simulator/arch/CPU.h +++ b/simulators/c++2/src_simulator/arch/CPU.h @@ -121,6 +121,7 @@ public: void buttonPieChart(std::ofstream& myfile) const; void showPieChart(std::ofstream& myfile) const; void HW2HTML(std::ofstream& myfile) const; + std::map<TMLTask*, std::string> HWTIMELINE2HTML(std::ofstream& myfile,std::map<TMLTask*, std::string> taskCellClasses,unsigned int nextCellClassIndex, std::string& iTracetaskList) const; void schedule2HTML(std::ofstream& myfile) const; void schedule2XML(std::ostringstream& glob,std::ofstream& myfile) const; inline void setCoreNumberGraph(unsigned int n){ _coreNumberGraph=n;} diff --git a/simulators/c++2/src_simulator/arch/FPGA.cpp b/simulators/c++2/src_simulator/arch/FPGA.cpp index 452cb560affb8f59ae4a1f78ab10c91d3c3f66ac..260db510d35cb4e602459601abbf9f252ea0dc70 100644 --- a/simulators/c++2/src_simulator/arch/FPGA.cpp +++ b/simulators/c++2/src_simulator/arch/FPGA.cpp @@ -579,6 +579,159 @@ std::string FPGA::determineHTMLCellClass(unsigned int &nextColor ) { return taskCellClasses[ _htmlCurrTask ]; } +std::string FPGA::determineHTMLCellClass(std::map<TMLTask*, std::string> &taskColors, TMLTask* task, unsigned int &nextColor) { + std::map<TMLTask*, std::string>::const_iterator it = taskColors.find( task ); + + if ( it == taskColors.end() ) { + unsigned int aColor = nextColor % NB_HTML_COLORS; + std::ostringstream cellClass; + cellClass << "t" << aColor; + taskColors[ task ] = cellClass.str(); + nextColor++; + } + + return taskColors[ task ]; +} + +std::map<TMLTask*, std::string> FPGA::HWTIMELINE2HTML(std::ofstream& myfile,std::map<TMLTask*, std::string> taskCellClasses1,unsigned int nextCellClassIndex1, std::string& iTracetaskList) { + TransactionList _transactListClone; + std::string taskList = iTracetaskList.c_str(); + for (int z = 0; z < _transactList.size(); z++) { + std::string taskName = _transactList[z]->getCommand()->getTask()->toString(); + std::size_t pos = taskList.find(taskName); /*pos1 = position of "bin" if we working with open model*/ + if(pos != std::string::npos){ + _transactListClone.push_back(_transactList[z]); + } + } + if ( _transactListClone.size() == 0 ) { + std::cout << "Device never activated" << std::endl; + } else { + if(_startFlagHTML == true){ + myfile << "<tr><td width=\"170px\" style=\"max-width: unset;min-width: 170px;background-color: aqua;\">" << _name << "</td>\n<td class=\"notfirst\"></td>\n<td class=\"notlast\"></td>" << std::endl; + } else { + myfile << "<tr><td width=\"170px\" style=\"max-width: unset;min-width: 170px;border-style: none none none none;\"></td>\n<td class=\"notfirst\"></td>\n<td class=\"notlast\"></td>\n"<< std::endl; + } + TMLTime aCurrTime = 0; + unsigned int taskOccurTime = 0; + unsigned int tempReduce = 0; + std::vector<unsigned int> listScale; + std::vector<unsigned int> listScaleTime; + listScale.push_back(0); + listScaleTime.push_back(0); + bool changeCssClass = false; + for( TransactionList::const_iterator i = _transactListClone.begin(); i != _transactListClone.end(); ++i ) { + #ifdef DEBUG_FPGA + std::cout << (*i)-> getCommand()->getTask()->toString() <<std::endl; + std::cout<< _htmlCurrTask->toString()<<std::endl; + #endif + if( (*i)-> getCommand()->getTask() == _htmlCurrTask ){ + if(taskOccurTime==0){ + taskOccurTime++; + } + #ifdef DEBUG_FPGA + std::cout<<"in!!"<<_htmlCurrTask->toString()<<std::endl; + #endif + TMLTransaction* aCurrTrans = *i; + unsigned int aBlanks = aCurrTrans->getStartTime() - aCurrTime; + bool isBlankTooBig = false; + std::ostringstream tempString; + int tempBlanks; + if(_htmlCurrTask->getEndLastTransaction() >= 250 && aBlanks >10) { + int newBlanks = 10; + tempBlanks = aBlanks; + tempReduce += aBlanks - newBlanks; + aBlanks = newBlanks; + isBlankTooBig = true; + changeCssClass = true; + } + if ( aBlanks >= 0 && (!(aCurrTrans->getCommand()->getActiveDelay()) && aCurrTrans->getCommand()->isDelayTransaction()) ){ + listScale.push_back(aBlanks+1); + tempString << tempBlanks+1; + if(aCurrTrans->getStartTime()+1 > listScaleTime.back()){ + listScaleTime.push_back(aCurrTrans->getStartTime()+1); + } + if (isBlankTooBig){ + writeHTMLColumn( myfile, aBlanks+1, "not", "idle time", "<- idle " + tempString.str() + " ->", false ); + } else { + writeHTMLColumn( myfile, aBlanks+1, "not", "idle time" ); + } + } + else if ( aBlanks > 0 ){ + listScale.push_back(aBlanks); + tempString << tempBlanks; + if(aCurrTrans->getStartTime() > listScaleTime.back()){ + listScaleTime.push_back(aCurrTrans->getStartTime()); + } + if (isBlankTooBig){ + writeHTMLColumn( myfile, aBlanks, "not", "idle time", "<- idle " + tempString.str() + " ->", false ); + } else { + writeHTMLColumn( myfile, aBlanks, "not", "idle time" ); + } + } + + unsigned int aLength = aCurrTrans->getOperationLength(); + const std::string cellClass = determineHTMLCellClass( taskCellClasses1, _htmlCurrTask, nextCellClassIndex1); + std::string aCurrTransName=aCurrTrans->toShortString(); + unsigned int indexTrans=aCurrTransName.find_first_of(":"); + std::string aCurrContent=aCurrTransName.substr(indexTrans+1,2); + if(!(!(aCurrTrans->getCommand()->getActiveDelay()) && aCurrTrans->getCommand()->isDelayTransaction())){ + if(_htmlCurrTask->getEndLastTransaction() >= 250 && aLength >10){ + tempReduce += aLength - 10; + aLength = 10; + } + writeHTMLColumn( myfile, aLength, cellClass, aCurrTrans->toShortString(), aCurrContent ); + listScale.push_back(aLength); + if(aCurrTrans->getStartTime() > listScaleTime.back()){ + listScaleTime.push_back(aCurrTrans->getStartTime()); + } + if(aCurrTrans->getEndTime() > listScaleTime.back()){ + listScaleTime.push_back(aCurrTrans->getEndTime()); + } + } + if(aCurrTrans->getCommand()->getTask()->getIsDaemon() == true && aCurrTrans->getEndTime() > _simulatedTime) + aCurrTime = _simulatedTime; + else + aCurrTime = aCurrTrans->getEndTime(); + } + } + + myfile << "</tr>" << std::endl << "<tr>"; + + for ( unsigned int aLength = 0; aLength < aCurrTime - tempReduce + 2; aLength++ ) { + if( aLength == 1) { + myfile << "<th class=\"notfirst\">"; + } else { + myfile << "<th></th>"; + } + } + myfile << "</tr>" << std::endl << "<tr>"; + myfile << "<td width=\"170px\" style=\"max-width: unset;min-width: 170px;border-style: none none none none;\"></td>\n<td class=\"notfirst\"></td>\n<td class=\"notlast\"></td>\n"; + + for ( unsigned int aLength = 0; aLength < listScale.size(); aLength += 1 ) { + std::ostringstream spanVal; + if(aLength < listScaleTime.size()) + spanVal << listScaleTime[aLength]; + else + spanVal << ""; + if(aLength+1 >= listScale.size()){ + + if(changeCssClass){ + writeHTMLColumn( myfile, 5, "sc1", spanVal.str(), spanVal.str(), false ); + } else + writeHTMLColumn( myfile, 5, "sc", spanVal.str(), spanVal.str(), false ); + } else { + if(changeCssClass){ + writeHTMLColumn( myfile, listScale[aLength+1], "sc1", spanVal.str(), spanVal.str(), false ); + } else + writeHTMLColumn( myfile, listScale[aLength+1], "sc", spanVal.str(), spanVal.str(), false ); + } + } + myfile << "</tr>" << std::endl << std::endl; + myfile << SCHED_HTML_JS_CLEAR << std::endl; + } + return taskCellClasses1; +} + void FPGA::HW2HTML(std::ofstream& myfile) { if(_startFlagHTML == true){ //myfile << "<h2><span>Scheduling for device: "<< _name << "</span></h2>" << std::endl; diff --git a/simulators/c++2/src_simulator/arch/FPGA.h b/simulators/c++2/src_simulator/arch/FPGA.h index dfa7554750d8e916da3f6b3b1ea6144755d83c3d..acd819bc3d6b75148dcdad963273cba811e763b9 100644 --- a/simulators/c++2/src_simulator/arch/FPGA.h +++ b/simulators/c++2/src_simulator/arch/FPGA.h @@ -133,6 +133,7 @@ public: ///inline unsigned int getTransNumber() { return _transNumber;} inline unsigned int getID () { return _ID;} void HW2HTML(std::ofstream& myfile) ; + std::map<TMLTask*, std::string> HWTIMELINE2HTML(std::ofstream& myfile,std::map<TMLTask*, std::string> taskCellClasses,unsigned int nextCellClassIndex, std::string& iTracetaskList); void removeTrans(int numberOfTrans); void schedule2HTML(std::ofstream& myfile) ; inline const TaskList& getTaskList() const{return _taskList;} @@ -145,6 +146,7 @@ public: void buttonPieChart(std::ofstream& myfile) const; void showPieChart(std::ofstream& myfile) const; std::string determineHTMLCellClass(unsigned int &nextColor ); + std::string determineHTMLCellClass(std::map<TMLTask*, std::string> &taskColors, TMLTask* task, unsigned int &nextColor); void scheduleBlank(std::ofstream& myfile); protected: ///List of all tasks running on the FPGA diff --git a/simulators/c++2/src_simulator/arch/SchedulableDevice.cpp b/simulators/c++2/src_simulator/arch/SchedulableDevice.cpp index 36457c16e2a9f0e4ce022b41b3939c25c2ae8fce..a5e62d81f6c60da3e7f68f26b9af9f7d9bf37033 100644 --- a/simulators/c++2/src_simulator/arch/SchedulableDevice.cpp +++ b/simulators/c++2/src_simulator/arch/SchedulableDevice.cpp @@ -298,6 +298,151 @@ void SchedulableDevice::buttonPieChart(std::ofstream& myfile) const{ myfile << " chart" << _ID << ".update();" << std::endl; } +std::map<TMLTask*, std::string> SchedulableDevice::HWTIMELINE2HTML(std::ofstream& myfile,std::map<TMLTask*, std::string> taskCellClasses,unsigned int nextCellClassIndex, std::string& iTracetaskList) const { + TransactionList _transactListClone; + std::string taskList = iTracetaskList.c_str(); + for (int z = 0; z < _transactList.size(); z++) { + std::string taskName = _transactList[z]->getCommand()->getTask()->toString(); + std::size_t pos = taskList.find(taskName); /*pos1 = position of "bin" if we working with open model*/ + if(pos != std::string::npos){ + _transactListClone.push_back(_transactList[z]); + } + } + if ( _transactListClone.size() == 0 ) { + std::cout << "Device never activated" << std::endl; + } else { + myfile << "<tr><td width=\"170px\" style=\"max-width: unset;min-width: 170px;background-color: aqua;\">" << _name << "</td>\n<td class=\"notfirst\"></td>\n<td class=\"notlast\"></td>" << std::endl; +// std::map<TMLTask*, std::string> taskCellClasses; +// unsigned int nextCellClassIndex = 0; + TMLTime aCurrTime = 0; + unsigned int tempReduce = 0; + std::vector<unsigned int> listScale; + std::vector<unsigned int> listScaleTime; + listScale.push_back(0); + listScaleTime.push_back(0); + bool changeCssClass = false; + TMLTransaction* checkLastTime = _transactListClone.back(); + for( TransactionList::const_iterator i = _transactListClone.begin(); i != _transactListClone.end(); ++i ) { + std::cout<<"get transaction core number is: "<<(*i)->getTransactCoreNumber()<<std::endl; + std::cout<<"time : "<<_cycleTime<<std::endl; + std::cout << "CPU:calcSTL: html of CPU " << _name << ": " << (*i)->toString() << std::endl; + //if( (*i)->getTransactCoreNumber() == this->_cycleTime ){ + TMLTransaction* aCurrTrans = *i; + unsigned int aBlanks = aCurrTrans->getStartTime() - aCurrTime; + bool isBlankTooBig = false; + std::ostringstream tempString; + int tempBlanks; + if((checkLastTime)->getEndTime() >= 250 && aBlanks > 10) { + int newBlanks = 10; + tempBlanks = aBlanks; + tempReduce += aBlanks - newBlanks; + aBlanks = newBlanks; + isBlankTooBig = true; + changeCssClass = true; + } + if ( aBlanks >= 0 && (!(aCurrTrans->getCommand()->getActiveDelay()) && aCurrTrans->getCommand()->isDelayTransaction()) ){ + listScale.push_back(aBlanks+1); + tempString << tempBlanks+1; + if(aCurrTrans->getStartTime()+1 > listScaleTime.back()){ + listScaleTime.push_back(aCurrTrans->getStartTime()+1); + } + if (isBlankTooBig){ + writeHTMLColumn( myfile, aBlanks+1, "not", "idle time", "<- idle " + tempString.str() + " ->", false ); + } else { + writeHTMLColumn( myfile, aBlanks+1, "not", "idle time" ); + } + } + else if ( aBlanks > 0 ){ + listScale.push_back(aBlanks); + tempString << tempBlanks; + if(aCurrTrans->getStartTime() > listScaleTime.back()){ + listScaleTime.push_back(aCurrTrans->getStartTime()); + } + if (isBlankTooBig){ + writeHTMLColumn( myfile, aBlanks, "not", "idle time", "<- idle " + tempString.str() + " ->", false ); + } else { + writeHTMLColumn( myfile, aBlanks, "not", "idle time" ); + } + } + + unsigned int aLength = aCurrTrans->getPenalties(); + + if ( aLength != 0 ) { + std::ostringstream title; + listScaleTime.push_back(listScaleTime.back()+aLength); + if(checkLastTime->getEndTime() >= 250 && aLength >10){ + tempReduce += aLength - 10; + aLength = 10; + } + listScale.push_back(aLength); + title << "idle:" << aCurrTrans->getIdlePenalty() << " switching penalty:" << aCurrTrans->getTaskSwitchingPenalty(); + writeHTMLColumn( myfile, aLength, "not", title.str() ); + } + + aLength = aCurrTrans->getOperationLength(); + + // Issue #4 + TMLTask* task = aCurrTrans->getCommand()->getTask(); + const std::string cellClass = determineHTMLCellClass( taskCellClasses, task, nextCellClassIndex); + std::string aCurrTransName=aCurrTrans->toShortString(); + unsigned int indexTrans=aCurrTransName.find_first_of(":"); + std::string aCurrContent=aCurrTransName.substr(indexTrans+1,2); + if(!(!(aCurrTrans->getCommand()->getActiveDelay()) && aCurrTrans->getCommand()->isDelayTransaction())){ + if(checkLastTime->getEndTime() >= 250 && aLength >10){ + tempReduce += aLength - 10; + aLength = 10; + } + writeHTMLColumn( myfile, aLength, cellClass, aCurrTrans->toShortString(), aCurrContent); + listScale.push_back(aLength); + if(aCurrTrans->getStartTime() > listScaleTime.back()){ + listScaleTime.push_back(aCurrTrans->getStartTime()); + } + if(aCurrTrans->getEndTime() > listScaleTime.back()){ + listScaleTime.push_back(aCurrTrans->getEndTime()); + } + } + aCurrTime = aCurrTrans->getEndTime(); + // } + } + + + myfile << "</tr>" << std::endl << "<tr>"; + + for ( unsigned int aLength = 0; aLength < aCurrTime - tempReduce + 2; aLength++ ) { + if( aLength == 1) { + myfile << "<th class=\"notfirst\">"; + } else { + myfile << "<th></th>"; + } + } + myfile << "</tr>" << std::endl << "<tr>"; + myfile << "<td width=\"170px\" style=\"max-width: unset;min-width: 170px;border-style: none none none none;\"></td>\n<td class=\"notfirst\"></td>\n<td class=\"notlast\"></td>\n"; + + for ( unsigned int aLength = 0; aLength < listScale.size(); aLength += 1 ) { + std::ostringstream spanVal; + if(aLength < listScaleTime.size()) + spanVal << listScaleTime[aLength]; + else + spanVal << ""; + if(aLength+1 >= listScale.size()){ + + if(changeCssClass){ + writeHTMLColumn( myfile, 5, "sc1", spanVal.str(), spanVal.str(), false ); + } else + writeHTMLColumn( myfile, 5, "sc", spanVal.str(), spanVal.str(), false ); + }else { + if(changeCssClass){ + writeHTMLColumn( myfile, listScale[aLength+1], "sc1", spanVal.str(), spanVal.str(), false ); + } else + writeHTMLColumn( myfile, listScale[aLength+1], "sc", spanVal.str(), spanVal.str(), false ); + } + } + + myfile << "</tr>" << std::endl; + myfile << SCHED_HTML_JS_CLEAR << std::endl; + } + return taskCellClasses; +} void SchedulableDevice::HW2HTML(std::ofstream& myfile) const { // myfile << "<h2><span>Scheduling for device: "<< _name << "</span></h2>" << std::endl; diff --git a/simulators/c++2/src_simulator/arch/SchedulableDevice.h b/simulators/c++2/src_simulator/arch/SchedulableDevice.h index ca1742df39ffd6bb24a8c6a179b136134adbc16a..58b3f76ec3711963d426b49bc4fbd184fe3f36dc 100644 --- a/simulators/c++2/src_simulator/arch/SchedulableDevice.h +++ b/simulators/c++2/src_simulator/arch/SchedulableDevice.h @@ -79,6 +79,7 @@ public: void drawPieChart(std::ofstream& myfile) const; void showPieChart(std::ofstream& myfile) const; void HW2HTML(std::ofstream& myfile) const; + std::map<TMLTask*, std::string> HWTIMELINE2HTML(std::ofstream& myfile,std::map<TMLTask*, std::string> taskCellClasses,unsigned int nextCellClassIndex, std::string& iTracetaskList) const; ///Writes a HTML representation of the schedule to an output file /** \param myfile Reference to the ofstream object representing the output file diff --git a/simulators/c++2/src_simulator/definitions.h b/simulators/c++2/src_simulator/definitions.h index 3cd29b848baafe44a17ee9913d986fe8e729169b..399337e8ecbb22f0aa17b2198abf35525801ab0e 100644 --- a/simulators/c++2/src_simulator/definitions.h +++ b/simulators/c++2/src_simulator/definitions.h @@ -323,6 +323,88 @@ using std::max; ds.hidden=!ds.hidden;\n \ });\n" +#define SCHED_HTML_CSS_CONTENT_TIMELINE "table{\n \ + border-collapse: collapse;\n \ + empty-cells: show;\n \ + margin: 0.4cm;\n \ +}\n \ +td{\n \ + padding: 10px 5px;\n \ + border: 1px solid black;\n \ + max-width: 5px;\n \ +}\n \ +th{\n \ + padding: 5px;\n \ +}\n \ +.sc{\n \ + border-style: none;\n \ + padding: 0px;\n \ + font-size: small;\n \ + transform: rotate(45deg);\n \ + transform-origin: left top;\n \ +}\n \ +.sc1{\n \ + border-style: none;\n \ + padding: 0px;\n \ + font-size: small;\n \ + color: red;\n \ + transform: rotate(45deg);\n \ + transform-origin: left top;\n \ +}\n \ +h2 {\n \ + border-bottom: 1px solid #666;\n \ +}\n \ +h2 span {\n \ + position: relative;\n \ + left: -0.3em;\n \ + bottom: -0.6em;\n \ + padding: 1px 0.5em;\n \ + border-style: solid;\n \ + border-width: 1px 1px 1px 0.8em;\n \ + border-color: #666 #666 #666 #008;\n \ + background-color: #ddd;\n \ +}\n \ +.space{border-style: none;}\n \ +.not{background-color: white; text-align: center}\n \ +.notfirst{\n \ + background-color: white;\n \ + border-width: 2px;\n \ + border-color: red;\n \ + border-style: none solid none none;\n \ +}\n \ +.notmid {\n \ + background-color: white;\n \ + text-align: right;\n \ + border-style: solid none none none;\n \ +}\n \ +.notlast {\n \ + background-color: white;\n \ + width: 5px;\n \ + border-style: none none none none;\n \ +}\n \ +.t0{background-color: yellow;}\n \ +.t1{background-color: purple;}\n \ +.t2{background-color: red;}\n \ +.t3{background-color: silver;}\n \ +.t4{background-color: teal;}\n \ +.t5{background-color: aqua;}\n \ +.t6{background-color: olive;}\n \ +.t7{background-color: navy;}\n \ +.t8{background-color: maroon;}\n \ +.t9{background-color: lime;}\n \ +.t10{background-color: green;}\n \ +.t11{background-color: gray;}\n \ +.t12{background-color: fuchsia;}\n \ +.t13{background-color: blue;}\n \ +.t14{background-color: LightGoldenRodYellow;}\n \ +.wrapper {\n \ + width: 256px;\n \ + height: 256px;\n \ +}\n \ +.clear {\n \ + clear:both\n \ +}" + #define SCHED_HTML_CSS_CONTENT "table{\n \ border-collapse: collapse;\n \ empty-cells: show;\n \ diff --git a/simulators/c++2/src_simulator/sim/Simulator.cpp b/simulators/c++2/src_simulator/sim/Simulator.cpp index 8ff6df6695136d3cace196b9cf3dd122d577346e..286fe798fc2fea43d61b9b6848018a80694c4524 100644 --- a/simulators/c++2/src_simulator/sim/Simulator.cpp +++ b/simulators/c++2/src_simulator/sim/Simulator.cpp @@ -461,7 +461,67 @@ void Simulator::latencies2XML(std::ostringstream& glob, int id1, int id2) { (*j)->latencies2XML(glob, id1,id2); } } +void Simulator::timeline2HTML(std::string& iTraceFileName,std::string& iTracetaskList) const { + if ( !ends_with( iTraceFileName, EXT_HTML ) ) { + iTraceFileName.append( EXT_HTML ); + } + std::ofstream myfile(iTraceFileName.c_str()); + //myfile<<"model name: "<<iTraceFileName.c_str(); + std::map<TMLTask*, std::string> taskCellClasses; + + if (myfile.is_open()) { + myfile << SCHED_HTML_DOC; // <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n + myfile << SCHED_HTML_BEG_HTML; // <html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n + myfile << SCHED_HTML_BEG_HEAD; // <head>\n + myfile << SCHED_HTML_BEG_STYLE; // <style>\n"; + myfile << SCHED_HTML_CSS_CONTENT_TIMELINE; + myfile << SCHED_HTML_END_STYLE; // <style>\n"; + myfile << SCHED_HTML_META; // <meta http-equiv=\"content-type\" content=\"text/html; charset=ISO-8859-1\" />\n + myfile << SCHED_HTML_BEG_TITLE; // <title> + myfile << "Scheduling"; + myfile << SCHED_HTML_END_TITLE; // </title>\n + myfile << SCHED_HTML_END_HEAD; // </head>\n + myfile << SCHED_HTML_BEG_BODY; // <body>\n +// myfile << "<h1>Task to show: " << iTracetaskList.c_str() <<"</h1>\n"; + myfile << "<table style=\"float: left;position: relative;\"><tr><td width=\"170px\" style=\"max-width: unset;min-width: 170px;border-style: none none none none;\"></td>\n" + << "<td class=\"notfirst\"></td>\n" + << "<td style=\"border-style: solid none none none; border-width: 2px;border-color: red;text-align: right\"colspan=\"1000\"><b>Time</b></td>\n</tr>\n" + << "<tr><th></th><th class=\"notfirst\"></th></tr>\n" + << "<div class = \"clear\"></div>" << std::endl; + for(CPUList::const_iterator i=_simComp->getCPUList().begin(); i != _simComp->getCPUList().end(); ++i){ + for(unsigned int j = 0; j < (*i)->getAmoutOfCore(); j++) { + taskCellClasses = (*i)->HWTIMELINE2HTML(myfile, taskCellClasses, taskCellClasses.size(), iTracetaskList); + (*i)->setCycleTime((*i)->getCycleTime()+1); + } + if((*i)->getAmoutOfCore() == 1) + (*i)->setCycleTime(0); + } + + for(FPGAList::const_iterator j=_simComp->getFPGAList().begin(); j != _simComp->getFPGAList().end(); ++j){ + (*j)->setStartFlagHTML(true); + for(TaskList::const_iterator i = (*j)->getTaskList().begin(); i != (*j)->getTaskList().end(); ++i){ + (*j)->setHtmlCurrTask(*i); + taskCellClasses = (*j)->HWTIMELINE2HTML(myfile, taskCellClasses, taskCellClasses.size(), iTracetaskList); + (*j)->setStartFlagHTML(false); + } + } + for(BusList::const_iterator j=_simComp->getBusList().begin(); j != _simComp->getBusList().end(); ++j){ + taskCellClasses = (*j)->HWTIMELINE2HTML(myfile, taskCellClasses, taskCellClasses.size(), iTracetaskList); + } + myfile << "</tr>\n<tr><th>HW</th><th class=\"notfirst\"></th></tr>\n<div class = \"clear\"></div>\n"; + myfile << "</table>\n<table>\n<tr><td width=\"170px\" style=\"max-width: unset;min-width: 170px;border-style: none none none none;\"></td>\n<td class=\"notlast\"></td>\n<td class=\"notlast\"></td>\n"; + for( std::map<TMLTask*, std::string>::iterator taskColIt = taskCellClasses.begin(); taskColIt != taskCellClasses.end(); ++taskColIt ) { + TMLTask* task = (*taskColIt).first; + // Unset the default td max-width of 5px. For some reason setting the max-with on a specific t style does not work + myfile << "<td class=\"" << taskCellClasses[ task ] << "\"></td><td style=\"max-width: unset;min-width: 170px;\">" << task->toString() << "</td><td class=\"space\"></td>"; + } + myfile << "</tr>\n</table>\n"; + myfile << SCHED_HTML_END_BODY; // </body>\n + myfile << SCHED_HTML_END_HTML; // </html>\n + myfile.close(); + } +} void Simulator::schedule2HTML(std::string& iTraceFileName) const { #ifdef DEBUG_HTML std::cout<<"schedule2HTML--------------------------------------******************"<<std::endl; @@ -1880,10 +1940,12 @@ void Simulator::decodeCommand(std::string iCmd, std::ostream& iXmlOutStream){ std::cout << "End Write x samples/events to channel y." << std::endl; break; } - case 7: //Save trace in file x + case 7: { //Save trace in file x std::cout << "Save trace in file x." << std::endl; aInpStream >> aParam1; aInpStream >>aStrParam; + std::string aStrParamTask; + aInpStream >> aStrParamTask; switch (aParam1){ case 0: //VCD aGlobMsg << TAG_MSGo << "Schedule output in VCD format" << TAG_MSGc << std::endl; @@ -1900,12 +1962,17 @@ void Simulator::decodeCommand(std::string iCmd, std::ostream& iXmlOutStream){ case 3: //XML aGlobMsg << TAG_MSGo << "Schedule output in XML format" << TAG_MSGc << std::endl; schedule2XML(anEntityMsg,aStrParam); + case 4: //timeline diagram + aGlobMsg << TAG_MSGo << "Schedule output in HTML format" << TAG_MSGc << std::endl; + timeline2HTML(aStrParam, aStrParamTask); + break; default: aGlobMsg << TAG_MSGo << MSG_CMDNFOUND<< TAG_MSGc << std::endl; anErrorCode=3; } std::cout << "End Save trace in file x." << std::endl; break; + } case 8:{ //Save simulation state in file x std::cout << "Save simulation state in file x." << std::endl; aInpStream >> aStrParam; diff --git a/simulators/c++2/src_simulator/sim/Simulator.h b/simulators/c++2/src_simulator/sim/Simulator.h index b84a8a6a871e940a77a6fa8e2df578ae47495d79..ee75500b245d765302a90e9e81bf7e9d96a7dceb 100644 --- a/simulators/c++2/src_simulator/sim/Simulator.h +++ b/simulators/c++2/src_simulator/sim/Simulator.h @@ -247,6 +247,7 @@ public: ///Writes a HTML representation of the schedule of CPUs and buses to an output file void schedule2HTML(std::string& iTraceFileName) const; + void timeline2HTML(std::string& iTraceFileName, std::string& iTracetaskList) const; ///Writes simulation traces in VCD format to an output file /** diff --git a/src/main/java/remotesimulation/CommandParser.java b/src/main/java/remotesimulation/CommandParser.java index e272283e07398369b485c40e18433367e5bfbd5a..de2ac9c92b1401b79198f115bcc590ad9b17241f 100755 --- a/src/main/java/remotesimulation/CommandParser.java +++ b/src/main/java/remotesimulation/CommandParser.java @@ -494,6 +494,16 @@ public class CommandParser { sc = new SimulationCommand("save-trace-in-file", "stif", "7", params, paramNames, "Saves the current trace of the simulation in a VCD, HTML, TXT or XML file"); commandList.add(sc); + // save-timeline-trace-in-file + params = new int[2]; + paramNames = new String[2]; + params[0] = 2; + paramNames[0] = "File name"; + params[1] = 2; + paramNames[1] = "Task List"; + sc = new SimulationCommand("save-timeline-trace-in-file", "stltif", "7 4", params, paramNames, "Saves the current timeline trace of the simulation in a HTML file"); + commandList.add(sc); + // set-variable params = new int[3]; paramNames = new String[3]; diff --git a/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java b/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java index caa9044e10b3f2a8877f93ea924e96fbb912358d..b2ce7781948b2d63d825ab22031a3aae34b09153 100644 --- a/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java +++ b/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java @@ -260,6 +260,8 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene private JFrameTMLSimulationPanelTimeline tmlSimPanelTimeline; private BufferedWriter bw; private int simIndex=0; + private String listOfTaskToShowInTimeLine = ""; + private String timelineTempFile = ""; public JFrameInteractiveSimulation(Frame _f, MainGUI _mgui, String _title, String _hostSystemC, String _pathExecute, TMLMapping<TGComponent> _tmap, List<Point> _points) { super(_title); @@ -1533,90 +1535,50 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene } } - public void writeSimTraceTimeline() { - Object wait = 0; - Thread updateTransaction = new Thread(new Runnable() { - @Override - public void run() { - try { - synchronized (wait) { - buttonShowTraceTimeline.setEnabled(false); - updateTransactions(); - UIManager.put("ProgressMonitor.progressText", "Processing"); - ProgressMonitor pm = new ProgressMonitor(getContentPane(), "Updating Transaction List", - "Task starting", 0, 100); - int temp = 0; - while (trans == null) { - temp ++; - pm.setMillisToDecideToPopup(100); - //after deciding if predicted time is longer than 100 show popup - pm.setMillisToPopup(100); - //updating ProgressMonitor note - pm.setNote("Updating transaction list"); - pm.setProgress(temp); - Thread.sleep(50); - } - pm.setNote("Task finished"); - pm.close(); - wait.notify(); - } - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - }); - - Thread startTimelinePane = new Thread(new Runnable() { - @Override - public void run() { - try { - synchronized (wait) { - while(trans == null) { - System.out.println("Wait transaction list"); - Thread.sleep(100); - wait.wait(); - } - } - if (trans != null && !trans.isEmpty()) { - System.out.println("trans is updated with size " + trans.size()); - //Make a popup to select which tasks - Vector<String> tmlComponentsToValidate = new Vector<String>(); - List<String> tasks = new ArrayList<String>(); - for (TMLTask task : tmap.getTMLModeling().getTasks()) { - tasks.add(task.getName()); - } - JDialogSelectTasks jdstmlc = new JDialogSelectTasks(f, tmlComponentsToValidate, tasks, "Select tasks to show in trace"); - - GraphicLib.centerOnParent(jdstmlc); - jdstmlc.setVisible(true); - Vector<SimulationTransaction> _transCopy = new Vector<SimulationTransaction>(); -// int temp = 0; -// if (trans.size() > 2000) temp = trans.size() - 2000;// get 2000 latest transactions. - for (int i = 0; i < trans.size(); i++) { - for (String taskname : tmlComponentsToValidate) { - if (taskname.equals(trans.get(i).taskName)) { - int checkPenalty = Integer.valueOf(trans.get(i).endTime) - Integer.valueOf(trans.get(i).startTime) - Integer.valueOf(trans.get(i).length); - if (checkPenalty > 0) trans.get(i).startTime = String.valueOf(Integer.valueOf(trans.get(i).endTime) - Integer.valueOf(trans.get(i).length)); - _transCopy.add(trans.get(i)); - } - } - } - if (!_transCopy.isEmpty()) { - tmlSimPanelTimeline = new JFrameTMLSimulationPanelTimeline(new Frame(), mgui, _transCopy, "Show Trace - Timeline"); - tmlSimPanelTimeline.setVisible(true); - } - buttonShowTraceTimeline.setEnabled(true); - } else { - System.out.println("Trans is null, Transaction list need to be updated (button \"Update transactions\" under Transactions tab)."); - buttonShowTraceTimeline.setEnabled(true); - } - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - }); - updateTransaction.start(); - startTimelinePane.start(); + private void updateTimelineTrace() { + if (tmlSimPanelTimeline != null && tmlSimPanelTimeline.isShowing() && !listOfTaskToShowInTimeLine.equals("")) { + tmlSimPanelTimeline.setParam(paramMainCommand.getText().trim()); + mctb.setEnabled(false); + tmlSimPanelTimeline.setContentPaneEnable(false); +// System.out.println(timelineTempFile); +// System.out.println(listOfTaskToShowInTimeLine); + sendCommand( "save-timeline-trace-in-file" + " " + timelineTempFile + " " + listOfTaskToShowInTimeLine ); + tmlSimPanelTimeline.setPaneContent(timelineTempFile); + tmlSimPanelTimeline.setContentPaneEnable(true); + mctb.setEnabled(true); + } + } + + private void writeSimTraceTimeline() { + buttonShowTraceTimeline.setEnabled(false); + //Make a popup to select which tasks + Vector<String> tmlComponentsToValidate = new Vector<String>(); + List<String> tasks = new ArrayList<String>(); + for (TMLTask task : tmap.getTMLModeling().getTasks()) { + tasks.add(task.getName()); + } + JDialogSelectTasks jdstmlc = new JDialogSelectTasks(f, tmlComponentsToValidate, tasks, "Select tasks to show in trace"); + GraphicLib.centerOnParent(jdstmlc); + jdstmlc.setVisible(true); + listOfTaskToShowInTimeLine = ""; + timelineTempFile = "timetimetrace.html"; + for (String taskname : tmlComponentsToValidate) { + listOfTaskToShowInTimeLine += taskname + ","; + } + final String directory = saveDirName.getText().trim(); + if ( !directory.isEmpty() ) { + if (!directory.endsWith(File.separator)) + timelineTempFile = directory + File.separator + timelineTempFile; + else + timelineTempFile = directory + timelineTempFile; + } + if (!listOfTaskToShowInTimeLine.equals("")) { + sendCommand( "save-timeline-trace-in-file" + " " + timelineTempFile + " " + listOfTaskToShowInTimeLine ); + tmlSimPanelTimeline = new JFrameTMLSimulationPanelTimeline(new Frame(), mgui, this, "Show Trace - Timeline", timelineTempFile); + tmlSimPanelTimeline.setParam(paramMainCommand.getText().trim()); + tmlSimPanelTimeline.setVisible(true); + } + buttonShowTraceTimeline.setEnabled(true); } public void writeArchitectureSimTrace(){ @@ -2837,7 +2799,7 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene int type; if (format.compareTo("0") == 0) { type = SimulationTrace.VCD_DIPLO; - } else if (format.compareTo("1") == 0) { + } else if (format.compareTo("1") == 0 || format.compareTo("4") == 0) { type = SimulationTrace.HTML_DIPLO; } else if (format.compareTo("2") == 0){ type = SimulationTrace.TXT_DIPLO; @@ -3546,27 +3508,37 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene //TraceManager.addDev("Start simulation!"); } else if (command.equals(actions[InteractiveSimulationActions.ACT_RUN_SIMU].getActionCommand())) { sendCommand("run-to-next-breakpoint"); + updateTimelineTrace(); } else if (command.equals(actions[InteractiveSimulationActions.ACT_RUN_X_TIME_UNITS].getActionCommand())) { sendCommandWithPositiveInt("run-x-time-units"); + updateTimelineTrace(); } else if (command.equals(actions[InteractiveSimulationActions.ACT_RUN_TO_TIME].getActionCommand())) { sendCommandWithPositiveInt("run-to-time"); + updateTimelineTrace(); } else if (command.equals(actions[InteractiveSimulationActions.ACT_RUN_X_TRANSACTIONS].getActionCommand())) { sendCommandWithPositiveInt("run-x-transactions"); + updateTimelineTrace(); } else if (command.equals(actions[InteractiveSimulationActions.ACT_RUN_X_COMMANDS].getActionCommand())) { sendCommandWithPositiveInt("run-x-commands"); + updateTimelineTrace(); } else if (command.equals(actions[InteractiveSimulationActions.ACT_RUN_EXPLORATION].getActionCommand())) { runExploration(); //sendCommand("run-exploration"); } else if (command.equals(actions[InteractiveSimulationActions.ACT_RUN_TO_NEXT_BUS_TRANSFER].getActionCommand())) { toNextBusTransfer(); + updateTimelineTrace(); } else if (command.equals(actions[InteractiveSimulationActions.ACT_RUN_UNTIL_CPU_EXECUTES].getActionCommand())) { runUntilCPUExecutes(); + updateTimelineTrace(); } else if (command.equals(actions[InteractiveSimulationActions.ACT_RUN_UNTIL_MEMORY_ACCESS].getActionCommand())) { toNextMemoryTransfer(); + updateTimelineTrace(); } else if (command.equals(actions[InteractiveSimulationActions.ACT_RUN_UNTIL_TASK_EXECUTES].getActionCommand())) { runUntilTaskExecutes(); + updateTimelineTrace(); } else if (command.equals(actions[InteractiveSimulationActions.ACT_RUN_UNTIL_CHANNEL_ACCESS].getActionCommand())) { runUntilChannelAccess(); + updateTimelineTrace(); } else if (command.equals(actions[InteractiveSimulationActions.ACT_SAVE_VCD].getActionCommand())) { saveTraceVCD(); } else if (command.equals(actions[InteractiveSimulationActions.ACT_SAVE_HTML].getActionCommand())) { @@ -3593,6 +3565,7 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene transTimes=new HashMap<String, List<String>>(); processLatency(); askForUpdate(); + updateTimelineTrace(); } else if (command.equals(actions[InteractiveSimulationActions.ACT_REMOVE_ALL_TRANS].getActionCommand())) { sendCommand("rmat 1"); diff --git a/src/main/java/ui/interactivesimulation/JFrameTMLSimulationPanelTimeline.java b/src/main/java/ui/interactivesimulation/JFrameTMLSimulationPanelTimeline.java index b4983aec0ea58165669a97cf5d99f9782a59cc5b..e7d3b9116daf023de1002f49b07f59f27f5cc220 100644 --- a/src/main/java/ui/interactivesimulation/JFrameTMLSimulationPanelTimeline.java +++ b/src/main/java/ui/interactivesimulation/JFrameTMLSimulationPanelTimeline.java @@ -1,42 +1,50 @@ package ui.interactivesimulation; import myutil.FileUtils; +import myutil.GraphicLib; import myutil.TraceManager; +import tmltranslator.TMLMapping; import ui.ColorManager; import ui.MainGUI; +import ui.TGComponent; import javax.swing.*; +import javax.swing.text.Document; import java.awt.*; import java.awt.event.*; import java.io.File; import java.io.FileOutputStream; +import java.io.IOException; +import java.nio.file.DirectoryNotEmptyException; +import java.nio.file.Files; +import java.nio.file.NoSuchFileException; +import java.nio.file.Paths; import java.util.*; public class JFrameTMLSimulationPanelTimeline extends JFrame implements ActionListener { public InteractiveSimulationActions[] actions; - private Vector<SimulationTransaction> transTransfer; - private int indexTrans = 0; - private static final int BIG_IDLE = 50; - private static int NUMBER_OF_TRANS_TO_SHOW = 200; private static String htmlPaneContent; - private JButton buttonPrev; - private JButton buttonNext; - private JComboBox<Integer> comboBoxUpdateView; - private int maxIndexTrans = 0; private JTextPane sdpanel; protected JLabel status; private Container framePanel; private ProgressMonitor pm; - + private String filePath; private MainGUI mgui; + private JTabbedPane commandTab; + private JFrameInteractiveSimulation jfis; + private String[] cpuIDs, busIDs, memIDs, taskIDs, chanIDs; + protected JComboBox<String> cpus, busses, mems, tasks, chans; + private TMLMapping<TGComponent> tmap; + private JTextField paramMainCommand; - public JFrameTMLSimulationPanelTimeline(Frame _f, MainGUI _mgui, Vector<SimulationTransaction> _trans, String _title) { + public JFrameTMLSimulationPanelTimeline(Frame _f, MainGUI _mgui,JFrameInteractiveSimulation _jfis, String _title, String _path) { super(_title); mgui = _mgui; + tmap = mgui.gtm.getTMLMapping(); + filePath = _path; + jfis = _jfis; initActions(); - transTransfer = new Vector<SimulationTransaction>(_trans); - maxIndexTrans = (transTransfer.size() - 1) / NUMBER_OF_TRANS_TO_SHOW; makeComponents(); } @@ -53,70 +61,108 @@ public class JFrameTMLSimulationPanelTimeline extends JFrame implements ActionLi framePanel.setLayout(new BorderLayout()); // Top panel + JPanel timelinePane = new JPanel(); JPanel topPanel = new JPanel(); - buttonPrev = new JButton(actions[InteractiveSimulationActions.ACT_SHOW_PREV_TRANS_TIMELINE]); - topPanel.add(buttonPrev); - buttonNext = new JButton(actions[InteractiveSimulationActions.ACT_SHOW_NEXT_TRANS_TIMELINE]); - topPanel.add(buttonNext); JButton buttonClose = new JButton(actions[InteractiveSimulationActions.ACT_QUIT_SD_WINDOW]); topPanel.add(buttonClose); JButton buttonHtml = new JButton(actions[InteractiveSimulationActions.ACT_SAVE_TIMELINE_HTML]); topPanel.add(buttonHtml); - JTextField numberTrans = new JTextField("Number of transactions to Show"); - numberTrans.setEditable(false); - topPanel.add(numberTrans); - Integer[] numberOfTransToShow = new Integer[] {100, 200, 500, 1000, 2000}; - comboBoxUpdateView = new JComboBox<Integer>(numberOfTransToShow); - switch (NUMBER_OF_TRANS_TO_SHOW){ - case 100: comboBoxUpdateView.setSelectedIndex(0); break; - case 500: comboBoxUpdateView.setSelectedIndex(2); break; - case 1000: comboBoxUpdateView.setSelectedIndex(3); break; - case 2000: comboBoxUpdateView.setSelectedIndex(4); break; - default: comboBoxUpdateView.setSelectedIndex(1); break; + timelinePane.add(topPanel,BorderLayout.NORTH); + //Main control + JPanel jp01, jp02; + jp01 = new JPanel(new BorderLayout()); + commandTab = GraphicLib.createTabbedPaneRegular();//new JTabbedPane(); + commandTab.addTab("Control", null, jp01, "Main control commands"); + + MainCommandsToolBar mctb = new MainCommandsToolBar(jfis); + jp01.add(mctb, BorderLayout.NORTH); + + jp02 = new JPanel(); + //jp01.setPreferredSize(new Dimension(375, 400)); + GridBagLayout gridbag01 = new GridBagLayout(); + GridBagConstraints c01 = new GridBagConstraints(); + jp02.setLayout(gridbag01); + + c01.gridheight = 1; + c01.weighty = 1.0; + c01.weightx = 1.0; + c01.gridwidth = 1; + c01.fill = GridBagConstraints.BOTH; + c01.gridheight = 1; + + jp02.add(new JLabel("Command parameter: "), c01); + c01.gridwidth = GridBagConstraints.REMAINDER; //end row + paramMainCommand = new JTextField("1", 30); + paramMainCommand.setEditable(false); + jp02.add(paramMainCommand, c01); + + c01.gridwidth = 1; + jp02.add(new JLabel("CPUs and HwA: "), c01); + c01.gridwidth = GridBagConstraints.REMAINDER; //end row + if (cpuIDs == null) { + cpus = new JComboBox<String>(); + } else { + cpus = new JComboBox<String>(cpuIDs); + } + jp02.add(cpus, c01); + + c01.gridwidth = 1; + jp02.add(new JLabel("Buses: "), c01); + c01.gridwidth = GridBagConstraints.REMAINDER; //end row + if (busIDs == null) { + busses = new JComboBox<String>(); + } else { + busses = new JComboBox<String>(busIDs); + } + jp02.add(busses, c01); + + c01.gridwidth = 1; + jp02.add(new JLabel("Memories: "), c01); + c01.gridwidth = GridBagConstraints.REMAINDER; //end row + if (memIDs == null) { + mems = new JComboBox<String>(); + } else { + mems = new JComboBox<String>(memIDs); + } + jp02.add(mems, c01); + + c01.gridwidth = 1; + jp02.add(new JLabel("Tasks: "), c01); + c01.gridwidth = GridBagConstraints.REMAINDER; //end row + if (taskIDs == null) { + tasks = new JComboBox<String>(); + } else { + tasks = new JComboBox<String>(taskIDs); } + jp02.add(tasks, c01); - comboBoxUpdateView.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent event) { - try { - NUMBER_OF_TRANS_TO_SHOW = (Integer) comboBoxUpdateView.getSelectedItem(); - } catch (Exception e) { - //TraceManager.addDev(nbOfTransactions.getText()); - //TraceManager.addDev("Invalid default transaction"); - NUMBER_OF_TRANS_TO_SHOW = 200; - } - Thread t = new Thread(new Runnable() { - @Override - public void run() { - buttonPrev.setEnabled(false); - buttonNext.setEnabled(false); - maxIndexTrans = (transTransfer.size() - 1) / NUMBER_OF_TRANS_TO_SHOW; - indexTrans = 0; - htmlPaneContent = generateHtmlContent(indexTrans); - sdpanel.setText(htmlPaneContent); - updateButtonState(); - } - }); - t.start(); - } - }); - topPanel.add(comboBoxUpdateView); - - if(transTransfer.size() <= NUMBER_OF_TRANS_TO_SHOW) { - buttonPrev.setEnabled(false); - buttonNext.setEnabled(false); + c01.gridwidth = 1; + jp02.add(new JLabel("Channels: "), c01); + c01.gridwidth = GridBagConstraints.REMAINDER; //end row + if (chanIDs == null) { + chans = new JComboBox<String>(); + } else { + chans = new JComboBox<String>(chanIDs); } - updateButtonState(); + jp02.add(chans, c01); - framePanel.add(topPanel, BorderLayout.NORTH); + jp01.add(jp02, BorderLayout.CENTER); + JSplitPane split = new JSplitPane(JSplitPane.VERTICAL_SPLIT, true, topPanel, commandTab); + //split.setBackground(ColorManager.InteractiveSimulationBackground); + timelinePane.add(split, BorderLayout.CENTER); + timelinePane.add(commandTab, BorderLayout.SOUTH); + framePanel.add(timelinePane, BorderLayout.NORTH); // Simulation panel sdpanel = new JTextPane(); sdpanel.setEditable(false); sdpanel.setContentType("text/html"); - htmlPaneContent = generateHtmlContent(0); - sdpanel.setText(htmlPaneContent); + File file = new File(filePath); + try { + sdpanel.setPage(file.toURI().toURL()); + } catch (IOException e) { + e.printStackTrace(); + } JScrollPane jsp = new JScrollPane(sdpanel, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); jsp.setWheelScrollingEnabled(true); @@ -128,263 +174,81 @@ public class JFrameTMLSimulationPanelTimeline extends JFrame implements ActionLi framePanel.add(status, BorderLayout.SOUTH); pack(); + } + + private void initActions() { + actions = new InteractiveSimulationActions[InteractiveSimulationActions.NB_ACTION]; + for (int i = 0; i < InteractiveSimulationActions.NB_ACTION; i++) { + actions[i] = new InteractiveSimulationActions(i); + actions[i].addActionListener(this); + } + cpuIDs = makeCPUIDs(); + busIDs = makeBusIDs(); + memIDs = makeMemIDs(); + taskIDs = makeTasksIDs(); + chanIDs = makeChanIDs(); } - public String generateHtmlContent( int indexTrans) { - Vector<SimulationTransaction> trans = new Vector<SimulationTransaction>(transTransfer.subList((0 < NUMBER_OF_TRANS_TO_SHOW * indexTrans) ? NUMBER_OF_TRANS_TO_SHOW * indexTrans : 0 ,(transTransfer.size() - 1 < NUMBER_OF_TRANS_TO_SHOW * indexTrans +NUMBER_OF_TRANS_TO_SHOW) ? transTransfer.size() : NUMBER_OF_TRANS_TO_SHOW * indexTrans +NUMBER_OF_TRANS_TO_SHOW)); - System.out.println("Sub list from " + ((0 < NUMBER_OF_TRANS_TO_SHOW * indexTrans) ? NUMBER_OF_TRANS_TO_SHOW * indexTrans : 0) + " to " + ((transTransfer.size() - 1 < NUMBER_OF_TRANS_TO_SHOW * indexTrans +NUMBER_OF_TRANS_TO_SHOW) ? transTransfer.size() - 1 : NUMBER_OF_TRANS_TO_SHOW * indexTrans + NUMBER_OF_TRANS_TO_SHOW) + " transize " + trans.size()); - String htmlContent = ""; - Map<String, Vector<SimulationTransaction>> map = new HashMap<String, Vector<SimulationTransaction>>(); - Map<String, String> taskColors = new HashMap<String, String>(); - int taskIndex = 0; - int endTime = 0; - for (int i = 0; i < trans.size(); i++) { - //HW and task - String hwnode = (trans.get(i).deviceName.contains("Bus") ? trans.get(i).deviceName : trans.get(i).deviceName + "_core_" + trans.get(i).coreNumber); - if (map.get(hwnode) == null) { - map.put(hwnode, new Vector<SimulationTransaction>()); - } - map.get(hwnode).add(trans.get(i)); - // task color - String taskname = trans.get(i).taskName; - if (taskColors.get(taskname) == null) { - int cellIndex = taskIndex % 15; - taskIndex++; - String cellClass = "t" + String.valueOf(cellIndex); - taskColors.put(taskname, cellClass); - } + public String[] makeCPUIDs() { + if (tmap == null) { + return null; } - UIManager.put("ProgressMonitor.progressText", "Processing"); - pm = new ProgressMonitor(framePanel, "Generating Content", "Task starting", 0, map.size()); - pm.setMillisToDecideToPopup(100); - pm.setMillisToPopup(100); - for (String i : map.keySet()) { - if (Integer.valueOf(map.get(i).lastElement().endTime) > endTime) endTime = Integer.valueOf(map.get(i).lastElement().endTime); + + return tmap.getCPUandHwAIDs(); + } + + public String[] makeBusIDs() { + if (tmap == null) { + return null; } - if (endTime > 2000) endTime = 2000; - htmlContent = "<!DOCTYPE html>\n" + "<html>\n"; - htmlContent += "<head>\n" + - "<style>\n"; - htmlContent += "table{\n" + - " \tborder-collapse: collapse;\n" + - " \tempty-cells: show;\n" + - " \tmargin: 0.4cm;\n" + - " }\n" + - " td{\n" + - " \tpadding: 10px 5px;\n" + - " \tborder: 1px solid black;\n" + - " \tmax-width: 5px;\n" + - " }\n" + - " th{\n" + - " \tpadding: 5px;\n" + - " }\n" + - " .sc{\n" + - " \tborder-style: none;\n" + - " \tpadding: 0px;\n" + - " \tfont-size: small;\n" + - " transform: rotate(45deg);\n" + - " transform-origin: left top;\n" + - " }\n" + - " .sc1{\n" + - " \tborder-style: none;\n" + - " \tpadding: 0px;\n" + - " \tfont-size: small;\n" + - " \tcolor: red;\n" + - " transform: rotate(45deg);\n" + - " transform-origin: left top;\n" + - " }\n" + - " h2 {\n" + - " \tborder-bottom: 1px solid #666;\n" + - " }\n" + - " h2 span {\n" + - " \tposition: relative;\n" + - " \tleft: -0.3em;\n" + - " \tbottom: -0.6em;\n" + - " \tpadding: 1px 0.5em;\n" + - " \tborder-style: solid;\n" + - " \tborder-width: 1px 1px 1px 0.8em;\n" + - " \tborder-color: #666 #666 #666 #008;\n" + - " \tbackground-color: #ddd;\n" + - " }\n" + - " .space{border-style: none;}\n" + - " .not{background-color: white; text-align: center}\n" + - ".notfirst{\n" + - " \tbackground-color: white;\n" + - " \tborder-width: 2px;\n" + - " \tborder-color: red;\n" + - " \tborder-style: none solid none none;\n" + - " }\n" + - " .notmid {\n" + - " \tbackground-color: white;\n" + - " \ttext-align: right;\n" + - " \tborder-style: solid none none none;\n" + - " }\n" + - " .notlast {\n" + - " \tbackground-color: white;\n" + - " \twidth: 5px;\n" + - " \tborder-style: none none none none;\n" + - " }\n" + - " .t0{background-color: yellow;}\n" + - " \n" + - " .t1{background-color: purple;}\n" + - " \n" + - " .t2{background-color: red;}\n" + - " \n" + - " .t3{background-color: silver;}\n" + - " \n" + - " .t4{background-color: teal;}\n" + - " \n" + - " .t5{background-color: aqua;}\n" + - " \n" + - " .t6{background-color: olive;}\n" + - " \n" + - " .t7{background-color: navy;}\n" + - "\n" + - " .t8{background-color: maroon;}\n" + - " \n" + - " .t9{background-color: lime;}\n" + - " \n" + - " .t10{background-color: green;}\n" + - " \n" + - " .t11{background-color: gray;}\n" + - "\n" + - " .t12{background-color: fuchsia;}\n" + - " \n" + - " .t13{background-color: blue;}\n" + - " \n" + - " .t14{background-color: LightGoldenRodYellow;}\n" + - " \n" + - " .wrapper {\n" + - " \twidth: 256px;\n" + - " \theight: 256px;\n" + - " }\n" + - " \n" + - " .clear {\n" + - " \tclear:both\n" + - " }\n"; - htmlContent += "</style>\n" + - "</head>\n<body>\n<table style=\"float: left;position: relative;\">"; - htmlContent += "<tr><td width=\"170px\" style=\"max-width: unset;min-width: 170px;border-style: none none none none;\"></td>\n" + - "<td class=\"notfirst\"></td>\n" + - "<td style=\"border-style: solid none none none; border-width: 2px;border-color: red;text-align: right\" colspan=\"" + endTime + - "\"><b>Time</b></td>\n</tr>\n" + - "<tr><th></th><th class=\"notfirst\"></th></tr>\n" + - "<div class = \"clear\"></div>"; - int count = 0; - for (String i : map.keySet()) { - pm.setNote("Writing content for " + i); - //updating ProgressMonitor progress - pm.setProgress(count); - if (pm.isCanceled()) { - htmlContent = "<h1>Process has been terminated by user.</h1>"; - return htmlContent; - } - System.out.println("Writing content for " + i); - count ++; - int rowLength = 0; - Vector<String> listScale = new Vector<String>(); - Vector<String> listScaleTime = new Vector<String>(); - listScale.add("0"); - listScaleTime.add("0"); - htmlContent += "<tr><td width=\"170px\" style=\"max-width: unset;min-width: 170px;background-color: aqua;\">" + i + "</td>\n<td class=\"notfirst\"></td>\n<td class=\"notlast\"></td>\n"; - for (int j = 0; j < map.get(i).size(); j++) { - - if (j == 0 && Integer.valueOf(map.get(i).get(j).startTime) != 0) { - if(Integer.valueOf(map.get(i).get(j).startTime) > BIG_IDLE) { - htmlContent += "<td title=\"idle time" + "\" class = \"not\" colspan=\"10\"> <-IDLE " + map.get(i).get(j).startTime + "-> </td>\n"; - listScale.add("10"); - rowLength += 10; - } else { - htmlContent += "<td title=\"idle time" + "\" class = \"not\" colspan=\"" + map.get(i).get(j).startTime + "\"></td>\n"; - listScale.add(map.get(i).get(j).startTime); - rowLength += Integer.valueOf(map.get(i).get(j).startTime); - } - - if (Integer.valueOf(map.get(i).get(j).startTime) > Integer.valueOf(listScaleTime.lastElement())) { - listScaleTime.add(map.get(i).get(j).startTime); - } - if (Integer.valueOf(map.get(i).get(j).endTime) > Integer.valueOf(listScaleTime.lastElement())) { - listScaleTime.add(map.get(i).get(j).endTime); - } - } else if ((j != 0 && (Integer.valueOf(map.get(i).get(j).startTime) > Integer.valueOf(map.get(i).get(j - 1).endTime)))) { - int sub = Integer.valueOf(map.get(i).get(j).startTime) - Integer.valueOf(map.get(i).get(j - 1).endTime); - if (sub > BIG_IDLE) { - htmlContent += "<td title=\"idle time" + "\" class = \"not\" colspan=\"10\"> <-IDLE " + String.valueOf(sub) + "-> </td>\n"; - listScale.add("10"); - rowLength += 10; - } else if (sub > 0) { - htmlContent += "<td title=\"idle time" + "\" class = \"not\" colspan=\"" + String.valueOf(sub) + "\"></td>\n"; - listScale.add(String.valueOf(sub)); - rowLength += sub; - } - - } - int sub1 = Integer.valueOf(map.get(i).get(j).endTime) - Integer.valueOf(map.get(i).get(j).startTime); - if (sub1 > BIG_IDLE) { - htmlContent += "<td title=\"" + map.get(i).get(j).command + "\" class = \"" + (map.get(i).get(j).command.contains("Idle") ? "not" : taskColors.get(map.get(i).get(j).taskName)) + "\" colspan=\"10\">" + map.get(i).get(j).command.substring(0, 1) + "</td>\n"; - listScale.add("10"); - rowLength += 10; - } else if (sub1 > 0) { - htmlContent += "<td title=\"" + map.get(i).get(j).command + "\" class = \"" + (map.get(i).get(j).command.contains("Idle") ? "not" : taskColors.get(map.get(i).get(j).taskName)) + "\" colspan=\"" + String.valueOf(sub1) + "\">" + map.get(i).get(j).command.substring(0, 1) + "</td>\n"; - listScale.add(String.valueOf(sub1)); - rowLength += sub1; - } - - if (Integer.valueOf(map.get(i).get(j).startTime) > Integer.valueOf(listScaleTime.lastElement())) { - listScaleTime.add(map.get(i).get(j).startTime); - } - if (Integer.valueOf(map.get(i).get(j).endTime) > Integer.valueOf(listScaleTime.lastElement())) { - listScaleTime.add(map.get(i).get(j).endTime); - } - } - htmlContent += "</tr>\n<tr>"; - for (int k = 0; k < rowLength + 3; k++) { - if( k == 1) { - htmlContent += "<th class=\"notfirst\">"; - } else { - htmlContent += "<th></th>"; - } - } - htmlContent += "</tr>\n<tr><td width=\"170px\" style=\"max-width: unset;min-width: 170px;border-style: none none none none;\"></td>\n" + - "<td class=\"notfirst\"></td>\n<td class=\"notlast\"></td>"; - for (int l = 0; l < listScale.size(); l++) { - if (l + 1 >= listScale.size()) { - htmlContent += "<td title=\"" + listScaleTime.get(l) + "\" class = \"sc\" colspan=\"" + "5" + "\">" + listScaleTime.get(l) + "</td>\n"; - } else { - htmlContent += "<td title=\"" + listScaleTime.get(l) + "\" class = \"sc\" colspan=\"" + listScale.get(l + 1) + "\">" + listScaleTime.get(l) + "</td>\n"; - } - } - if( count >= map.size()){ - htmlContent += "</tr>\n<tr><th>HW</th><th class=\"notfirst\"></th></tr>\n<div class = \"clear\"></div>\n"; - } else { - htmlContent += "</tr>\n<tr><th></th><th class=\"notfirst\"></th></tr>\n<div class = \"clear\"></div>\n"; - } + return tmap.getBusIDs(); + } + public String[] makeMemIDs() { + if (tmap == null) { + return null; } - htmlContent += "</table>\n<table>\n<tr><td width=\"170px\" style=\"max-width: unset;min-width: 170px;border-style: none none none none;\"></td>\n" + - "<td class=\"notlast\"></td>\n"; - for (String colors : taskColors.keySet()) { - htmlContent += "<td class = \"" + taskColors.get(colors) + "\" style=\"max-width: unset;min-width: 170px;\">" + colors + "</td>"; - htmlContent += "<td class=\"space\"></td>"; + + return tmap.getMemIDs(); + } + + public String[] makeTasksIDs() { + if (tmap == null) { + return null; } - htmlContent += "</tr>\n</table>\n</body>\n" + "</html>"; -// System.out.println(htmlContent); - pm.setNote("Task finished"); - pm.close(); - return htmlContent; + return tmap.getTasksIDs(); } - private void initActions() { - actions = new InteractiveSimulationActions[InteractiveSimulationActions.NB_ACTION]; - for (int i = 0; i < InteractiveSimulationActions.NB_ACTION; i++) { - actions[i] = new InteractiveSimulationActions(i); - actions[i].addActionListener(this); + public String[] makeChanIDs() { + if (tmap == null) { + return null; } + + return tmap.getChanIDs(); } + public void close() { + try + { + Files.deleteIfExists(Paths.get(filePath)); + } + catch(NoSuchFileException e) + { + System.out.println("No such file/directory exists"); + } + catch(DirectoryNotEmptyException e) + { + System.out.println("Directory is not empty."); + } + catch(IOException e) + { + System.out.println("Invalid permissions."); + } + + System.out.println("Deletion successful."); dispose(); setVisible(false); } @@ -415,6 +279,7 @@ public class JFrameTMLSimulationPanelTimeline extends JFrame implements ActionLi } try { FileOutputStream fos = new FileOutputStream(file); + htmlPaneContent = sdpanel.getText(); fos.write(htmlPaneContent.getBytes()); fos.close(); JOptionPane.showMessageDialog(getContentPane(), "The capture was correctly performed and saved in " + file.getAbsolutePath(), "Screen capture ok", JOptionPane.INFORMATION_MESSAGE); @@ -424,16 +289,21 @@ public class JFrameTMLSimulationPanelTimeline extends JFrame implements ActionLi return; } } - private void updateButtonState() { - if (indexTrans == 0) - buttonPrev.setEnabled(false); - else - buttonPrev.setEnabled(true); - - if (indexTrans >= maxIndexTrans) - buttonNext.setEnabled(false); - else - buttonNext.setEnabled(true); + public void setParam(String param) { + paramMainCommand.setText(param); + } + public void setContentPaneEnable(boolean x) { + commandTab.setEnabled(x); + } + public void setPaneContent(String filePath) { + try { + File file = new File(filePath); + Document doc = sdpanel.getDocument(); + doc.putProperty(Document.StreamDescriptionProperty, null); + sdpanel.setPage(file.toURI().toURL()); + } catch (IOException e) { + e.printStackTrace(); + } } public void actionPerformed(ActionEvent evt) { String command = evt.getActionCommand(); @@ -443,37 +313,5 @@ public class JFrameTMLSimulationPanelTimeline extends JFrame implements ActionLi } else if (command.equals(actions[InteractiveSimulationActions.ACT_SAVE_TIMELINE_HTML].getActionCommand())) { saveHTML(); } - else if (command.equals(actions[InteractiveSimulationActions.ACT_SHOW_NEXT_TRANS_TIMELINE].getActionCommand())) { - Thread t = new Thread(new Runnable() { - @Override - public void run() { - buttonPrev.setEnabled(false); - buttonNext.setEnabled(false); - if (indexTrans < maxIndexTrans) { - indexTrans ++; - htmlPaneContent = generateHtmlContent(indexTrans); - sdpanel.setText(htmlPaneContent); - } - updateButtonState(); - } - }); - t.start(); - } - else if (command.equals(actions[InteractiveSimulationActions.ACT_SHOW_PREV_TRANS_TIMELINE].getActionCommand())) { - Thread t = new Thread(new Runnable() { - @Override - public void run() { - buttonPrev.setEnabled(false); - buttonNext.setEnabled(false); - if (indexTrans > 0) { - indexTrans --; - htmlPaneContent = generateHtmlContent(indexTrans); - sdpanel.setText(htmlPaneContent); - } - updateButtonState(); - } - }); - t.start(); - } } } diff --git a/ttool/src/test/java/tmltranslator/TimelineDiagramTest.java b/ttool/src/test/java/tmltranslator/TimelineDiagramTest.java index b0a211d175be8dc9ed64f4c2db6ab8f0e217f0eb..eca1a7602ced50541ae3eca57e351a7ef8ebf386 100644 --- a/ttool/src/test/java/tmltranslator/TimelineDiagramTest.java +++ b/ttool/src/test/java/tmltranslator/TimelineDiagramTest.java @@ -157,99 +157,36 @@ public class TimelineDiagramTest extends AbstractUITest { return; } System.out.println("SUCCESS: executing: " + "make -C " + SIM_DIR); - // Starts simulation - Runtime.getRuntime().exec("./" + SIM_DIR + "run.x" + " -server"); - Thread.sleep(1000); - // Connects to the simulator, incase of using terminal: "./run.x -server" to start server and "nc localhost 3490" to connect to server - rc = new RemoteConnection("localhost"); + // Run the simulator + String graphPath = SIM_DIR + "testgraph_" + s + ".html"; try { - rc.connect(); - isReady = true; - } catch (RemoteConnectionException rce) { - System.out.println("Could not connect to server."); - } - toServer(" 1 0", rc); - Thread.sleep(5); - toServer("22 100", rc); - Thread.sleep(5); - while (running) { - String demo = null; - try { - demo = rc.readOneLine(); - } catch (RemoteConnectionException e) { - e.printStackTrace(); - } - if (demo.contains("transnb nb=")) { - running = false; - } - int index0 = demo.indexOf("<transinfo"); + String[] params = new String[3]; - if ((index0 > -1)) { - analyzeServerAnswer(demo, index0); - } else { - continue; - } - } + params[0] = "./" + SIM_DIR + "run.x"; + params[1] = "-cmd"; + params[2] = "1 6 100; 7 4 " + graphPath + " ApplicationSimple__Src,ApplicationSimple__T1,ApplicationSimple__T2"; + proc = Runtime.getRuntime().exec(params); + //proc = Runtime.getRuntime().exec("./" + SIM_DIR + "run.x -explo -gname testgraph_" + s); + proc_in = new BufferedReader(new InputStreamReader(proc.getInputStream())); - System.out.println("Transaction list size: " + trans.size()); + monitorError(proc); - JFrameTMLSimulationPanelTimeline tmlSimPanelTimeline = new JFrameTMLSimulationPanelTimeline(new Frame(), mainGUI, trans, - "Show Trace - Timeline"); -// System.out.println(tmlSimPanelTimeline.generateHtmlContent(0)); + while ((str = proc_in.readLine()) != null) { + // TraceManager.addDev( "Sending " + str + " from " + port + " to client..." ); + System.out.println("executing: " + str); + } + } catch (Exception e) { + // Probably make is not installed + System.out.println("FAILED: executing simulation"); + return; + } File file = new File(EXPECTED_FILE_GENERATED_TIMELINE); String content = FileUtils.readFileToString(file, StandardCharsets.UTF_8); - assertTrue(content.equals(tmlSimPanelTimeline.generateHtmlContent(0))); - - } - } - private synchronized void toServer(String s, RemoteConnection rc) throws RemoteConnectionException { - while(!isReady) { - TraceManager.addDev("Server not ready"); - try { - rc.send("13"); - wait(250); - } catch (InterruptedException ie) { - - } - } - rc.send(s); - } - - private void analyzeServerAnswer(String s, int index0) { - String val = s.substring(index0+10).trim(); - Pattern p = Pattern.compile("\"([^\"]*)\""); - Matcher m = p.matcher(val); - ArrayList<String> splited = new ArrayList<>(); - while (m.find()) { - splited.add(m.group(1)); - } - writeTransValue(splited); - } + File file1 = new File(graphPath); + String content1 = FileUtils.readFileToString(file1, StandardCharsets.UTF_8); + assertTrue(content.equals(content1)); - private void writeTransValue(ArrayList<String> val) { - if(trans == null) trans = new Vector<SimulationTransaction>(); - SimulationTransaction st = new SimulationTransaction(); - st.uniqueID = Long.valueOf(val.get(0)); - st.nodeType = val.get(1); - st.deviceName = val.get(2); - st.coreNumber = val.get(3); - int index = val.get(4).indexOf(": "); - if (index == -1){ - st.taskName = "Unknown"; - st.command = val.get(4); - } else { - st.taskName = val.get(4).substring(0, index).trim(); - st.command = val.get(4).substring(index+1, val.get(4).length()).trim(); } - st.startTime = val.get(5); - st.endTime = val.get(6); - st.length = val.get(7); - st.virtualLength = val.get(8); - st.id = val.get(9); - st.runnableTime = val.get(10); - st.channelName = (val.size() > 11) ? val.get(11) : "Unknown"; - - trans.add(st); } } diff --git a/ttool/src/test/resources/tmltranslator/expected/expected_get_generated_timeline.txt b/ttool/src/test/resources/tmltranslator/expected/expected_get_generated_timeline.txt index 86a041f7ca1feaa584452a465af8d6158885449e..e86804c16769ab855bc43369acc326706f72f81c 100644 --- a/ttool/src/test/resources/tmltranslator/expected/expected_get_generated_timeline.txt +++ b/ttool/src/test/resources/tmltranslator/expected/expected_get_generated_timeline.txt @@ -1,221 +1,139 @@ -<!DOCTYPE html> -<html> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" +"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <style> table{ - border-collapse: collapse; - empty-cells: show; - margin: 0.4cm; + border-collapse: collapse; + empty-cells: show; + margin: 0.4cm; } td{ - padding: 10px 5px; - border: 1px solid black; - max-width: 5px; + padding: 10px 5px; + border: 1px solid black; + max-width: 5px; } th{ - padding: 5px; + padding: 5px; } .sc{ - border-style: none; - padding: 0px; - font-size: small; + border-style: none; + padding: 0px; + font-size: small; transform: rotate(45deg); transform-origin: left top; } .sc1{ - border-style: none; - padding: 0px; - font-size: small; - color: red; + border-style: none; + padding: 0px; + font-size: small; + color: red; transform: rotate(45deg); transform-origin: left top; } h2 { - border-bottom: 1px solid #666; + border-bottom: 1px solid #666; } h2 span { - position: relative; - left: -0.3em; - bottom: -0.6em; - padding: 1px 0.5em; - border-style: solid; - border-width: 1px 1px 1px 0.8em; - border-color: #666 #666 #666 #008; - background-color: #ddd; + position: relative; + left: -0.3em; + bottom: -0.6em; + padding: 1px 0.5em; + border-style: solid; + border-width: 1px 1px 1px 0.8em; + border-color: #666 #666 #666 #008; + background-color: #ddd; } .space{border-style: none;} .not{background-color: white; text-align: center} -.notfirst{ - background-color: white; - border-width: 2px; - border-color: red; - border-style: none solid none none; + .notfirst{ + background-color: white; + border-width: 2px; + border-color: red; + border-style: none solid none none; } .notmid { - background-color: white; - text-align: right; - border-style: solid none none none; + background-color: white; + text-align: right; + border-style: solid none none none; } .notlast { - background-color: white; - width: 5px; - border-style: none none none none; + background-color: white; + width: 5px; + border-style: none none none none; } .t0{background-color: yellow;} - .t1{background-color: purple;} - .t2{background-color: red;} - .t3{background-color: silver;} - .t4{background-color: teal;} - .t5{background-color: aqua;} - .t6{background-color: olive;} - .t7{background-color: navy;} - .t8{background-color: maroon;} - .t9{background-color: lime;} - .t10{background-color: green;} - .t11{background-color: gray;} - .t12{background-color: fuchsia;} - .t13{background-color: blue;} - .t14{background-color: LightGoldenRodYellow;} - .wrapper { - width: 256px; - height: 256px; + width: 256px; + height: 256px; } - .clear { - clear:both - } -</style> + clear:both + }</style> +<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" /> +<title>Scheduling</title> </head> <body> <table style="float: left;position: relative;"><tr><td width="170px" style="max-width: unset;min-width: 170px;border-style: none none none none;"></td> <td class="notfirst"></td> -<td style="border-style: solid none none none; border-width: 2px;border-color: red;text-align: right" colspan="84"><b>Time</b></td> -</tr> -<tr><th></th><th class="notfirst"></th></tr> -<div class = "clear"></div><tr><td width="170px" style="max-width: unset;min-width: 170px;background-color: aqua;">Bus0_0</td> -<td class="notfirst"></td> -<td class="notlast"></td> -<td title="idle time" class = "not" colspan="5"></td> -<td title="Write 20,Application__chToT1" class = "t0" colspan="5">W</td> -<td title="idle time" class = "not" colspan="30"></td> -<td title="Write 20,Application__chToT2" class = "t1" colspan="2">W</td> -<td title="idle time" class = "not" colspan="8"></td> -<td title="Write 20,Application__chToT2" class = "t1" colspan="2">W</td> -<td title="idle time" class = "not" colspan="4"></td> -<td title="Write 20,Application__chToT2" class = "t1" colspan="1">W</td> -</tr> -<tr><th></th><th class="notfirst"><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th></tr> -<tr><td width="170px" style="max-width: unset;min-width: 170px;border-style: none none none none;"></td> -<td class="notfirst"></td> -<td class="notlast"></td><td title="0" class = "sc" colspan="5">0</td> -<td title="5" class = "sc" colspan="5">5</td> -<td title="10" class = "sc" colspan="30">10</td> -<td title="40" class = "sc" colspan="2">40</td> -<td title="42" class = "sc" colspan="8">42</td> -<td title="50" class = "sc" colspan="2">50</td> -<td title="52" class = "sc" colspan="4">52</td> -<td title="56" class = "sc" colspan="1">56</td> -<td title="57" class = "sc" colspan="5">57</td> +<td style="border-style: solid none none none; border-width: 2px;border-color: red;text-align: right"colspan="1000"><b>Time</b></td> </tr> <tr><th></th><th class="notfirst"></th></tr> <div class = "clear"></div> -<tr><td width="170px" style="max-width: unset;min-width: 170px;background-color: aqua;">SRC2_2_core_0</td> +<tr><td width="170px" style="max-width: unset;min-width: 170px;background-color: aqua;">FPGA1_1_core_0</td> <td class="notfirst"></td> <td class="notlast"></td> -<td title="idle time" class = "not" colspan="4"></td> -<td title="Wait Application__startEvt__Application__startEvt params:" class = "t0" colspan="1">W</td> -<td title="idle time" class = "not" colspan="5"></td> -<td title="Read 20,Application__chToT1" class = "t1" colspan="20">R</td> -<td title="idle time" class = "not" colspan="10"></td> -<td title="Write 20,Application__chToT2" class = "t1" colspan="2">W</td> -<td title="idle time" class = "not" colspan="8"></td> -<td title="Write 20,Application__chToT2" class = "t1" colspan="2">W</td> -<td title="idle time" class = "not" colspan="4"></td> -<td title="Read 20,Application__chToT2" class = "t2" colspan="4">R</td> -<td title="idle time" class = "not" colspan="4"></td> -<td title="Execi 20" class = "t2" colspan="20">E</td> +<td title="idle time" class="not"></td> +<td title="ApplicationSimple__T1: Wait ApplicationSimple__evtToT1__ApplicationSimple__evtToT1 params: t:1 l:1 (vl:1) params:(100(size)) Ch: ApplicationSimple__evtToT1__ApplicationSimple__evtToT1" class="t0"></td> +<td title="idle time" class="not" colspan="4"></td> +<td title="ApplicationSimple__T1: Read 400,ApplicationSimple__chToT1 t:6 l:400 (vl:400) params: Ch: ApplicationSimple__chToT1" class="t0" colspan="10"> R</td> </tr> -<tr><th></th><th class="notfirst"><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th></tr> +<tr><th></th><th class="notfirst"><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th></tr> <tr><td width="170px" style="max-width: unset;min-width: 170px;border-style: none none none none;"></td> <td class="notfirst"></td> -<td class="notlast"></td><td title="0" class = "sc" colspan="4">0</td> -<td title="4" class = "sc" colspan="1">4</td> -<td title="5" class = "sc" colspan="5">5</td> -<td title="10" class = "sc" colspan="20">10</td> -<td title="30" class = "sc" colspan="10">30</td> -<td title="40" class = "sc" colspan="2">40</td> -<td title="42" class = "sc" colspan="8">42</td> -<td title="50" class = "sc" colspan="2">50</td> -<td title="52" class = "sc" colspan="4">52</td> -<td title="56" class = "sc" colspan="4">56</td> -<td title="60" class = "sc" colspan="4">60</td> -<td title="64" class = "sc" colspan="20">64</td> -<td title="84" class = "sc" colspan="5">84</td> -</tr> -<tr><th></th><th class="notfirst"></th></tr> +<td class="notlast"></td> +<td title="0" class="sc"></td><td title="1" class="sc"></td><td title="2" class="sc" colspan="4">2</td><td title="6" class="sc" colspan="10">6</td><td title="406" class="sc" colspan="5">406</td></tr> + <div class = "clear"></div> -<tr><td width="170px" style="max-width: unset;min-width: 170px;background-color: aqua;">SRC2_2_core_1</td> +<tr><td width="170px" style="max-width: unset;min-width: 170px;background-color: aqua;">Src_1_core_0</td> <td class="notfirst"></td> <td class="notlast"></td> -<td title="idle time" class = "not" colspan="5"></td> -<td title="Write 20,Application__chToT1" class = "t0" colspan="5">W</td> -<td title="idle time" class = "not" colspan="20"></td> -<td title="Execi 10" class = "t1" colspan="10">E</td> -<td title="idle time" class = "not" colspan="2"></td> -<td title="Read 20,Application__chToT2" class = "t2" colspan="8">R</td> -<td title="idle time" class = "not" colspan="2"></td> -<td title="Read 20,Application__chToT2" class = "t2" colspan="4">R</td> -<td title="Write 20,Application__chToT2" class = "t1" colspan="1">W</td> -<td title="idle time" class = "not" colspan="3"></td> -<td title="Read 20,Application__chToT2" class = "t2" colspan="4">R</td> +<td title="ApplicationSimple__Src: Send ApplicationSimple__evtToT1__ApplicationSimple__evtToT1(evtFB) len:2 content:0 params: t:0 l:1 (vl:1) params:(100(size)) Ch: ApplicationSimple__evtToT1__ApplicationSimple__evtToT1" class="t1"></td> +<td title="ApplicationSimple__Src: Write 400,ApplicationSimple__chToT1 t:1 l:5 (vl:400) params: Ch: ApplicationSimple__chToT1" class="t1" colspan="5"> W</td> </tr> -<tr><th></th><th class="notfirst"><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th></tr> +<tr><th></th><th class="notfirst"><th></th><th></th><th></th><th></th><th></th><th></th></tr> <tr><td width="170px" style="max-width: unset;min-width: 170px;border-style: none none none none;"></td> <td class="notfirst"></td> -<td class="notlast"></td><td title="0" class = "sc" colspan="5">0</td> -<td title="5" class = "sc" colspan="5">5</td> -<td title="10" class = "sc" colspan="20">10</td> -<td title="30" class = "sc" colspan="10">30</td> -<td title="40" class = "sc" colspan="2">40</td> -<td title="42" class = "sc" colspan="8">42</td> -<td title="50" class = "sc" colspan="2">50</td> -<td title="52" class = "sc" colspan="4">52</td> -<td title="56" class = "sc" colspan="1">56</td> -<td title="57" class = "sc" colspan="3">57</td> -<td title="60" class = "sc" colspan="4">60</td> -<td title="64" class = "sc" colspan="5">64</td> -</tr> -<tr><th></th><th class="notfirst"></th></tr> +<td class="notlast"></td> +<td title="0" class="sc"></td><td title="1" class="sc" colspan="5">1</td><td title="6" class="sc" colspan="5">6</td></tr> + <div class = "clear"></div> -<tr><td width="170px" style="max-width: unset;min-width: 170px;background-color: aqua;">SRC1_1_core_0</td> +<tr><td width="170px" style="max-width: unset;min-width: 170px;background-color: aqua;">Bus0_0</td> <td class="notfirst"></td> <td class="notlast"></td> -<td title="idle time" class = "not" colspan="2"></td> -<td title="IdleDL in Application__Start len:1 progress:0 ID:36" class = "not" colspan="1">I</td> -<td title="Send Application__startEvt__Application__startEvt(evtFB) len:8 content:0 params:" class = "t3" colspan="1">S</td> +<td title="idle time" class="not"></td> +<td title="ApplicationSimple__Src: Write 400,ApplicationSimple__chToT1 t:1 l:5 (vl:400) params: Ch: ApplicationSimple__chToT1" class="t1" colspan="5"> W</td> </tr> -<tr><th></th><th class="notfirst"><th></th><th></th><th></th><th></th><th></th></tr> +<tr><th></th><th class="notfirst"><th></th><th></th><th></th><th></th><th></th><th></th></tr> <tr><td width="170px" style="max-width: unset;min-width: 170px;border-style: none none none none;"></td> <td class="notfirst"></td> -<td class="notlast"></td><td title="0" class = "sc" colspan="2">0</td> -<td title="2" class = "sc" colspan="1">2</td> -<td title="3" class = "sc" colspan="1">3</td> -<td title="4" class = "sc" colspan="5">4</td> +<td class="notlast"></td> +<td title="0" class="sc"></td><td title="1" class="sc" colspan="5">1</td><td title="6" class="sc" colspan="5">6</td></tr> +<div class = "clear"></div> </tr> <tr><th>HW</th><th class="notfirst"></th></tr> <div class = "clear"></div> @@ -223,7 +141,8 @@ table{ <table> <tr><td width="170px" style="max-width: unset;min-width: 170px;border-style: none none none none;"></td> <td class="notlast"></td> -<td class = "t3" style="max-width: unset;min-width: 170px;">Application__Start</td><td class="space"></td><td class = "t0" style="max-width: unset;min-width: 170px;">Application__Src</td><td class="space"></td><td class = "t1" style="max-width: unset;min-width: 170px;">Application__T1</td><td class="space"></td><td class = "t2" style="max-width: unset;min-width: 170px;">Application__T2</td><td class="space"></td></tr> +<td class="notlast"></td> +<td class="t0"></td><td style="max-width: unset;min-width: 170px;">ApplicationSimple__T1</td><td class="space"></td><td class="t1"></td><td style="max-width: unset;min-width: 170px;">ApplicationSimple__Src</td><td class="space"></td></tr> </table> </body> -</html> \ No newline at end of file +</html> diff --git a/ttool/src/test/resources/tmltranslator/simulator/timelineDiagram.xml b/ttool/src/test/resources/tmltranslator/simulator/timelineDiagram.xml index 121355b93ec02f4a535f3499433b6123e9231540..c7b850be49e07c1b61ce11f2a715c6a6fd5ef124 100644 --- a/ttool/src/test/resources/tmltranslator/simulator/timelineDiagram.xml +++ b/ttool/src/test/resources/tmltranslator/simulator/timelineDiagram.xml @@ -1,129 +1,124 @@ <?xml version="1.0" encoding="UTF-8"?> -<TURTLEGMODELING version="1.0beta" ANIMATE_INTERACTIVE_SIMULATION="false" ACTIVATE_PENALTIES="false" UPDATE_INFORMATION_DIPLO_SIM="false" ANIMATE_WITH_INFO_DIPLO_SIM="false" OPEN_DIAG_DIPLO_SIM="false" LAST_SELECTED_MAIN_TAB="1" LAST_SELECTED_SUB_TAB="0"> +<TURTLEGMODELING version="1.0beta" ANIMATE_INTERACTIVE_SIMULATION="true" ACTIVATE_PENALTIES="false" UPDATE_INFORMATION_DIPLO_SIM="false" ANIMATE_WITH_INFO_DIPLO_SIM="true" OPEN_DIAG_DIPLO_SIM="false" LAST_SELECTED_MAIN_TAB="1" LAST_SELECTED_SUB_TAB="0"> -<Modeling type="TML Component Design" nameTab="Application" tabs="TML Component Task Diagram$Start$Src$T1$T2" > +<Modeling type="TML Component Design" nameTab="ApplicationSimple" tabs="TML Component Task Diagram$Src$T1$T2" > <TMLComponentTaskDiagramPanel name="TML Component Task Diagram" minX="10" maxX="2500" minY="10" maxY="1500" channels="true" events="true" requests="true" zoom="1.0" > -<CONNECTOR type="126" id="1" > -<cdparam x="210" y="483" /> +<CONNECTOR type="126" id="566" > +<cdparam x="335" y="300" /> <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="Connector between ports" /> -<P1 x="210" y="483" id="4" /> -<P2 x="209" y="312" id="34" /> +<P1 x="335" y="300" id="572" /> +<P2 x="414" y="300" id="585" /> <AutomaticDrawing data="true" /> </CONNECTOR> -<CONNECTOR type="126" id="2" > +<CONNECTOR type="126" id="567" > <cdparam x="335" y="236" /> <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="Connector between ports" /> -<P1 x="322" y="224" id="32" /> -<P2 x="427" y="223" id="47" /> +<P1 x="335" y="237" id="570" /> +<P2 x="414" y="236" id="583" /> <AutomaticDrawing data="true" /> </CONNECTOR> -<CONNECTOR type="126" id="3" > +<CONNECTOR type="126" id="568" > +<cdparam x="590" y="305" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="Connector between ports" /> +<P1 x="590" y="305" id="589" /> +<P2 x="670" y="302" id="602" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="126" id="569" > <cdparam x="590" y="241" /> <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="Connector between ports" /> -<P1 x="577" y="228" id="45" /> -<P2 x="683" y="225" id="58" /> +<P1 x="590" y="241" id="587" /> +<P2 x="670" y="238" id="600" /> <AutomaticDrawing data="true" /> </CONNECTOR> -<COMPONENT type="1202" id="14" > -<cdparam x="124" y="496" /> +<COMPONENT type="1202" id="582" > +<cdparam x="122" y="175" /> <sizeparam width="200" height="150" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> -<infoparam name="Primitive component" value="Start" /> -<TGConnectingPoint num="0" id="6" /> -<TGConnectingPoint num="1" id="7" /> -<TGConnectingPoint num="2" id="8" /> -<TGConnectingPoint num="3" id="9" /> -<TGConnectingPoint num="4" id="10" /> -<TGConnectingPoint num="5" id="11" /> -<TGConnectingPoint num="6" id="12" /> -<TGConnectingPoint num="7" id="13" /> +<infoparam name="Primitive component" value="Src" /> +<TGConnectingPoint num="0" id="574" /> +<TGConnectingPoint num="1" id="575" /> +<TGConnectingPoint num="2" id="576" /> +<TGConnectingPoint num="3" id="577" /> +<TGConnectingPoint num="4" id="578" /> +<TGConnectingPoint num="5" id="579" /> +<TGConnectingPoint num="6" id="580" /> +<TGConnectingPoint num="7" id="581" /> <extraparam> -<Data isAttacker="No" daemon="false" periodic="false" periodValue="" unit="ns" Operation="" /> -<Attribute access="2" id="x" value="" type="0" typeOther="" /> +<Data isAttacker="No" daemon="false" periodic="false" periodValue="" unit="" Operation="" /> +<Attribute access="2" id="size" value="100" type="0" typeOther="" /> </extraparam> </COMPONENT> -<SUBCOMPONENT type="1203" id="5" > -<father id="14" num="0" /> -<cdparam x="197" y="483" /> +<SUBCOMPONENT type="1203" id="571" > +<father id="582" num="0" /> +<cdparam x="309" y="224" /> <sizeparam width="26" height="26" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> <cdrectangleparam minX="-13" maxX="187" minY="-13" maxY="137" /> -<infoparam name="Primitive port" value="Event startEvt" /> -<TGConnectingPoint num="0" id="4" /> +<infoparam name="Primitive port" value="Channel chToT1" /> +<TGConnectingPoint num="0" id="570" /> <extraparam> -<Prop commName="startEvt" commType="1" origin="true" finite="true" blocking="true" maxSamples="8" widthSamples="4" isLossy="false" isPrex="false" isPostex="false" lossPercentage="0" maxNbOfLoss="0" dataFlowType="int16_t" associatedEvent="" checkConf="false" checkConfStatus="0" checkAuth="false" checkWeakAuthStatus="0" checkStrongAuthStatus="0" vc="0" /> -<Type type="1" typeOther="" /> +<Prop commName="chToT1" commType="0" origin="true" finite="false" blocking="true" maxSamples="500" widthSamples="4" isLossy="false" isPrex="false" isPostex="false" lossPercentage="0" maxNbOfLoss="0" dataFlowType="int16_t" associatedEvent="" checkConf="false" checkConfStatus="0" checkAuth="false" checkWeakAuthStatus="0" checkStrongAuthStatus="0" vc="0" /> +<Type type="0" typeOther="" /> <Type type="0" typeOther="" /> <Type type="0" typeOther="" /> <Type type="0" typeOther="" /> <Type type="0" typeOther="" /> </extraparam> </SUBCOMPONENT> - -<COMPONENT type="308" id="31" > -<cdparam x="116" y="69" /> -<sizeparam width="284" height="45" minWidth="80" minHeight="10" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<SUBCOMPONENT type="1203" id="573" > +<father id="582" num="1" /> +<cdparam x="309" y="287" /> +<sizeparam width="26" height="26" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> -<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> -<infoparam name="Pragma" value=" -PERIOD 10ms -" /> -<TGConnectingPoint num="0" id="15" /> -<TGConnectingPoint num="1" id="16" /> -<TGConnectingPoint num="2" id="17" /> -<TGConnectingPoint num="3" id="18" /> -<TGConnectingPoint num="4" id="19" /> -<TGConnectingPoint num="5" id="20" /> -<TGConnectingPoint num="6" id="21" /> -<TGConnectingPoint num="7" id="22" /> -<TGConnectingPoint num="8" id="23" /> -<TGConnectingPoint num="9" id="24" /> -<TGConnectingPoint num="10" id="25" /> -<TGConnectingPoint num="11" id="26" /> -<TGConnectingPoint num="12" id="27" /> -<TGConnectingPoint num="13" id="28" /> -<TGConnectingPoint num="14" id="29" /> -<TGConnectingPoint num="15" id="30" /> +<cdrectangleparam minX="-13" maxX="187" minY="-13" maxY="137" /> +<infoparam name="Primitive port" value="Event evtToT1" /> +<TGConnectingPoint num="0" id="572" /> <extraparam> -<Line value="" /> -<Line value="PERIOD 10ms" /> +<Prop commName="evtToT1" commType="1" origin="true" finite="true" blocking="true" maxSamples="2" widthSamples="4" isLossy="false" isPrex="false" isPostex="false" lossPercentage="0" maxNbOfLoss="0" dataFlowType="int16_t" associatedEvent="" checkConf="false" checkConfStatus="0" checkAuth="false" checkWeakAuthStatus="0" checkStrongAuthStatus="0" vc="0" /> +<Type type="1" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> </extraparam> -</COMPONENT> +</SUBCOMPONENT> -<COMPONENT type="1202" id="44" > -<cdparam x="122" y="175" /> -<sizeparam width="200" height="150" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<COMPONENT type="1202" id="599" > +<cdparam x="427" y="177" /> +<sizeparam width="150" height="150" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> -<infoparam name="Primitive component" value="Src" /> -<TGConnectingPoint num="0" id="36" /> -<TGConnectingPoint num="1" id="37" /> -<TGConnectingPoint num="2" id="38" /> -<TGConnectingPoint num="3" id="39" /> -<TGConnectingPoint num="4" id="40" /> -<TGConnectingPoint num="5" id="41" /> -<TGConnectingPoint num="6" id="42" /> -<TGConnectingPoint num="7" id="43" /> +<infoparam name="Primitive component" value="T1" /> +<TGConnectingPoint num="0" id="591" /> +<TGConnectingPoint num="1" id="592" /> +<TGConnectingPoint num="2" id="593" /> +<TGConnectingPoint num="3" id="594" /> +<TGConnectingPoint num="4" id="595" /> +<TGConnectingPoint num="5" id="596" /> +<TGConnectingPoint num="6" id="597" /> +<TGConnectingPoint num="7" id="598" /> <extraparam> -<Data isAttacker="No" daemon="false" periodic="false" periodValue="" unit="ns" Operation="" /> -<Attribute access="2" id="x" value="" type="0" typeOther="" /> +<Data isAttacker="No" daemon="false" periodic="false" periodValue="" unit="" Operation="" /> +<Attribute access="2" id="size" value="" type="0" typeOther="" /> </extraparam> </COMPONENT> -<SUBCOMPONENT type="1203" id="33" > -<father id="44" num="0" /> -<cdparam x="309" y="224" /> +<SUBCOMPONENT type="1203" id="584" > +<father id="599" num="0" /> +<cdparam x="414" y="223" /> <sizeparam width="26" height="26" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> -<cdrectangleparam minX="-13" maxX="187" minY="-13" maxY="137" /> +<cdrectangleparam minX="-13" maxX="137" minY="-13" maxY="137" /> <infoparam name="Primitive port" value="Channel chToT1" /> -<TGConnectingPoint num="0" id="32" /> +<TGConnectingPoint num="0" id="583" /> <extraparam> -<Prop commName="chToT1" commType="0" origin="true" finite="false" blocking="true" maxSamples="500" widthSamples="4" isLossy="false" isPrex="false" isPostex="false" lossPercentage="0" maxNbOfLoss="0" dataFlowType="int16_t" associatedEvent="" checkConf="false" checkConfStatus="0" checkAuth="false" checkWeakAuthStatus="0" checkStrongAuthStatus="0" vc="0" /> +<Prop commName="chToT1" commType="0" origin="false" finite="false" blocking="true" maxSamples="8" widthSamples="4" isLossy="false" isPrex="false" isPostex="false" lossPercentage="0" maxNbOfLoss="0" dataFlowType="int16_t" associatedEvent="" checkConf="false" checkConfStatus="0" checkAuth="false" checkWeakAuthStatus="0" checkStrongAuthStatus="0" vc="0" /> <Type type="0" typeOther="" /> <Type type="0" typeOther="" /> <Type type="0" typeOther="" /> @@ -131,16 +126,16 @@ PERIOD 10ms <Type type="0" typeOther="" /> </extraparam> </SUBCOMPONENT> -<SUBCOMPONENT type="1203" id="35" > -<father id="44" num="1" /> -<cdparam x="196" y="312" /> +<SUBCOMPONENT type="1203" id="586" > +<father id="599" num="1" /> +<cdparam x="414" y="287" /> <sizeparam width="26" height="26" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> -<cdrectangleparam minX="-13" maxX="187" minY="-13" maxY="137" /> -<infoparam name="Primitive port" value="Event startEvt" /> -<TGConnectingPoint num="0" id="34" /> +<cdrectangleparam minX="-13" maxX="137" minY="-13" maxY="137" /> +<infoparam name="Primitive port" value="Event evtToT1" /> +<TGConnectingPoint num="0" id="585" /> <extraparam> -<Prop commName="startEvt" commType="1" origin="false" finite="true" blocking="true" maxSamples="8" widthSamples="4" isLossy="false" isPrex="false" isPostex="false" lossPercentage="0" maxNbOfLoss="0" dataFlowType="int16_t" associatedEvent="" checkConf="false" checkConfStatus="0" checkAuth="false" checkWeakAuthStatus="0" checkStrongAuthStatus="0" vc="0" /> +<Prop commName="evtToT1" commType="1" origin="false" finite="true" blocking="true" maxSamples="8" widthSamples="4" isLossy="false" isPrex="false" isPostex="false" lossPercentage="0" maxNbOfLoss="0" dataFlowType="int16_t" associatedEvent="" checkConf="false" checkConfStatus="0" checkAuth="false" checkWeakAuthStatus="0" checkStrongAuthStatus="0" vc="0" /> <Type type="1" typeOther="" /> <Type type="0" typeOther="" /> <Type type="0" typeOther="" /> @@ -148,33 +143,14 @@ PERIOD 10ms <Type type="0" typeOther="" /> </extraparam> </SUBCOMPONENT> - -<COMPONENT type="1202" id="57" > -<cdparam x="427" y="177" /> -<sizeparam width="150" height="150" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> -<hidden value="false" /> -<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> -<infoparam name="Primitive component" value="T1" /> -<TGConnectingPoint num="0" id="49" /> -<TGConnectingPoint num="1" id="50" /> -<TGConnectingPoint num="2" id="51" /> -<TGConnectingPoint num="3" id="52" /> -<TGConnectingPoint num="4" id="53" /> -<TGConnectingPoint num="5" id="54" /> -<TGConnectingPoint num="6" id="55" /> -<TGConnectingPoint num="7" id="56" /> -<extraparam> -<Data isAttacker="No" daemon="false" periodic="false" periodValue="" unit="" Operation="" /> -</extraparam> -</COMPONENT> -<SUBCOMPONENT type="1203" id="46" > -<father id="57" num="0" /> +<SUBCOMPONENT type="1203" id="588" > +<father id="599" num="2" /> <cdparam x="564" y="228" /> <sizeparam width="26" height="26" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> <cdrectangleparam minX="-13" maxX="137" minY="-13" maxY="137" /> <infoparam name="Primitive port" value="Channel chToT2" /> -<TGConnectingPoint num="0" id="45" /> +<TGConnectingPoint num="0" id="587" /> <extraparam> <Prop commName="chToT2" commType="0" origin="true" finite="false" blocking="true" maxSamples="8" widthSamples="4" isLossy="false" isPrex="false" isPostex="false" lossPercentage="0" maxNbOfLoss="0" dataFlowType="int16_t" associatedEvent="" checkConf="false" checkConfStatus="0" checkAuth="false" checkWeakAuthStatus="0" checkStrongAuthStatus="0" vc="0" /> <Type type="0" typeOther="" /> @@ -184,17 +160,17 @@ PERIOD 10ms <Type type="0" typeOther="" /> </extraparam> </SUBCOMPONENT> -<SUBCOMPONENT type="1203" id="48" > -<father id="57" num="1" /> -<cdparam x="414" y="223" /> +<SUBCOMPONENT type="1203" id="590" > +<father id="599" num="3" /> +<cdparam x="564" y="292" /> <sizeparam width="26" height="26" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> <cdrectangleparam minX="-13" maxX="137" minY="-13" maxY="137" /> -<infoparam name="Primitive port" value="Channel chToT1" /> -<TGConnectingPoint num="0" id="47" /> +<infoparam name="Primitive port" value="Event evtToT2" /> +<TGConnectingPoint num="0" id="589" /> <extraparam> -<Prop commName="chToT1" commType="0" origin="false" finite="false" blocking="true" maxSamples="8" widthSamples="4" isLossy="false" isPrex="false" isPostex="false" lossPercentage="0" maxNbOfLoss="0" dataFlowType="int16_t" associatedEvent="" checkConf="false" checkConfStatus="0" checkAuth="false" checkWeakAuthStatus="0" checkStrongAuthStatus="0" vc="0" /> -<Type type="0" typeOther="" /> +<Prop commName="evtToT2" commType="1" origin="true" finite="true" blocking="true" maxSamples="2" widthSamples="4" isLossy="false" isPrex="false" isPostex="false" lossPercentage="0" maxNbOfLoss="0" dataFlowType="int16_t" associatedEvent="" checkConf="false" checkConfStatus="0" checkAuth="false" checkWeakAuthStatus="0" checkStrongAuthStatus="0" vc="0" /> +<Type type="1" typeOther="" /> <Type type="0" typeOther="" /> <Type type="0" typeOther="" /> <Type type="0" typeOther="" /> @@ -202,32 +178,33 @@ PERIOD 10ms </extraparam> </SUBCOMPONENT> -<COMPONENT type="1202" id="68" > +<COMPONENT type="1202" id="612" > <cdparam x="683" y="179" /> -<sizeparam width="185" height="150" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<sizeparam width="150" height="150" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> <infoparam name="Primitive component" value="T2" /> -<TGConnectingPoint num="0" id="60" /> -<TGConnectingPoint num="1" id="61" /> -<TGConnectingPoint num="2" id="62" /> -<TGConnectingPoint num="3" id="63" /> -<TGConnectingPoint num="4" id="64" /> -<TGConnectingPoint num="5" id="65" /> -<TGConnectingPoint num="6" id="66" /> -<TGConnectingPoint num="7" id="67" /> +<TGConnectingPoint num="0" id="604" /> +<TGConnectingPoint num="1" id="605" /> +<TGConnectingPoint num="2" id="606" /> +<TGConnectingPoint num="3" id="607" /> +<TGConnectingPoint num="4" id="608" /> +<TGConnectingPoint num="5" id="609" /> +<TGConnectingPoint num="6" id="610" /> +<TGConnectingPoint num="7" id="611" /> <extraparam> <Data isAttacker="No" daemon="false" periodic="false" periodValue="" unit="" Operation="" /> +<Attribute access="2" id="size" value="" type="0" typeOther="" /> </extraparam> </COMPONENT> -<SUBCOMPONENT type="1203" id="59" > -<father id="68" num="0" /> +<SUBCOMPONENT type="1203" id="601" > +<father id="612" num="0" /> <cdparam x="670" y="225" /> <sizeparam width="26" height="26" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> -<cdrectangleparam minX="-13" maxX="172" minY="-13" maxY="137" /> +<cdrectangleparam minX="-13" maxX="137" minY="-13" maxY="137" /> <infoparam name="Primitive port" value="Channel chToT2" /> -<TGConnectingPoint num="0" id="58" /> +<TGConnectingPoint num="0" id="600" /> <extraparam> <Prop commName="chToT2" commType="0" origin="false" finite="false" blocking="true" maxSamples="8" widthSamples="4" isLossy="false" isPrex="false" isPostex="false" lossPercentage="0" maxNbOfLoss="0" dataFlowType="int16_t" associatedEvent="" checkConf="false" checkConfStatus="0" checkAuth="false" checkWeakAuthStatus="0" checkStrongAuthStatus="0" vc="0" /> <Type type="0" typeOther="" /> @@ -237,343 +214,346 @@ PERIOD 10ms <Type type="0" typeOther="" /> </extraparam> </SUBCOMPONENT> +<SUBCOMPONENT type="1203" id="603" > +<father id="612" num="1" /> +<cdparam x="670" y="289" /> +<sizeparam width="26" height="26" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="-13" maxX="137" minY="-13" maxY="137" /> +<infoparam name="Primitive port" value="Event evtToT2" /> +<TGConnectingPoint num="0" id="602" /> +<extraparam> +<Prop commName="evtToT2" commType="1" origin="false" finite="true" blocking="true" maxSamples="2" widthSamples="4" isLossy="false" isPrex="false" isPostex="false" lossPercentage="0" maxNbOfLoss="0" dataFlowType="int16_t" associatedEvent="" checkConf="false" checkConfStatus="0" checkAuth="false" checkWeakAuthStatus="0" checkStrongAuthStatus="0" vc="0" /> +<Type type="1" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +</extraparam> +</SUBCOMPONENT> </TMLComponentTaskDiagramPanel> -<TMLActivityDiagramPanel name="Start" minX="10" maxX="2500" minY="10" maxY="1500" zoom="1.0" > -<COMPONENT type="1026" id="72" > -<cdparam x="427" y="99" /> -<sizeparam width="10" height="30" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<TMLActivityDiagramPanel name="Src" minX="10" maxX="2500" minY="10" maxY="1500" zoom="1.0" > +<COMPONENT type="1008" id="615" > +<cdparam x="286" y="192" /> +<sizeparam width="92" height="20" minWidth="30" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> <enabled value="true" /> <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> -<infoparam name="delay" value="null" /> -<TGConnectingPoint num="0" id="70" /> -<TGConnectingPoint num="1" id="71" /> -</COMPONENT> -<SUBCOMPONENT type="-1" id="69" > -<father id="72" num="0" /> -<cdparam x="442" y="119" /> -<sizeparam width="36" height="15" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> -<hidden value="false" /> -<cdrectangleparam minX="-75" maxX="30" minY="10" maxY="30" /> -<infoparam name="value of the delay" value="10 ns" /> +<infoparam name="send event" value="evtToT1(size)" /> +<TGConnectingPoint num="0" id="613" /> +<TGConnectingPoint num="1" id="614" /> <extraparam> -<TimeDelay minDelay="10" maxDelay="nope" hasMaxDelay="false" isActiveDelay="false" unit="ns" /> +<Data eventName="evtToT1" nbOfParams="5" /> +<Param index="0" value="size" /> </extraparam> -</SUBCOMPONENT> +</COMPONENT> -<COMPONENT type="1001" id="74" > -<cdparam x="420" y="243" /> +<COMPONENT type="1001" id="617" > +<cdparam x="322" y="286" /> <sizeparam width="20" height="20" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> <infoparam name="stop state" value="null" /> -<TGConnectingPoint num="0" id="73" /> +<TGConnectingPoint num="0" id="616" /> </COMPONENT> -<COMPONENT type="1008" id="77" > -<cdparam x="387" y="169" /> -<sizeparam width="95" height="20" minWidth="30" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<COMPONENT type="1006" id="620" > +<cdparam x="288" y="245" /> +<sizeparam width="88" height="20" minWidth="30" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> <enabled value="true" /> <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> -<infoparam name="send event" value="startEvt(x)" /> -<TGConnectingPoint num="0" id="75" /> -<TGConnectingPoint num="1" id="76" /> +<infoparam name="write channel" value="chToT1(size)" /> +<TGConnectingPoint num="0" id="618" /> +<TGConnectingPoint num="1" id="619" /> <extraparam> -<Data eventName="startEvt" nbOfParams="5" /> -<Param index="0" value="x" /> +<Data channelName="chToT1" nbOfSamples="size" secPattern="" isAttacker="No" isEncForm="Yes" /> </extraparam> </COMPONENT> -<COMPONENT type="1000" id="79" > -<cdparam x="400" y="50" /> +<COMPONENT type="1000" id="622" > +<cdparam x="325" y="145" /> <sizeparam width="15" height="15" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> <infoparam name="start state" value="null" /> -<TGConnectingPoint num="0" id="78" /> +<TGConnectingPoint num="0" id="621" /> </COMPONENT> -<CONNECTOR type="115" id="80" > -<cdparam x="432" y="134" /> +<CONNECTOR type="115" id="623" > +<cdparam x="330" y="217" /> <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="null" /> -<P1 x="432" y="134" id="71" /> -<P2 x="434" y="164" id="75" /> +<P1 x="332" y="217" id="614" /> +<P2 x="332" y="240" id="618" /> <AutomaticDrawing data="true" /> </CONNECTOR> -<CONNECTOR type="115" id="81" > -<cdparam x="439" y="161" /> +<CONNECTOR type="115" id="624" > +<cdparam x="332" y="160" /> <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="null" /> -<P1 x="434" y="194" id="76" /> -<P2 x="430" y="238" id="73" /> +<P1 x="332" y="165" id="621" /> +<P2 x="332" y="187" id="613" /> <AutomaticDrawing data="true" /> </CONNECTOR> -<CONNECTOR type="115" id="82" > -<cdparam x="407" y="70" /> +<CONNECTOR type="115" id="625" > +<cdparam x="332" y="223" /> <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="null" /> -<P1 x="407" y="70" id="78" /> -<P2 x="432" y="94" id="70" /> +<P1 x="332" y="270" id="619" /> +<P2 x="332" y="281" id="616" /> <AutomaticDrawing data="true" /> </CONNECTOR> </TMLActivityDiagramPanel> -<TMLActivityDiagramPanel name="Src" minX="10" maxX="2500" minY="10" maxY="1500" zoom="1.0" > -<COMPONENT type="1010" id="85" > -<cdparam x="403" y="169" /> -<sizeparam width="99" height="20" minWidth="30" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> -<hidden value="false" /> -<enabled value="true" /> -<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> -<infoparam name="wait event" value="startEvt(x) " /> -<TGConnectingPoint num="0" id="83" /> -<TGConnectingPoint num="1" id="84" /> -<extraparam> -<Data eventName="startEvt" nbOfParams="5" /> -<Param index="0" value="x" /> -</extraparam> -</COMPONENT> - -<COMPONENT type="1001" id="87" > -<cdparam x="450" y="297" /> +<TMLActivityDiagramPanel name="T1" minX="10" maxX="2500" minY="10" maxY="1500" zoom="1.0" > +<COMPONENT type="1001" id="627" > +<cdparam x="412" y="368" /> <sizeparam width="20" height="20" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> <infoparam name="stop state" value="null" /> -<TGConnectingPoint num="0" id="86" /> +<TGConnectingPoint num="0" id="626" /> </COMPONENT> -<COMPONENT type="1006" id="90" > -<cdparam x="405" y="222" /> -<sizeparam width="101" height="20" minWidth="30" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<COMPONENT type="1006" id="630" > +<cdparam x="378" y="323" /> +<sizeparam width="88" height="20" minWidth="30" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> <enabled value="true" /> <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> -<infoparam name="write channel" value="chToT1(5)" /> -<TGConnectingPoint num="0" id="88" /> -<TGConnectingPoint num="1" id="89" /> +<infoparam name="write channel" value="chToT2(size)" /> +<TGConnectingPoint num="0" id="628" /> +<TGConnectingPoint num="1" id="629" /> <extraparam> -<Data channelName="chToT1" nbOfSamples="5" secPattern="" isAttacker="No" isEncForm="Yes" /> +<Data channelName="chToT2" nbOfSamples="size" secPattern="" isAttacker="No" isEncForm="Yes" /> </extraparam> </COMPONENT> -<COMPONENT type="1000" id="92" > -<cdparam x="442" y="117" /> -<sizeparam width="15" height="15" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> -<hidden value="false" /> -<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> -<infoparam name="start state" value="null" /> -<TGConnectingPoint num="0" id="91" /> -</COMPONENT> - -<CONNECTOR type="115" id="93" > -<cdparam x="452" y="194" /> -<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> -<infoparam name="connector" value="null" /> -<P1 x="452" y="194" id="84" /> -<P2 x="455" y="217" id="88" /> -<AutomaticDrawing data="true" /> -</CONNECTOR> -<CONNECTOR type="115" id="94" > -<cdparam x="460" y="171" /> -<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> -<infoparam name="connector" value="null" /> -<P1 x="449" y="137" id="91" /> -<P2 x="452" y="164" id="83" /> -<AutomaticDrawing data="true" /> -</CONNECTOR> -<CONNECTOR type="115" id="95" > -<cdparam x="460" y="234" /> -<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> -<infoparam name="connector" value="null" /> -<P1 x="455" y="247" id="89" /> -<P2 x="460" y="292" id="86" /> -<AutomaticDrawing data="true" /> -</CONNECTOR> - -</TMLActivityDiagramPanel> - -<TMLActivityDiagramPanel name="T1" minX="10" maxX="2500" minY="10" maxY="1500" zoom="1.0" > -<COMPONENT type="1006" id="98" > -<cdparam x="372" y="303" /> -<sizeparam width="101" height="20" minWidth="30" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<COMPONENT type="1008" id="633" > +<cdparam x="376" y="268" /> +<sizeparam width="92" height="20" minWidth="30" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> <enabled value="true" /> <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> -<infoparam name="write channel" value="chToT2(5)" /> -<TGConnectingPoint num="0" id="96" /> -<TGConnectingPoint num="1" id="97" /> +<infoparam name="send event" value="evtToT2(size)" /> +<TGConnectingPoint num="0" id="631" /> +<TGConnectingPoint num="1" id="632" /> <extraparam> -<Data channelName="chToT2" nbOfSamples="5" secPattern="" isAttacker="No" isEncForm="Yes" /> +<Data eventName="evtToT2" nbOfParams="5" /> +<Param index="0" value="size" /> </extraparam> </COMPONENT> -<COMPONENT type="1001" id="100" > -<cdparam x="412" y="368" /> -<sizeparam width="20" height="20" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> -<hidden value="false" /> -<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> -<infoparam name="stop state" value="null" /> -<TGConnectingPoint num="0" id="99" /> -</COMPONENT> - -<COMPONENT type="1013" id="104" > +<COMPONENT type="1013" id="637" > <cdparam x="417" y="216" /> <sizeparam width="10" height="30" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> <enabled value="true" /> <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> <infoparam name="execI" value="null" /> -<TGConnectingPoint num="0" id="102" /> -<TGConnectingPoint num="1" id="103" /> +<TGConnectingPoint num="0" id="635" /> +<TGConnectingPoint num="1" id="636" /> </COMPONENT> -<SUBCOMPONENT type="-1" id="101" > -<father id="104" num="0" /> +<SUBCOMPONENT type="-1" id="634" > +<father id="637" num="0" /> <cdparam x="432" y="236" /> -<sizeparam width="16" height="15" minWidth="10" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<sizeparam width="23" height="15" minWidth="10" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> <cdrectangleparam minX="-75" maxX="30" minY="10" maxY="30" /> -<infoparam name="value of the delay" value="10" /> +<infoparam name="value of the delay" value="size" /> </SUBCOMPONENT> -<COMPONENT type="1009" id="107" > -<cdparam x="370" y="162" /> -<sizeparam width="105" height="20" minWidth="30" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<COMPONENT type="1009" id="640" > +<cdparam x="376" y="162" /> +<sizeparam width="92" height="20" minWidth="30" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<enabled value="true" /> +<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> +<infoparam name="read channel" value="chToT1(size) " /> +<TGConnectingPoint num="0" id="638" /> +<TGConnectingPoint num="1" id="639" /> +<extraparam> +<Data channelName="chToT1" nbOfSamples="size" secPattern="" isAttacker="No" isEncForm="Yes" /> +</extraparam> +</COMPONENT> + +<COMPONENT type="1010" id="643" > +<cdparam x="374" y="116" /> +<sizeparam width="96" height="20" minWidth="30" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> <enabled value="true" /> <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> -<infoparam name="read channel" value="chToT1(5) " /> -<TGConnectingPoint num="0" id="105" /> -<TGConnectingPoint num="1" id="106" /> +<infoparam name="wait event" value="evtToT1(size) " /> +<TGConnectingPoint num="0" id="641" /> +<TGConnectingPoint num="1" id="642" /> <extraparam> -<Data channelName="chToT1" nbOfSamples="5" secPattern="" isAttacker="No" isEncForm="Yes" /> +<Data eventName="evtToT1" nbOfParams="5" /> +<Param index="0" value="size" /> </extraparam> </COMPONENT> -<COMPONENT type="1000" id="109" > +<COMPONENT type="1000" id="645" > <cdparam x="416" y="76" /> <sizeparam width="15" height="15" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> <infoparam name="start state" value="null" /> -<TGConnectingPoint num="0" id="108" /> +<TGConnectingPoint num="0" id="644" /> </COMPONENT> -<CONNECTOR type="115" id="110" > -<cdparam x="432" y="325" /> +<CONNECTOR type="115" id="646" > +<cdparam x="414" y="91" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="423" y="96" id="644" /> +<P2 x="422" y="111" id="641" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="647" > +<cdparam x="422" y="141" /> <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="null" /> -<P1 x="422" y="328" id="97" /> -<P2 x="422" y="363" id="99" /> +<P1 x="422" y="141" id="642" /> +<P2 x="422" y="157" id="638" /> <AutomaticDrawing data="true" /> </CONNECTOR> -<CONNECTOR type="115" id="111" > +<CONNECTOR type="115" id="648" > +<cdparam x="432" y="199" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="422" y="187" id="639" /> +<P2 x="422" y="211" id="635" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="649" > <cdparam x="422" y="251" /> <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="null" /> -<P1 x="422" y="251" id="103" /> -<P2 x="422" y="298" id="96" /> +<P1 x="422" y="251" id="636" /> +<P2 x="422" y="263" id="631" /> <AutomaticDrawing data="true" /> </CONNECTOR> -<CONNECTOR type="115" id="112" > -<cdparam x="423" y="91" /> +<CONNECTOR type="115" id="650" > +<cdparam x="426" y="293" /> <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="null" /> -<P1 x="423" y="96" id="108" /> -<P2 x="422" y="157" id="105" /> +<P1 x="422" y="293" id="632" /> +<P2 x="422" y="318" id="628" /> <AutomaticDrawing data="true" /> </CONNECTOR> -<CONNECTOR type="115" id="113" > -<cdparam x="432" y="199" /> +<CONNECTOR type="115" id="651" > +<cdparam x="435" y="348" /> <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="null" /> -<P1 x="422" y="187" id="106" /> -<P2 x="422" y="211" id="102" /> +<P1 x="422" y="348" id="629" /> +<P2 x="422" y="363" id="626" /> <AutomaticDrawing data="true" /> </CONNECTOR> </TMLActivityDiagramPanel> <TMLActivityDiagramPanel name="T2" minX="10" maxX="2500" minY="10" maxY="1500" zoom="1.0" > -<COMPONENT type="1013" id="117" > -<cdparam x="348" y="280" /> +<COMPONENT type="1001" id="653" > +<cdparam x="412" y="443" /> +<sizeparam width="20" height="20" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> +<infoparam name="stop state" value="null" /> +<TGConnectingPoint num="0" id="652" /> +</COMPONENT> + +<COMPONENT type="1013" id="657" > +<cdparam x="417" y="216" /> <sizeparam width="10" height="30" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> <enabled value="true" /> <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> <infoparam name="execI" value="null" /> -<TGConnectingPoint num="0" id="115" /> -<TGConnectingPoint num="1" id="116" /> +<TGConnectingPoint num="0" id="655" /> +<TGConnectingPoint num="1" id="656" /> </COMPONENT> -<SUBCOMPONENT type="-1" id="114" > -<father id="117" num="0" /> -<cdparam x="363" y="300" /> -<sizeparam width="16" height="15" minWidth="10" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<SUBCOMPONENT type="-1" id="654" > +<father id="657" num="0" /> +<cdparam x="432" y="236" /> +<sizeparam width="23" height="15" minWidth="10" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> <cdrectangleparam minX="-75" maxX="30" minY="10" maxY="30" /> -<infoparam name="value of the delay" value="20" /> +<infoparam name="value of the delay" value="size" /> </SUBCOMPONENT> -<COMPONENT type="1000" id="119" > -<cdparam x="396" y="55" /> -<sizeparam width="15" height="15" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<COMPONENT type="1009" id="660" > +<cdparam x="376" y="162" /> +<sizeparam width="92" height="20" minWidth="30" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> +<enabled value="true" /> <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> -<infoparam name="start state" value="null" /> -<TGConnectingPoint num="0" id="118" /> +<infoparam name="read channel" value="chToT2(size) " /> +<TGConnectingPoint num="0" id="658" /> +<TGConnectingPoint num="1" id="659" /> +<extraparam> +<Data channelName="chToT2" nbOfSamples="size" secPattern="" isAttacker="No" isEncForm="Yes" /> +</extraparam> </COMPONENT> -<COMPONENT type="1001" id="121" > -<cdparam x="343" y="507" /> -<sizeparam width="20" height="20" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<COMPONENT type="1010" id="663" > +<cdparam x="374" y="116" /> +<sizeparam width="96" height="20" minWidth="30" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> +<enabled value="true" /> <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> -<infoparam name="stop state" value="null" /> -<TGConnectingPoint num="0" id="120" /> +<infoparam name="wait event" value="evtToT2(size) " /> +<TGConnectingPoint num="0" id="661" /> +<TGConnectingPoint num="1" id="662" /> +<extraparam> +<Data eventName="evtToT2" nbOfParams="5" /> +<Param index="0" value="size" /> +</extraparam> </COMPONENT> -<COMPONENT type="1009" id="124" > -<cdparam x="301" y="226" /> -<sizeparam width="105" height="20" minWidth="30" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<COMPONENT type="1000" id="665" > +<cdparam x="416" y="76" /> +<sizeparam width="15" height="15" minWidth="1" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> -<enabled value="true" /> <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> -<infoparam name="read channel" value="chToT2(5) " /> -<TGConnectingPoint num="0" id="122" /> -<TGConnectingPoint num="1" id="123" /> -<extraparam> -<Data channelName="chToT2" nbOfSamples="5" secPattern="" isAttacker="No" isEncForm="Yes" /> -</extraparam> +<infoparam name="start state" value="null" /> +<TGConnectingPoint num="0" id="664" /> </COMPONENT> -<CONNECTOR type="115" id="125" > -<cdparam x="403" y="75" /> +<CONNECTOR type="115" id="666" > +<cdparam x="422" y="251" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="422" y="251" id="656" /> +<P2 x="422" y="438" id="652" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="667" > +<cdparam x="414" y="91" /> <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="null" /> -<P1 x="403" y="75" id="118" /> -<P2 x="353" y="221" id="122" /> +<P1 x="423" y="96" id="664" /> +<P2 x="422" y="111" id="661" /> <AutomaticDrawing data="true" /> </CONNECTOR> -<CONNECTOR type="115" id="126" > -<cdparam x="353" y="315" /> +<CONNECTOR type="115" id="668" > +<cdparam x="422" y="141" /> <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="null" /> -<P1 x="353" y="315" id="116" /> -<P2 x="353" y="502" id="120" /> +<P1 x="422" y="141" id="662" /> +<P2 x="422" y="157" id="658" /> <AutomaticDrawing data="true" /> </CONNECTOR> -<CONNECTOR type="115" id="127" > -<cdparam x="363" y="263" /> +<CONNECTOR type="115" id="669" > +<cdparam x="432" y="199" /> <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="null" /> -<P1 x="353" y="251" id="123" /> -<P2 x="353" y="275" id="115" /> +<P1 x="422" y="187" id="659" /> +<P2 x="422" y="211" id="655" /> <AutomaticDrawing data="true" /> </CONNECTOR> @@ -586,256 +566,237 @@ PERIOD 10ms <Modeling type="TML Architecture" nameTab="ArchitectureSimple" > <TMLArchiDiagramPanel name="DIPLODOCUS architecture and mapping Diagram" minX="10" maxX="2500" minY="10" maxY="1500" attributes="0" masterClockFrequency="200" zoom="1.0" > -<COMPONENT type="1105" id="152" > +<COMPONENT type="1105" id="694" > <cdparam x="958" y="266" /> <sizeparam width="200" height="200" minWidth="100" minHeight="35" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> <infoparam name="Memory0" value="name" /> -<TGConnectingPoint num="0" id="128" /> -<TGConnectingPoint num="1" id="129" /> -<TGConnectingPoint num="2" id="130" /> -<TGConnectingPoint num="3" id="131" /> -<TGConnectingPoint num="4" id="132" /> -<TGConnectingPoint num="5" id="133" /> -<TGConnectingPoint num="6" id="134" /> -<TGConnectingPoint num="7" id="135" /> -<TGConnectingPoint num="8" id="136" /> -<TGConnectingPoint num="9" id="137" /> -<TGConnectingPoint num="10" id="138" /> -<TGConnectingPoint num="11" id="139" /> -<TGConnectingPoint num="12" id="140" /> -<TGConnectingPoint num="13" id="141" /> -<TGConnectingPoint num="14" id="142" /> -<TGConnectingPoint num="15" id="143" /> -<TGConnectingPoint num="16" id="144" /> -<TGConnectingPoint num="17" id="145" /> -<TGConnectingPoint num="18" id="146" /> -<TGConnectingPoint num="19" id="147" /> -<TGConnectingPoint num="20" id="148" /> -<TGConnectingPoint num="21" id="149" /> -<TGConnectingPoint num="22" id="150" /> -<TGConnectingPoint num="23" id="151" /> +<TGConnectingPoint num="0" id="670" /> +<TGConnectingPoint num="1" id="671" /> +<TGConnectingPoint num="2" id="672" /> +<TGConnectingPoint num="3" id="673" /> +<TGConnectingPoint num="4" id="674" /> +<TGConnectingPoint num="5" id="675" /> +<TGConnectingPoint num="6" id="676" /> +<TGConnectingPoint num="7" id="677" /> +<TGConnectingPoint num="8" id="678" /> +<TGConnectingPoint num="9" id="679" /> +<TGConnectingPoint num="10" id="680" /> +<TGConnectingPoint num="11" id="681" /> +<TGConnectingPoint num="12" id="682" /> +<TGConnectingPoint num="13" id="683" /> +<TGConnectingPoint num="14" id="684" /> +<TGConnectingPoint num="15" id="685" /> +<TGConnectingPoint num="16" id="686" /> +<TGConnectingPoint num="17" id="687" /> +<TGConnectingPoint num="18" id="688" /> +<TGConnectingPoint num="19" id="689" /> +<TGConnectingPoint num="20" id="690" /> +<TGConnectingPoint num="21" id="691" /> +<TGConnectingPoint num="22" id="692" /> +<TGConnectingPoint num="23" id="693" /> <extraparam> <info stereotype="MEMORY" nodeName="Memory0" /> <attributes byteDataSize="4" memorySize="1024" clockRatio="1" bufferType="0" /> </extraparam> </COMPONENT> -<COMPONENT type="1102" id="177" > +<COMPONENT type="1102" id="719" > <cdparam x="503" y="320" /> <sizeparam width="250" height="50" minWidth="100" minHeight="50" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> <infoparam name="Bus0" value="name" /> -<TGConnectingPoint num="0" id="153" /> -<TGConnectingPoint num="1" id="154" /> -<TGConnectingPoint num="2" id="155" /> -<TGConnectingPoint num="3" id="156" /> -<TGConnectingPoint num="4" id="157" /> -<TGConnectingPoint num="5" id="158" /> -<TGConnectingPoint num="6" id="159" /> -<TGConnectingPoint num="7" id="160" /> -<TGConnectingPoint num="8" id="161" /> -<TGConnectingPoint num="9" id="162" /> -<TGConnectingPoint num="10" id="163" /> -<TGConnectingPoint num="11" id="164" /> -<TGConnectingPoint num="12" id="165" /> -<TGConnectingPoint num="13" id="166" /> -<TGConnectingPoint num="14" id="167" /> -<TGConnectingPoint num="15" id="168" /> -<TGConnectingPoint num="16" id="169" /> -<TGConnectingPoint num="17" id="170" /> -<TGConnectingPoint num="18" id="171" /> -<TGConnectingPoint num="19" id="172" /> -<TGConnectingPoint num="20" id="173" /> -<TGConnectingPoint num="21" id="174" /> -<TGConnectingPoint num="22" id="175" /> -<TGConnectingPoint num="23" id="176" /> +<TGConnectingPoint num="0" id="695" /> +<TGConnectingPoint num="1" id="696" /> +<TGConnectingPoint num="2" id="697" /> +<TGConnectingPoint num="3" id="698" /> +<TGConnectingPoint num="4" id="699" /> +<TGConnectingPoint num="5" id="700" /> +<TGConnectingPoint num="6" id="701" /> +<TGConnectingPoint num="7" id="702" /> +<TGConnectingPoint num="8" id="703" /> +<TGConnectingPoint num="9" id="704" /> +<TGConnectingPoint num="10" id="705" /> +<TGConnectingPoint num="11" id="706" /> +<TGConnectingPoint num="12" id="707" /> +<TGConnectingPoint num="13" id="708" /> +<TGConnectingPoint num="14" id="709" /> +<TGConnectingPoint num="15" id="710" /> +<TGConnectingPoint num="16" id="711" /> +<TGConnectingPoint num="17" id="712" /> +<TGConnectingPoint num="18" id="713" /> +<TGConnectingPoint num="19" id="714" /> +<TGConnectingPoint num="20" id="715" /> +<TGConnectingPoint num="21" id="716" /> +<TGConnectingPoint num="22" id="717" /> +<TGConnectingPoint num="23" id="718" /> <extraparam> <info stereotype="BUS-RR" nodeName="Bus0" /> <attributes byteDataSize="4" arbitrationPolicy="0" sliceTime="10000" pipelineSize="1" clockRatio="1" privacy="0" referenceAttack="null" /> </extraparam> </COMPONENT> -<COMPONENT type="1100" id="229" > +<COMPONENT type="1100" id="762" > <cdparam x="498" y="47" /> <sizeparam width="250" height="200" minWidth="150" minHeight="100" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> -<infoparam name="SRC2" value="name" /> -<TGConnectingPoint num="0" id="205" /> -<TGConnectingPoint num="1" id="206" /> -<TGConnectingPoint num="2" id="207" /> -<TGConnectingPoint num="3" id="208" /> -<TGConnectingPoint num="4" id="209" /> -<TGConnectingPoint num="5" id="210" /> -<TGConnectingPoint num="6" id="211" /> -<TGConnectingPoint num="7" id="212" /> -<TGConnectingPoint num="8" id="213" /> -<TGConnectingPoint num="9" id="214" /> -<TGConnectingPoint num="10" id="215" /> -<TGConnectingPoint num="11" id="216" /> -<TGConnectingPoint num="12" id="217" /> -<TGConnectingPoint num="13" id="218" /> -<TGConnectingPoint num="14" id="219" /> -<TGConnectingPoint num="15" id="220" /> -<TGConnectingPoint num="16" id="221" /> -<TGConnectingPoint num="17" id="222" /> -<TGConnectingPoint num="18" id="223" /> -<TGConnectingPoint num="19" id="224" /> -<TGConnectingPoint num="20" id="225" /> -<TGConnectingPoint num="21" id="226" /> -<TGConnectingPoint num="22" id="227" /> -<TGConnectingPoint num="23" id="228" /> +<infoparam name="FPGA1" value="name" /> +<TGConnectingPoint num="0" id="738" /> +<TGConnectingPoint num="1" id="739" /> +<TGConnectingPoint num="2" id="740" /> +<TGConnectingPoint num="3" id="741" /> +<TGConnectingPoint num="4" id="742" /> +<TGConnectingPoint num="5" id="743" /> +<TGConnectingPoint num="6" id="744" /> +<TGConnectingPoint num="7" id="745" /> +<TGConnectingPoint num="8" id="746" /> +<TGConnectingPoint num="9" id="747" /> +<TGConnectingPoint num="10" id="748" /> +<TGConnectingPoint num="11" id="749" /> +<TGConnectingPoint num="12" id="750" /> +<TGConnectingPoint num="13" id="751" /> +<TGConnectingPoint num="14" id="752" /> +<TGConnectingPoint num="15" id="753" /> +<TGConnectingPoint num="16" id="754" /> +<TGConnectingPoint num="17" id="755" /> +<TGConnectingPoint num="18" id="756" /> +<TGConnectingPoint num="19" id="757" /> +<TGConnectingPoint num="20" id="758" /> +<TGConnectingPoint num="21" id="759" /> +<TGConnectingPoint num="22" id="760" /> +<TGConnectingPoint num="23" id="761" /> <extraparam> -<info stereotype="CPURR" nodeName="SRC2" /> -<attributes nbOfCores="2" byteDataSize="4" schedulingPolicy="0" sliceTime="10000" goIdleTime="10" maxConsecutiveIdleCycles="10" pipelineSize="5" taskSwitchingTime="20" branchingPredictionPenalty="2" cacheMiss="5" execiTime="1" execcTime="1" clockRatio="1" operation="" MECType="0" encryption="0"/> +<info stereotype="CPURR" nodeName="FPGA1" /> +<attributes nbOfCores="1" byteDataSize="4" schedulingPolicy="0" sliceTime="10000" goIdleTime="10" maxConsecutiveIdleCycles="10" pipelineSize="5" taskSwitchingTime="20" branchingPredictionPenalty="2" cacheMiss="5" execiTime="1" execcTime="1" clockRatio="1" operation="" MECType="0" encryption="0"/> </extraparam> </COMPONENT> -<SUBCOMPONENT type="1101" id="186" > -<father id="229" num="0" /> -<cdparam x="503" y="93" /> -<sizeparam width="132" height="40" minWidth="100" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> -<hidden value="false" /> -<cdrectangleparam minX="0" maxX="118" minY="0" maxY="160" /> -<infoparam name="TGComponent" value="Application::Src" /> -<TGConnectingPoint num="0" id="178" /> -<TGConnectingPoint num="1" id="179" /> -<TGConnectingPoint num="2" id="180" /> -<TGConnectingPoint num="3" id="181" /> -<TGConnectingPoint num="4" id="182" /> -<TGConnectingPoint num="5" id="183" /> -<TGConnectingPoint num="6" id="184" /> -<TGConnectingPoint num="7" id="185" /> -<extraparam> -<info value="Application::Src" taskName="Src" referenceTaskName="Application" priority="0" operationMEC="Src" fatherComponentMECType="0" /> -</extraparam> -</SUBCOMPONENT> -<SUBCOMPONENT type="1101" id="195" > -<father id="229" num="1" /> -<cdparam x="518" y="154" /> -<sizeparam width="127" height="40" minWidth="100" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> -<hidden value="false" /> -<cdrectangleparam minX="0" maxX="123" minY="0" maxY="160" /> -<infoparam name="TGComponent" value="Application::T1" /> -<TGConnectingPoint num="0" id="187" /> -<TGConnectingPoint num="1" id="188" /> -<TGConnectingPoint num="2" id="189" /> -<TGConnectingPoint num="3" id="190" /> -<TGConnectingPoint num="4" id="191" /> -<TGConnectingPoint num="5" id="192" /> -<TGConnectingPoint num="6" id="193" /> -<TGConnectingPoint num="7" id="194" /> +<SUBCOMPONENT type="1101" id="728" > +<father id="762" num="0" /> +<cdparam x="539" y="82" /> +<sizeparam width="168" height="40" minWidth="100" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="0" maxX="82" minY="0" maxY="160" /> +<infoparam name="TGComponent" value="ApplicationSimple::T1" /> +<TGConnectingPoint num="0" id="720" /> +<TGConnectingPoint num="1" id="721" /> +<TGConnectingPoint num="2" id="722" /> +<TGConnectingPoint num="3" id="723" /> +<TGConnectingPoint num="4" id="724" /> +<TGConnectingPoint num="5" id="725" /> +<TGConnectingPoint num="6" id="726" /> +<TGConnectingPoint num="7" id="727" /> <extraparam> -<info value="Application::T1" taskName="T1" referenceTaskName="Application" priority="0" operationMEC="T1" fatherComponentMECType="0" /> +<info value="ApplicationSimple::T1" taskName="T1" referenceTaskName="ApplicationSimple" priority="0" operationMEC="T1" fatherComponentMECType="0" /> </extraparam> </SUBCOMPONENT> -<SUBCOMPONENT type="1101" id="204" > -<father id="229" num="2" /> -<cdparam x="518" y="207" /> -<sizeparam width="127" height="40" minWidth="100" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> -<hidden value="false" /> -<cdrectangleparam minX="0" maxX="123" minY="0" maxY="160" /> -<infoparam name="TGComponent" value="Application::T2" /> -<TGConnectingPoint num="0" id="196" /> -<TGConnectingPoint num="1" id="197" /> -<TGConnectingPoint num="2" id="198" /> -<TGConnectingPoint num="3" id="199" /> -<TGConnectingPoint num="4" id="200" /> -<TGConnectingPoint num="5" id="201" /> -<TGConnectingPoint num="6" id="202" /> -<TGConnectingPoint num="7" id="203" /> +<SUBCOMPONENT type="1101" id="737" > +<father id="762" num="1" /> +<cdparam x="550" y="132" /> +<sizeparam width="168" height="40" minWidth="100" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="0" maxX="82" minY="0" maxY="160" /> +<infoparam name="TGComponent" value="ApplicationSimple::T2" /> +<TGConnectingPoint num="0" id="729" /> +<TGConnectingPoint num="1" id="730" /> +<TGConnectingPoint num="2" id="731" /> +<TGConnectingPoint num="3" id="732" /> +<TGConnectingPoint num="4" id="733" /> +<TGConnectingPoint num="5" id="734" /> +<TGConnectingPoint num="6" id="735" /> +<TGConnectingPoint num="7" id="736" /> <extraparam> -<info value="Application::T2" taskName="T2" referenceTaskName="Application" priority="0" operationMEC="T2" fatherComponentMECType="0" /> +<info value="ApplicationSimple::T2" taskName="T2" referenceTaskName="ApplicationSimple" priority="0" operationMEC="T2" fatherComponentMECType="0" /> </extraparam> </SUBCOMPONENT> -<COMPONENT type="1100" id="263" > +<COMPONENT type="1100" id="796" > <cdparam x="77" y="230" /> <sizeparam width="250" height="200" minWidth="150" minHeight="100" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" /> -<infoparam name="SRC1" value="name" /> -<TGConnectingPoint num="0" id="239" /> -<TGConnectingPoint num="1" id="240" /> -<TGConnectingPoint num="2" id="241" /> -<TGConnectingPoint num="3" id="242" /> -<TGConnectingPoint num="4" id="243" /> -<TGConnectingPoint num="5" id="244" /> -<TGConnectingPoint num="6" id="245" /> -<TGConnectingPoint num="7" id="246" /> -<TGConnectingPoint num="8" id="247" /> -<TGConnectingPoint num="9" id="248" /> -<TGConnectingPoint num="10" id="249" /> -<TGConnectingPoint num="11" id="250" /> -<TGConnectingPoint num="12" id="251" /> -<TGConnectingPoint num="13" id="252" /> -<TGConnectingPoint num="14" id="253" /> -<TGConnectingPoint num="15" id="254" /> -<TGConnectingPoint num="16" id="255" /> -<TGConnectingPoint num="17" id="256" /> -<TGConnectingPoint num="18" id="257" /> -<TGConnectingPoint num="19" id="258" /> -<TGConnectingPoint num="20" id="259" /> -<TGConnectingPoint num="21" id="260" /> -<TGConnectingPoint num="22" id="261" /> -<TGConnectingPoint num="23" id="262" /> +<infoparam name="Src" value="name" /> +<TGConnectingPoint num="0" id="772" /> +<TGConnectingPoint num="1" id="773" /> +<TGConnectingPoint num="2" id="774" /> +<TGConnectingPoint num="3" id="775" /> +<TGConnectingPoint num="4" id="776" /> +<TGConnectingPoint num="5" id="777" /> +<TGConnectingPoint num="6" id="778" /> +<TGConnectingPoint num="7" id="779" /> +<TGConnectingPoint num="8" id="780" /> +<TGConnectingPoint num="9" id="781" /> +<TGConnectingPoint num="10" id="782" /> +<TGConnectingPoint num="11" id="783" /> +<TGConnectingPoint num="12" id="784" /> +<TGConnectingPoint num="13" id="785" /> +<TGConnectingPoint num="14" id="786" /> +<TGConnectingPoint num="15" id="787" /> +<TGConnectingPoint num="16" id="788" /> +<TGConnectingPoint num="17" id="789" /> +<TGConnectingPoint num="18" id="790" /> +<TGConnectingPoint num="19" id="791" /> +<TGConnectingPoint num="20" id="792" /> +<TGConnectingPoint num="21" id="793" /> +<TGConnectingPoint num="22" id="794" /> +<TGConnectingPoint num="23" id="795" /> <extraparam> -<info stereotype="CPURR" nodeName="SRC1" /> +<info stereotype="CPURR" nodeName="Src" /> <attributes nbOfCores="1" byteDataSize="4" schedulingPolicy="0" sliceTime="10000" goIdleTime="10" maxConsecutiveIdleCycles="10" pipelineSize="5" taskSwitchingTime="20" branchingPredictionPenalty="2" cacheMiss="5" execiTime="1" execcTime="1" clockRatio="1" operation="" MECType="0" encryption="0"/> </extraparam> </COMPONENT> -<SUBCOMPONENT type="1101" id="238" > -<father id="263" num="0" /> -<cdparam x="81" y="274" /> -<sizeparam width="143" height="40" minWidth="100" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> -<hidden value="false" /> -<cdrectangleparam minX="0" maxX="107" minY="0" maxY="160" /> -<infoparam name="TGComponent" value="Application::Start" /> -<TGConnectingPoint num="0" id="230" /> -<TGConnectingPoint num="1" id="231" /> -<TGConnectingPoint num="2" id="232" /> -<TGConnectingPoint num="3" id="233" /> -<TGConnectingPoint num="4" id="234" /> -<TGConnectingPoint num="5" id="235" /> -<TGConnectingPoint num="6" id="236" /> -<TGConnectingPoint num="7" id="237" /> +<SUBCOMPONENT type="1101" id="771" > +<father id="796" num="0" /> +<cdparam x="139" y="297" /> +<sizeparam width="173" height="40" minWidth="100" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="0" maxX="77" minY="0" maxY="160" /> +<infoparam name="TGComponent" value="ApplicationSimple::Src" /> +<TGConnectingPoint num="0" id="763" /> +<TGConnectingPoint num="1" id="764" /> +<TGConnectingPoint num="2" id="765" /> +<TGConnectingPoint num="3" id="766" /> +<TGConnectingPoint num="4" id="767" /> +<TGConnectingPoint num="5" id="768" /> +<TGConnectingPoint num="6" id="769" /> +<TGConnectingPoint num="7" id="770" /> <extraparam> -<info value="Application::Start" taskName="Start" referenceTaskName="Application" priority="0" operationMEC="Start" fatherComponentMECType="0" /> +<info value="ApplicationSimple::Src" taskName="Src" referenceTaskName="ApplicationSimple" priority="0" operationMEC="Src" fatherComponentMECType="0" /> </extraparam> </SUBCOMPONENT> -<CONNECTOR type="125" id="264" > +<CONNECTOR type="125" id="797" > <cdparam x="1017" y="421" /> <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="{info}" /> -<P1 x="958" y="366" id="131" /> -<P2 x="753" y="345" id="157" /> +<P1 x="958" y="366" id="673" /> +<P2 x="753" y="345" id="699" /> <AutomaticDrawing data="true" /> <extraparam> <info priority="0" /> <spy value="false" /> </extraparam> </CONNECTOR> -<CONNECTOR type="125" id="265" > +<CONNECTOR type="125" id="798" > <cdparam x="710" y="256" /> <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="{info}" /> -<P1 x="623" y="247" id="211" /> -<P2 x="628" y="320" id="154" /> +<P1 x="623" y="247" id="744" /> +<P2 x="628" y="320" id="696" /> <AutomaticDrawing data="true" /> <extraparam> <info priority="0" /> <spy value="false" /> </extraparam> </CONNECTOR> -<CONNECTOR type="125" id="266" > +<CONNECTOR type="125" id="799" > <cdparam x="327" y="330" /> <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="{info}" /> -<P1 x="327" y="330" id="243" /> -<P2 x="503" y="332" id="163" /> +<P1 x="327" y="330" id="776" /> +<P2 x="503" y="332" id="705" /> <AutomaticDrawing data="true" /> <extraparam> <info priority="0" />