diff --git a/simulators/c++2/src_simulator/app/TMLTask.cpp b/simulators/c++2/src_simulator/app/TMLTask.cpp index e5c54a031b1a6359fb80405b095350df4ce4282a..8f841f8e33da822cbe94c47319e5f2d6abcd1423 100755 --- a/simulators/c++2/src_simulator/app/TMLTask.cpp +++ b/simulators/c++2/src_simulator/app/TMLTask.cpp @@ -543,22 +543,57 @@ void TMLTask::schedule2HTML(std::ofstream& myfile) const { 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); for( TransactionList::const_iterator i = _transactList.begin(); i != _transactList.end(); ++i ) { //if( (*i)->getTransactCoreNumber() == this->_cycleTime ){ TMLTransaction* aCurrTrans = *i; unsigned int aBlanks = aCurrTrans->getStartTime() - aCurrTime; - - if ( aBlanks >= 0 && (!(aCurrTrans->getCommand()->getActiveDelay()) && aCurrTrans->getCommand()->isDelayTransaction()) ) - writeHTMLColumn( myfile, aBlanks+1, "not", "idle time" ); - else if ( aBlanks > 0 ) - writeHTMLColumn( myfile, aBlanks, "not", "idle time" ); + bool isBlankTooBig = false; + std::ostringstream tempString; + int tempBlanks; + if(aBlanks >= 250) { + int newBlanks = 20; + tempBlanks = aBlanks; + tempReduce += aBlanks - newBlanks; + aBlanks = newBlanks; + isBlankTooBig = 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; + listScale.push_back(aLength); + listScaleTime.push_back(listScaleTime.back()+aLength); title << "idle:" << aCurrTrans->getIdlePenalty() << " switching penalty:" << aCurrTrans->getTaskSwitchingPenalty(); writeHTMLColumn( myfile, aLength, "not", title.str() ); } @@ -573,6 +608,13 @@ void TMLTask::schedule2HTML(std::ofstream& myfile) const { std::string aCurrContent=aCurrTransName.substr(indexTrans+1,2); if(!(!(aCurrTrans->getCommand()->getActiveDelay()) && aCurrTrans->getCommand()->isDelayTransaction())){ 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(); @@ -582,16 +624,23 @@ void TMLTask::schedule2HTML(std::ofstream& myfile) const { myfile << "</tr>" << std::endl << "<tr>"; - for ( unsigned int aLength = 0; aLength < aCurrTime; aLength++ ) { + for ( unsigned int aLength = 0; aLength < aCurrTime - tempReduce; aLength++ ) { myfile << "<th></th>"; } myfile << "</tr>" << std::endl << "<tr>"; - for ( unsigned int aLength = 0; aLength <= aCurrTime; aLength += 5 ) { + for ( unsigned int aLength = 0; aLength < listScale.size(); aLength += 1 ) { std::ostringstream spanVal; - spanVal << aLength; - writeHTMLColumn( myfile, 5, "sc", "", spanVal.str(), false ); + if(aLength < listScaleTime.size()) + spanVal << listScaleTime[aLength]; + else + spanVal << ""; + if(aLength+1 >= listScale.size()){ + writeHTMLColumn( myfile, 5, "sc", "", spanVal.str(), false ); + }else { + writeHTMLColumn( myfile, listScale[aLength+1], "sc", "", spanVal.str(), false ); + } //myfile << "<td colspan=\"5\" class=\"sc\">" << aLength << "</td>"; } diff --git a/simulators/c++2/src_simulator/arch/CPU.cpp b/simulators/c++2/src_simulator/arch/CPU.cpp index d95f7786209ccdba1c730c88c30e3932765b1280..c64c2f07821a4dac2efebbe9bbbaf5b62016f30c 100644 --- a/simulators/c++2/src_simulator/arch/CPU.cpp +++ b/simulators/c++2/src_simulator/arch/CPU.cpp @@ -185,7 +185,11 @@ void CPU::HW2HTML(std::ofstream& myfile) const { 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); for( TransactionList::const_iterator i = _transactList.begin(); i != _transactList.end(); ++i ) { std::cout<<"get transaction core number is: "<<(*i)->getTransactCoreNumber()<<std::endl; std::cout<<"time : "<<_cycleTime<<std::endl; @@ -193,15 +197,46 @@ void CPU::HW2HTML(std::ofstream& myfile) const { if( (*i)->getTransactCoreNumber() == this->_cycleTime ){ TMLTransaction* aCurrTrans = *i; unsigned int aBlanks = aCurrTrans->getStartTime() - aCurrTime; - - if ( aBlanks >= 0 && (!(aCurrTrans->getCommand()->getActiveDelay()) && aCurrTrans->getCommand()->isDelayTransaction()) ) - writeHTMLColumn( myfile, aBlanks+1, "not", "idle time" ); - else if ( aBlanks > 0 ) - writeHTMLColumn( myfile, aBlanks, "not", "idle time" ); + bool isBlankTooBig = false; + std::ostringstream tempString; + int tempBlanks; + if(aBlanks >= 250) { + int newBlanks = 20; + tempBlanks = aBlanks; + tempReduce += aBlanks - newBlanks; + aBlanks = newBlanks; + isBlankTooBig = 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 ) { + listScale.push_back(aLength); + listScaleTime.push_back(listScaleTime.back()+aLength); std::ostringstream title; title << "idle:" << aCurrTrans->getIdlePenalty() << " switching penalty:" << aCurrTrans->getTaskSwitchingPenalty(); writeHTMLColumn( myfile, aLength, "not", title.str() ); @@ -217,6 +252,13 @@ void CPU::HW2HTML(std::ofstream& myfile) const { std::string aCurrContent=aCurrTransName.substr(indexTrans+1,2); if(!(!(aCurrTrans->getCommand()->getActiveDelay()) && aCurrTrans->getCommand()->isDelayTransaction())){ 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; @@ -224,20 +266,26 @@ void CPU::HW2HTML(std::ofstream& myfile) const { aCurrTime = aCurrTrans->getEndTime(); } } - + myfile << "</tr>" << std::endl << "<tr>"; - for ( unsigned int aLength = 0; aLength < aCurrTime; aLength++ ) { + for ( unsigned int aLength = 0; aLength < aCurrTime - tempReduce; aLength++ ) { myfile << "<th></th>"; } myfile << "</tr>" << std::endl << "<tr>"; - - for ( unsigned int aLength = 0; aLength <= aCurrTime; aLength += 5 ) { + for ( unsigned int aLength = 0; aLength < listScale.size(); aLength += 1 ) { std::ostringstream spanVal; - spanVal << aLength; - writeHTMLColumn( myfile, 5, "sc", "", spanVal.str(), false ); + if(aLength < listScaleTime.size()) + spanVal << listScaleTime[aLength]; + else + spanVal << ""; + if(aLength+1 >= listScale.size()){ + writeHTMLColumn( myfile, 5, "sc", "", spanVal.str(), false ); + }else { + writeHTMLColumn( myfile, listScale[aLength+1], "sc", "", spanVal.str(), false ); + } //myfile << "<td colspan=\"5\" class=\"sc\">" << aLength << "</td>"; } @@ -246,7 +294,7 @@ void CPU::HW2HTML(std::ofstream& myfile) const { } } -void CPU::schedule2HTML(std::ofstream& myfile) const { +void CPU::schedule2HTML(std::ofstream& myfile) const { myfile << "<h2><span>Scheduling for device: "<< _name <<"_core_"<<this->_cycleTime<< "</span></h2>" << std::endl; if ( _transactList.size() == 0 ) { @@ -258,7 +306,11 @@ void CPU::schedule2HTML(std::ofstream& myfile) const { 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); for( TransactionList::const_iterator i = _transactList.begin(); i != _transactList.end(); ++i ) { std::cout<<"get transaction core number is: "<<(*i)->getTransactCoreNumber()<<std::endl; std::cout<<"time : "<<_cycleTime<<std::endl; @@ -266,16 +318,47 @@ void CPU::schedule2HTML(std::ofstream& myfile) const { if( (*i)->getTransactCoreNumber() == this->_cycleTime ){ TMLTransaction* aCurrTrans = *i; unsigned int aBlanks = aCurrTrans->getStartTime() - aCurrTime; - - if ( aBlanks >= 0 && (!(aCurrTrans->getCommand()->getActiveDelay()) && aCurrTrans->getCommand()->isDelayTransaction()) ) - writeHTMLColumn( myfile, aBlanks+1, "not", "idle time" ); - else if ( aBlanks > 0 ) - writeHTMLColumn( myfile, aBlanks, "not", "idle time" ); + bool isBlankTooBig = false; + std::ostringstream tempString; + int tempBlanks; + if(aBlanks >= 250) { + int newBlanks = 20; + tempBlanks = aBlanks; + tempReduce += aBlanks - newBlanks; + aBlanks = newBlanks; + isBlankTooBig = 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; + listScale.push_back(aLength); + listScaleTime.push_back(listScaleTime.back()+aLength); title << "idle:" << aCurrTrans->getIdlePenalty() << " switching penalty:" << aCurrTrans->getTaskSwitchingPenalty(); writeHTMLColumn( myfile, aLength, "not", title.str() ); } @@ -287,6 +370,13 @@ void CPU::schedule2HTML(std::ofstream& myfile) const { const std::string cellClass = determineHTMLCellClass( taskCellClasses, task, nextCellClassIndex ); if(!(!(aCurrTrans->getCommand()->getActiveDelay()) && aCurrTrans->getCommand()->isDelayTransaction())){ writeHTMLColumn( myfile, aLength, cellClass, aCurrTrans->toShortString() ); + 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; @@ -294,20 +384,27 @@ void CPU::schedule2HTML(std::ofstream& myfile) const { aCurrTime = aCurrTrans->getEndTime(); } } - + myfile << "</tr>" << std::endl << "<tr>"; - for ( unsigned int aLength = 0; aLength < aCurrTime; aLength++ ) { + for ( unsigned int aLength = 0; aLength < aCurrTime - tempReduce; aLength++ ) { myfile << "<th></th>"; } myfile << "</tr>" << std::endl << "<tr>"; - for ( unsigned int aLength = 0; aLength <= aCurrTime; aLength += 5 ) { + for ( unsigned int aLength = 0; aLength < listScale.size(); aLength += 1 ) { std::ostringstream spanVal; - spanVal << aLength; - writeHTMLColumn( myfile, 5, "sc", "", spanVal.str(), false ); + if(aLength < listScaleTime.size()) + spanVal << listScaleTime[aLength]; + else + spanVal << ""; + if(aLength+1 >= listScale.size()){ + writeHTMLColumn( myfile, 5, "sc", "", spanVal.str(), false ); + }else { + writeHTMLColumn( myfile, listScale[aLength+1], "sc", "", spanVal.str(), false ); + } //myfile << "<td colspan=\"5\" class=\"sc\">" << aLength << "</td>"; } diff --git a/simulators/c++2/src_simulator/arch/FPGA.cpp b/simulators/c++2/src_simulator/arch/FPGA.cpp index f50f7b91198185d7d177130444e55ea8dc2c7e98..712d668c3eecf723b09037277dda0ac75dfc37ab 100644 --- a/simulators/c++2/src_simulator/arch/FPGA.cpp +++ b/simulators/c++2/src_simulator/arch/FPGA.cpp @@ -582,6 +582,11 @@ void FPGA::HW2HTML(std::ofstream& myfile) { myfile << "<table>" << std::endl << "<tr>"; 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); for( TransactionList::const_iterator i = _transactList.begin(); i != _transactList.end(); ++i ) { #ifdef DEBUG_FPGA std::cout << (*i)-> getCommand()->getTask()->toString() <<std::endl; @@ -596,11 +601,40 @@ void FPGA::HW2HTML(std::ofstream& myfile) { #endif TMLTransaction* aCurrTrans = *i; unsigned int aBlanks = aCurrTrans->getStartTime() - aCurrTime; - //std::cout<<"blank is "<<aBlanks<<std::endl; - if ( aBlanks >= 0 && (!(aCurrTrans->getCommand()->getActiveDelay()) && aCurrTrans->getCommand()->isDelayTransaction()) ) - writeHTMLColumn( myfile, aBlanks+1, "not", "idle time" ); - else if ( aBlanks > 0 ) - writeHTMLColumn( myfile, aBlanks, "not", "idle time" ); + bool isBlankTooBig = false; + std::ostringstream tempString; + int tempBlanks; + if(aBlanks >= 250) { + int newBlanks = 20; + tempBlanks = aBlanks; + tempReduce += aBlanks - newBlanks; + aBlanks = newBlanks; + isBlankTooBig = 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(); @@ -613,26 +647,38 @@ void FPGA::HW2HTML(std::ofstream& myfile) { std::string aCurrContent=aCurrTransName.substr(indexTrans+1,2); if(!(!(aCurrTrans->getCommand()->getActiveDelay()) && aCurrTrans->getCommand()->isDelayTransaction())){ 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; aLength++ ) { + for ( unsigned int aLength = 0; aLength < aCurrTime - tempReduce; aLength++ ) { myfile << "<th></th>"; } myfile << "</tr>" << std::endl << "<tr>"; - - for ( unsigned int aLength = 0; aLength <= aCurrTime; aLength += 5 ) { + for ( unsigned int aLength = 0; aLength < listScale.size(); aLength += 1 ) { std::ostringstream spanVal; - spanVal << aLength; - writeHTMLColumn( myfile, 5, "sc", "", spanVal.str(), false ); + if(aLength < listScaleTime.size()) + spanVal << listScaleTime[aLength]; + else + spanVal << ""; + if(aLength+1 >= listScale.size()){ + writeHTMLColumn( myfile, 5, "sc", "", spanVal.str(), false ); + }else { + writeHTMLColumn( myfile, listScale[aLength+1], "sc", "", spanVal.str(), false ); + } //myfile << "<td colspan=\"5\" class=\"sc\">" << aLength << "</td>"; } } @@ -652,6 +698,11 @@ void FPGA::schedule2HTML(std::ofstream& myfile) { 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); for( TransactionList::const_iterator i = _transactList.begin(); i != _transactList.end(); ++i ) { //#ifdef DEBUG_FPGA std::cout << (*i)-> getCommand()->getTask()->toString() <<std::endl; @@ -667,10 +718,41 @@ void FPGA::schedule2HTML(std::ofstream& myfile) { TMLTransaction* aCurrTrans = *i; unsigned int aBlanks = aCurrTrans->getStartTime() - aCurrTime; //std::cout<<"blank is "<<aBlanks<<std::endl; - if ( aBlanks >= 0 && (!(aCurrTrans->getCommand()->getActiveDelay()) && aCurrTrans->getCommand()->isDelayTransaction()) ) - writeHTMLColumn( myfile, aBlanks+1, "not", "idle time" ); - else if ( aBlanks > 0 ) - writeHTMLColumn( myfile, aBlanks, "not", "idle time" ); + bool isBlankTooBig = false; + std::ostringstream tempString; + int tempBlanks; + if(aBlanks >= 250) { + int newBlanks = 20; + tempBlanks = aBlanks; + tempReduce += aBlanks - newBlanks; + aBlanks = newBlanks; + isBlankTooBig = 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(); @@ -681,6 +763,13 @@ void FPGA::schedule2HTML(std::ofstream& myfile) { const std::string cellClass = determineHTMLCellClass( nextCellClassIndex ); if(!(!(aCurrTrans->getCommand()->getActiveDelay()) && aCurrTrans->getCommand()->isDelayTransaction())){ writeHTMLColumn( myfile, aLength, cellClass, aCurrTrans->toShortString() ); + 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) @@ -693,16 +782,22 @@ void FPGA::schedule2HTML(std::ofstream& myfile) { myfile << "</tr>" << std::endl << "<tr>"; - for ( unsigned int aLength = 0; aLength < aCurrTime; aLength++ ) { + for ( unsigned int aLength = 0; aLength < aCurrTime - tempReduce; aLength++ ) { myfile << "<th></th>"; } myfile << "</tr>" << std::endl << "<tr>"; - - for ( unsigned int aLength = 0; aLength <= aCurrTime; aLength += 5 ) { + for ( unsigned int aLength = 0; aLength < listScale.size(); aLength += 1 ) { std::ostringstream spanVal; - spanVal << aLength; - writeHTMLColumn( myfile, 5, "sc", "", spanVal.str(), false ); + if(aLength < listScaleTime.size()) + spanVal << listScaleTime[aLength]; + else + spanVal << ""; + if(aLength+1 >= listScale.size()){ + writeHTMLColumn( myfile, 5, "sc", "", spanVal.str(), false ); + }else { + writeHTMLColumn( myfile, listScale[aLength+1], "sc", "", spanVal.str(), false ); + } //myfile << "<td colspan=\"5\" class=\"sc\">" << aLength << "</td>"; } diff --git a/simulators/c++2/src_simulator/arch/MultiCoreCPU.cpp b/simulators/c++2/src_simulator/arch/MultiCoreCPU.cpp index e9acc0048569bb0e57f07b752b8f35509fe61986..d1105fc828b98935c3b7315f5cddc083f2a4419b 100644 --- a/simulators/c++2/src_simulator/arch/MultiCoreCPU.cpp +++ b/simulators/c++2/src_simulator/arch/MultiCoreCPU.cpp @@ -426,22 +426,59 @@ void MultiCoreCPU::schedule2HTML(std::ofstream& myfile) const{ //if (_transactList.empty()) return; //std::cout << "0. size: " << _transactList.size() << '\n'; myfile << "<h2><span>Scheduling for device: "<< _name <<"</span></h2>\n<table>\n<tr>"; + unsigned int tempReduce = 0; + std::vector<unsigned int> listScale; + std::vector<unsigned int> listScaleTime; + listScale.push_back(0); + listScaleTime.push_back(0); for(TransactionList::const_iterator i=_transactList.begin(); i != _transactList.end(); ++i){ aCurrTrans=*i; //if (aCurrTrans->getVirtualLength()==0) continue; aBlanks=aCurrTrans->getStartTime()-aCurrTime; - if ( aBlanks >= 0 && (!(aCurrTrans->getCommand()->getActiveDelay()) && aCurrTrans->getCommand()->isDelayTransaction()) ) - myfile << "<td colspan=\""<< aBlanks+1 <<"\" title=\"idle time\" class=\"not\"></td>\n"; + bool isBlankTooBig = false; + std::ostringstream tempString; + int tempBlanks; + if(aBlanks >= 250) { + int newBlanks = 20; + tempBlanks = aBlanks; + tempReduce += aBlanks - newBlanks; + aBlanks = newBlanks; + isBlankTooBig = 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){ + myfile << "<td colspan=\""<< aBlanks+1 <<"\" title=\"idle time\" class=\"not\">" << "<- idle " + tempString.str() + " ->" << "</td>\n"; + } else { + myfile << "<td colspan=\""<< aBlanks+1 <<"\" title=\"idle time\" class=\"not\"></td>\n"; + } + } else if (aBlanks>0){ - if (aBlanks==1) - myfile << "<td title=\"idle time\" class=\"not\"></td>\n"; - else - myfile << "<td colspan=\""<< aBlanks <<"\" title=\"idle time\" class=\"not\"></td>\n"; + listScale.push_back(aBlanks); + tempString << tempBlanks; + if(aCurrTrans->getStartTime() > listScaleTime.back()){ + listScaleTime.push_back(aCurrTrans->getStartTime()); + } + if (isBlankTooBig){ + myfile << "<td colspan=\""<< aBlanks <<"\" title=\"idle time\" class=\"not\">" << "<- idle " + tempString.str() + " ->" << "</td>\n"; + } else { + if (aBlanks==1) + myfile << "<td title=\"idle time\" class=\"not\"></td>\n"; + else + myfile << "<td colspan=\""<< aBlanks <<"\" title=\"idle time\" class=\"not\"></td>\n"; + } } - + aLength=aCurrTrans->getPenalties(); - + if (aLength!=0){ + listScale.push_back(aLength); + listScaleTime.push_back(listScaleTime.back()+aLength); if (aLength==1){ //myfile << "<td title=\""<< aCurrTrans->toShortString() << "\" class=\"t15\"></td>\n"; //myfile << "<td title=\" idle:" << aCurrTrans->getIdlePenalty() << " switch:" << aCurrTrans->getTaskSwitchingPenalty() << " bran:" << aCurrTrans->getBranchingPenalty() << "\" class=\"t15\"></td>\n"; @@ -458,6 +495,14 @@ void MultiCoreCPU::schedule2HTML(std::ofstream& myfile) const{ myfile << "<td title=\""<< aCurrTrans->toShortString() << "\" class=\"t"<< aColor <<"\"></td>\n"; else myfile << "<td colspan=\"" << aLength << "\" title=\"" << aCurrTrans->toShortString() << "\" class=\"t"<< aColor <<"\"></td>\n"; + + listScale.push_back(aLength); + if(aCurrTrans->getStartTime() > listScaleTime.back()){ + listScaleTime.push_back(aCurrTrans->getStartTime()); + } + if(aCurrTrans->getEndTime() > listScaleTime.back()){ + listScaleTime.push_back(aCurrTrans->getEndTime()); + } } @@ -466,9 +511,22 @@ void MultiCoreCPU::schedule2HTML(std::ofstream& myfile) const{ } //std::cout << "acurrTime: " << aCurrTime << std::endl; myfile << "</tr>\n<tr>"; - for(aLength=0;aLength<aCurrTime;aLength++) myfile << "<th></th>"; + for(aLength=0;aLength<aCurrTime - tempReduce;aLength++) myfile << "<th></th>"; myfile << "</tr>\n<tr>"; - for(aLength=0;aLength<aCurrTime;aLength+=5) myfile << "<td colspan=\"5\" class=\"sc\">" << aLength << "</td>"; + 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()){ + myfile << "<td colspan=\"5\" class=\"sc\">" << spanVal.str() << "</td>"; + }else { + myfile << "<td colspan=\"" << listScale[aLength+1] << "\" class=\"sc\">" << spanVal.str() << "</td>"; + } + //myfile << "<td colspan=\"5\" class=\"sc\">" << aLength << "</td>"; + } +// for(aLength=0;aLength<aCurrTime;aLength+=5) myfile << "<td colspan=\"5\" class=\"sc\">" << aLength << "</td>"; myfile << "</tr>\n</table>\n<table>\n<tr>"; for(TaskList::const_iterator j=_taskList.begin(); j != _taskList.end(); ++j){ if ((*j) != NULL) { diff --git a/simulators/c++2/src_simulator/arch/SchedulableDevice.cpp b/simulators/c++2/src_simulator/arch/SchedulableDevice.cpp index aa28883ed14cc5f2b2b2fcbf45ad8fb7da86fcea..e89f9bae109855e0c0e6de13720876191cdc24c7 100644 --- a/simulators/c++2/src_simulator/arch/SchedulableDevice.cpp +++ b/simulators/c++2/src_simulator/arch/SchedulableDevice.cpp @@ -315,7 +315,11 @@ void SchedulableDevice::HW2HTML(std::ofstream& myfile) const { 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); for( TransactionList::const_iterator i = _transactList.begin(); i != _transactList.end(); ++i ) { std::cout<<"get transaction core number is: "<<(*i)->getTransactCoreNumber()<<std::endl; std::cout<<"time : "<<_cycleTime<<std::endl; @@ -323,16 +327,47 @@ void SchedulableDevice::HW2HTML(std::ofstream& myfile) const { //if( (*i)->getTransactCoreNumber() == this->_cycleTime ){ TMLTransaction* aCurrTrans = *i; unsigned int aBlanks = aCurrTrans->getStartTime() - aCurrTime; - - if ( aBlanks >= 0 && (!(aCurrTrans->getCommand()->getActiveDelay()) && aCurrTrans->getCommand()->isDelayTransaction()) ) - writeHTMLColumn( myfile, aBlanks+1, "not", "idle time" ); - else if ( aBlanks > 0 ) - writeHTMLColumn( myfile, aBlanks, "not", "idle time" ); + bool isBlankTooBig = false; + std::ostringstream tempString; + int tempBlanks; + if(aBlanks >= 250) { + int newBlanks = 20; + tempBlanks = aBlanks; + tempReduce += aBlanks - newBlanks; + aBlanks = newBlanks; + isBlankTooBig = 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; + listScale.push_back(aLength); + listScaleTime.push_back(listScaleTime.back()+aLength); title << "idle:" << aCurrTrans->getIdlePenalty() << " switching penalty:" << aCurrTrans->getTaskSwitchingPenalty(); writeHTMLColumn( myfile, aLength, "not", title.str() ); } @@ -347,7 +382,13 @@ void SchedulableDevice::HW2HTML(std::ofstream& myfile) const { std::string aCurrContent=aCurrTransName.substr(indexTrans+1,2); 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(); // } } @@ -355,16 +396,23 @@ void SchedulableDevice::HW2HTML(std::ofstream& myfile) const { myfile << "</tr>" << std::endl << "<tr>"; - for ( unsigned int aLength = 0; aLength < aCurrTime; aLength++ ) { + for ( unsigned int aLength = 0; aLength < aCurrTime - tempReduce; aLength++ ) { myfile << "<th></th>"; } myfile << "</tr>" << std::endl << "<tr>"; - for ( unsigned int aLength = 0; aLength <= aCurrTime; aLength += 5 ) { + for ( unsigned int aLength = 0; aLength < listScale.size(); aLength += 1 ) { std::ostringstream spanVal; - spanVal << aLength; - writeHTMLColumn( myfile, 5, "sc", "", spanVal.str(), false ); + if(aLength < listScaleTime.size()) + spanVal << listScaleTime[aLength]; + else + spanVal << ""; + if(aLength+1 >= listScale.size()){ + writeHTMLColumn( myfile, 5, "sc", "", spanVal.str(), false ); + }else { + writeHTMLColumn( myfile, listScale[aLength+1], "sc", "", spanVal.str(), false ); + } //myfile << "<td colspan=\"5\" class=\"sc\">" << aLength << "</td>"; } @@ -394,7 +442,11 @@ void SchedulableDevice::schedule2HTML(std::ofstream& myfile) const { 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); for( TransactionList::const_iterator i = _transactList.begin(); i != _transactList.end(); ++i ) { std::cout<<"get transaction core number is: "<<(*i)->getTransactCoreNumber()<<std::endl; std::cout<<"time : "<<_cycleTime<<std::endl; @@ -402,16 +454,47 @@ void SchedulableDevice::schedule2HTML(std::ofstream& myfile) const { //if( (*i)->getTransactCoreNumber() == this->_cycleTime ){ TMLTransaction* aCurrTrans = *i; unsigned int aBlanks = aCurrTrans->getStartTime() - aCurrTime; - - if ( aBlanks >= 0 && (!(aCurrTrans->getCommand()->getActiveDelay()) && aCurrTrans->getCommand()->isDelayTransaction()) ) - writeHTMLColumn( myfile, aBlanks+1, "not", "idle time" ); - else if ( aBlanks > 0 ) - writeHTMLColumn( myfile, aBlanks, "not", "idle time" ); + bool isBlankTooBig = false; + std::ostringstream tempString; + int tempBlanks; + if(aBlanks >= 250) { + int newBlanks = 20; + tempBlanks = aBlanks; + tempReduce += aBlanks - newBlanks; + aBlanks = newBlanks; + isBlankTooBig = 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; + listScale.push_back(aLength); + listScaleTime.push_back(listScaleTime.back()+aLength); title << "idle:" << aCurrTrans->getIdlePenalty() << " switching penalty:" << aCurrTrans->getTaskSwitchingPenalty(); writeHTMLColumn( myfile, aLength, "not", title.str() ); } @@ -423,6 +506,13 @@ void SchedulableDevice::schedule2HTML(std::ofstream& myfile) const { const std::string cellClass = determineHTMLCellClass( taskCellClasses, task, nextCellClassIndex ); if(!(!(aCurrTrans->getCommand()->getActiveDelay()) && aCurrTrans->getCommand()->isDelayTransaction())){ writeHTMLColumn( myfile, aLength, cellClass, aCurrTrans->toShortString() ); + 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(); @@ -432,16 +522,23 @@ void SchedulableDevice::schedule2HTML(std::ofstream& myfile) const { myfile << "</tr>" << std::endl << "<tr>"; - for ( unsigned int aLength = 0; aLength < aCurrTime; aLength++ ) { + for ( unsigned int aLength = 0; aLength < aCurrTime - tempReduce; aLength++ ) { myfile << "<th></th>"; } myfile << "</tr>" << std::endl << "<tr>"; - for ( unsigned int aLength = 0; aLength <= aCurrTime; aLength += 5 ) { - std::ostringstream spanVal; - spanVal << aLength; - writeHTMLColumn( myfile, 5, "sc", "", spanVal.str(), false ); + 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()){ + writeHTMLColumn( myfile, 5, "sc", "", spanVal.str(), false ); + }else { + writeHTMLColumn( myfile, listScale[aLength+1], "sc", "", spanVal.str(), false ); + } //myfile << "<td colspan=\"5\" class=\"sc\">" << aLength << "</td>"; } diff --git a/simulators/c++2/src_simulator/definitions.h b/simulators/c++2/src_simulator/definitions.h index 78da097e3014fb3cbd561f5def01d7a3b7f33b7f..7d56da2891bd30ecdcb3149639b95a94f1bee546 100644 --- a/simulators/c++2/src_simulator/definitions.h +++ b/simulators/c++2/src_simulator/definitions.h @@ -338,6 +338,7 @@ th{\n \ .sc{\n \ border-style: none;\n \ padding: 0px;\n \ + font-size: small;\n \ }\n \ h2 {\n \ border-bottom: 1px solid #666;\n \ diff --git a/ttool/src/test/java/tmltranslator/HTMLParseTest.java b/ttool/src/test/java/tmltranslator/HTMLParseTest.java new file mode 100644 index 0000000000000000000000000000000000000000..95a88a67483345235d662de623f5f68d6b5f4584 --- /dev/null +++ b/ttool/src/test/java/tmltranslator/HTMLParseTest.java @@ -0,0 +1,217 @@ +package tmltranslator; + +import common.ConfigurationTTool; +import common.SpecConfigTTool; +import graph.AUTGraph; +import myutil.FileUtils; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import req.ebrdd.EBRDD; +import tepe.TEPE; +import tmltranslator.tomappingsystemc2.DiploSimulatorFactory; +import tmltranslator.tomappingsystemc2.IDiploSimulatorCodeGenerator; +import tmltranslator.tomappingsystemc2.Penalties; +import ui.AbstractUITest; +import ui.TDiagramPanel; +import ui.TMLArchiPanel; +import ui.TURTLEPanel; +import ui.tmldd.TMLArchiDiagramPanel; + +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.List; + +import static org.junit.Assert.assertTrue; + +public class HTMLParseTest extends AbstractUITest { + final String DIR_GEN = "test_diplo_simulator/"; + final String [] MODELS_PARSE_HTML = {"parseFPGA_HTML", "parseCPU1_HTML","parseCPU2_HTML"}; + final String [] PARSE_FPGA = {"","<- idle 358 ->", "", "<- idle 351 ->", ""}; + final String [] PARSE_SINGLE_CORE = {"<- idle 366 ->", "<- idle 401 ->", "<- idle 401 ->", "<- idle 401 ->", "<- idle 401 ->"}; + final String [] PARSE_MULTI_CORE = { "", "", "<- idle 374 ->", "<- idle 401 ->", "<- idle 401 ->"}; + private String SIM_DIR; + @BeforeClass + public static void setUpBeforeClass() throws Exception { + RESOURCES_DIR = getBaseResourcesDir() + "/tmltranslator/simulator/"; + + } + + public HTMLParseTest() { + super(); + //mainGUI.openProjectFromFile(new File(RESOURCES_DIR)); + } + + @Before + public void setUp() throws Exception { + SIM_DIR = getBaseResourcesDir() + "../../../../simulators/c++2/"; + } + + @Test + public void testParseHTML() throws Exception { + for (int i = 0; i < MODELS_PARSE_HTML.length; i++) { + String s = MODELS_PARSE_HTML[i]; + SIM_DIR = DIR_GEN + s + "/"; + System.out.println("executing: checking syntax " + s); + // select architecture tab + mainGUI.openProjectFromFile(new File(RESOURCES_DIR + s + ".xml")); + for(TURTLEPanel _tab : mainGUI.getTabs()) { + if(_tab instanceof TMLArchiPanel) { + for (TDiagramPanel tdp : _tab.getPanels()) { + if (tdp instanceof TMLArchiDiagramPanel) { + mainGUI.selectTab(tdp); + break; + } + } + break; + } + } + mainGUI.checkModelingSyntax(true); + TMLMapping tmap = mainGUI.gtm.getTMLMapping(); + TMLSyntaxChecking syntax = new TMLSyntaxChecking(tmap); + syntax.checkSyntax(); + assertTrue(syntax.hasErrors() == 0); + // Generate SystemC code + System.out.println("executing: sim code gen for " + s); + final IDiploSimulatorCodeGenerator tml2systc; + List<EBRDD> al = new ArrayList<EBRDD>(); + List<TEPE> alTepe = new ArrayList<TEPE>(); + tml2systc = DiploSimulatorFactory.INSTANCE.createCodeGenerator(tmap, al, alTepe); + tml2systc.setModelName(s); + String error = tml2systc.generateSystemC(false, true); + assertTrue(error == null); + + File directory = new File(SIM_DIR); + if (!directory.exists()) { + directory.mkdirs(); + } + + // Putting sim files + System.out.println("SIM executing: sim lib code copying for " + s); + ConfigurationTTool.SystemCCodeDirectory = getBaseResourcesDir() + "../../../../simulators/c++2/"; + boolean simFiles = SpecConfigTTool.checkAndCreateSystemCDir(SIM_DIR); + + System.out.println("SIM executing: sim lib code copying done with result " + simFiles); + assertTrue(simFiles); + + System.out.println("SIM Saving file in: " + SIM_DIR); + tml2systc.saveFile(SIM_DIR, "appmodel"); + + // Compile it + System.out.println("executing: compile"); + Process proc; + BufferedReader proc_in; + String str; + boolean mustRecompileAll; + Penalties penalty = new Penalties(SIM_DIR + "src_simulator"); + int changed = penalty.handlePenalties(false); + + if (changed == 1) { + mustRecompileAll = true; + } else { + mustRecompileAll = false; + } + + if (mustRecompileAll) { + System.out.println("executing: " + "make -C " + SIM_DIR + " clean"); + try { + proc = Runtime.getRuntime().exec("make -C " + SIM_DIR + " clean"); + proc_in = new BufferedReader(new InputStreamReader(proc.getInputStream())); + 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: " + "make -C " + SIM_DIR + " clean"); + return; + } + } + + System.out.println("executing: " + "make -C " + SIM_DIR); + try { + + proc = Runtime.getRuntime().exec("make -C " + SIM_DIR + ""); + proc_in = new BufferedReader(new InputStreamReader(proc.getInputStream())); + + monitorError(proc); + + 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: " + "make -C " + SIM_DIR); + return; + } + System.out.println("SUCCESS: executing: " + "make -C " + SIM_DIR); + + // Run the simulator + String graphPath = SIM_DIR + "testgraph_" + s; + try { + + String[] params = new String[3]; + + params[0] = "./" + SIM_DIR + "run.x"; + params[1] = "-cmd"; + params[2] = "1 0; 7 1 " + graphPath; + 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())); + + monitorError(proc); + + 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; + } + + // Compare results with expected ones + // Must load the graph + Document htmlFile = null; + try { + htmlFile = Jsoup.parse(new File(graphPath + ".html"), "ISO-8859-1"); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } // right + Elements div = htmlFile.select("td.not"); + System.out.println("executing: nb elements of " + s + " " + div.size()); +// assertTrue(NB_Of_DELAY_STATES[i] == graph.getNbOfStates()); + switch (i){ + case 0: + for (int j = 0; j < 5; j++) { + System.out.println("executing " + s + ": " + div.get(j).text()); + assertTrue(PARSE_FPGA[j].equals(div.get(j).text())); + } + break; + case 1: + for (int j = 0; j < 5; j++) { + System.out.println("executing " + s + ": " + div.get(j).text()); + assertTrue(PARSE_SINGLE_CORE[j].equals(div.get(j).text())); + } + break; + default: + for (int j = 0; j < 5; j++) { + System.out.println("executing " + s + ": " + div.get(j).text()); + assertTrue(PARSE_MULTI_CORE[j].equals(div.get(j).text())); + } + break; + } + + } + } +} diff --git a/ttool/src/test/resources/tmltranslator/simulator/parseCPU1_HTML.xml b/ttool/src/test/resources/tmltranslator/simulator/parseCPU1_HTML.xml new file mode 100644 index 0000000000000000000000000000000000000000..de1fb79d88d404e1de5dd09547e0debf883b5399 --- /dev/null +++ b/ttool/src/test/resources/tmltranslator/simulator/parseCPU1_HTML.xml @@ -0,0 +1,731 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<TURTLEGMODELING version="1.0beta" ANIMATE_INTERACTIVE_SIMULATION="true" ACTIVATE_PENALTIES="false" UPDATE_INFORMATION_DIPLO_SIM="true" 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$Task1$Task2$Task3$Task4$Task5" > +<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="357" y="686" /> +<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="357" y="686" id="22" /> +<P2 x="635" y="683" id="11" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<COMPONENT type="1202" id="10" > +<cdparam x="628" y="177" /> +<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="Task5" /> +<TGConnectingPoint num="0" id="2" /> +<TGConnectingPoint num="1" id="3" /> +<TGConnectingPoint num="2" id="4" /> +<TGConnectingPoint num="3" id="5" /> +<TGConnectingPoint num="4" id="6" /> +<TGConnectingPoint num="5" id="7" /> +<TGConnectingPoint num="6" id="8" /> +<TGConnectingPoint num="7" id="9" /> +<extraparam> +<Data isAttacker="No" daemon="false" Operation="" /> +</extraparam> +</COMPONENT> + +<COMPONENT type="1202" id="21" > +<cdparam x="648" y="615" /> +<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="Task4" /> +<TGConnectingPoint num="0" id="13" /> +<TGConnectingPoint num="1" id="14" /> +<TGConnectingPoint num="2" id="15" /> +<TGConnectingPoint num="3" id="16" /> +<TGConnectingPoint num="4" id="17" /> +<TGConnectingPoint num="5" id="18" /> +<TGConnectingPoint num="6" id="19" /> +<TGConnectingPoint num="7" id="20" /> +<extraparam> +<Data isAttacker="No" daemon="false" Operation="" /> +</extraparam> +</COMPONENT> +<SUBCOMPONENT type="1203" id="12" > +<father id="21" num="0" /> +<cdparam x="635" y="670" /> +<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="Channel ch" /> +<TGConnectingPoint num="0" id="11" /> +<extraparam> +<Prop commName="ch" 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="-1" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +</extraparam> +</SUBCOMPONENT> + +<COMPONENT type="1202" id="32" > +<cdparam x="144" y="606" /> +<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="Task3" /> +<TGConnectingPoint num="0" id="24" /> +<TGConnectingPoint num="1" id="25" /> +<TGConnectingPoint num="2" id="26" /> +<TGConnectingPoint num="3" id="27" /> +<TGConnectingPoint num="4" id="28" /> +<TGConnectingPoint num="5" id="29" /> +<TGConnectingPoint num="6" id="30" /> +<TGConnectingPoint num="7" id="31" /> +<extraparam> +<Data isAttacker="No" daemon="false" Operation="" /> +</extraparam> +</COMPONENT> +<SUBCOMPONENT type="1203" id="23" > +<father id="32" num="0" /> +<cdparam x="331" y="673" /> +<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="Channel ch" /> +<TGConnectingPoint num="0" id="22" /> +<extraparam> +<Prop commName="ch" 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="-1" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +</extraparam> +</SUBCOMPONENT> + +<COMPONENT type="1202" id="41" > +<cdparam x="145" y="119" /> +<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="Task1" /> +<TGConnectingPoint num="0" id="33" /> +<TGConnectingPoint num="1" id="34" /> +<TGConnectingPoint num="2" id="35" /> +<TGConnectingPoint num="3" id="36" /> +<TGConnectingPoint num="4" id="37" /> +<TGConnectingPoint num="5" id="38" /> +<TGConnectingPoint num="6" id="39" /> +<TGConnectingPoint num="7" id="40" /> +<extraparam> +<Data isAttacker="No" daemon="false" Operation="" /> +</extraparam> +</COMPONENT> + +<COMPONENT type="1202" id="50" > +<cdparam x="151" y="358" /> +<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="Task2" /> +<TGConnectingPoint num="0" id="42" /> +<TGConnectingPoint num="1" id="43" /> +<TGConnectingPoint num="2" id="44" /> +<TGConnectingPoint num="3" id="45" /> +<TGConnectingPoint num="4" id="46" /> +<TGConnectingPoint num="5" id="47" /> +<TGConnectingPoint num="6" id="48" /> +<TGConnectingPoint num="7" id="49" /> +<extraparam> +<Data isAttacker="No" daemon="false" Operation="" /> +</extraparam> +</COMPONENT> + + +</TMLComponentTaskDiagramPanel> + +<TMLActivityDiagramPanel name="Task1" minX="10" maxX="2500" minY="10" maxY="1500" zoom="1.0" > +<COMPONENT type="1001" id="52" > +<cdparam x="408" y="191" /> +<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="51" /> +</COMPONENT> + +<COMPONENT type="1013" id="56" > +<cdparam x="404" y="114" /> +<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="54" /> +<TGConnectingPoint num="1" id="55" /> +</COMPONENT> +<SUBCOMPONENT type="-1" id="53" > +<father id="56" num="0" /> +<cdparam x="419" y="134" /> +<sizeparam width="8" 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="5" /> +</SUBCOMPONENT> + +<COMPONENT type="1000" id="58" > +<cdparam x="400" y="50" /> +<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="57" /> +</COMPONENT> + +<CONNECTOR type="115" id="59" > +<cdparam x="407" y="65" /> +<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="57" /> +<P2 x="409" y="109" id="54" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="60" > +<cdparam x="409" y="149" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="409" y="149" id="55" /> +<P2 x="418" y="186" id="51" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> + +</TMLActivityDiagramPanel> + +<TMLActivityDiagramPanel name="Task2" minX="10" maxX="2500" minY="10" maxY="1500" zoom="1.0" > +<COMPONENT type="1001" id="62" > +<cdparam x="418" y="144" /> +<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="61" /> +</COMPONENT> + +<COMPONENT type="1020" id="66" > +<cdparam x="378" y="98" /> +<sizeparam width="90" 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="for loop" value="5" /> +<TGConnectingPoint num="0" id="63" /> +<TGConnectingPoint num="1" id="64" /> +<TGConnectingPoint num="2" id="65" /> +</COMPONENT> + +<COMPONENT type="1026" id="70" > +<cdparam x="563" y="159" /> +<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="delay" value="null" /> +<TGConnectingPoint num="0" id="68" /> +<TGConnectingPoint num="1" id="69" /> +</COMPONENT> +<SUBCOMPONENT type="-1" id="67" > +<father id="70" num="0" /> +<cdparam x="578" y="179" /> +<sizeparam width="28" 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="2 us" /> +<extraparam> +<TimeDelay minDelay="2" maxDelay="nope" hasMaxDelay="false" isActiveDelay="false" unit="us" /> +</extraparam> +</SUBCOMPONENT> + +<COMPONENT type="1001" id="72" > +<cdparam x="601" y="341" /> +<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="71" /> +</COMPONENT> + +<COMPONENT type="1013" id="76" > +<cdparam x="574" y="233" /> +<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="74" /> +<TGConnectingPoint num="1" id="75" /> +</COMPONENT> +<SUBCOMPONENT type="-1" id="73" > +<father id="76" num="0" /> +<cdparam x="589" y="253" /> +<sizeparam width="8" 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="5" /> +</SUBCOMPONENT> + +<COMPONENT type="1000" id="78" > +<cdparam x="361" y="57" /> +<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="77" /> +</COMPONENT> + +<CONNECTOR type="115" id="79" > +<cdparam x="466" y="112" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="468" y="112" id="64" /> +<P2 x="568" y="154" id="68" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="80" > +<cdparam x="555" y="158" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="568" y="194" id="69" /> +<P2 x="579" y="228" id="74" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="81" > +<cdparam x="407" y="65" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="368" y="77" id="77" /> +<P2 x="423" y="93" id="63" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="82" > +<cdparam x="551" y="166" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="579" y="268" id="75" /> +<P2 x="611" y="336" id="71" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="83" > +<cdparam x="423" y="123" /> +<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="123" id="65" /> +<P2 x="428" y="139" id="61" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> + +</TMLActivityDiagramPanel> + +<TMLActivityDiagramPanel name="Task3" minX="10" maxX="2500" minY="10" maxY="1500" zoom="1.0" > +<COMPONENT type="1001" id="85" > +<cdparam x="392" y="170" /> +<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="84" /> +</COMPONENT> + +<COMPONENT type="1006" id="88" > +<cdparam x="369" y="103" /> +<sizeparam width="71" 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="ch(5)" /> +<TGConnectingPoint num="0" id="86" /> +<TGConnectingPoint num="1" id="87" /> +<extraparam> +<Data channelName="ch" nbOfSamples="5" secPattern="" isAttacker="No" isEncForm="Yes" /> +</extraparam> +</COMPONENT> + +<COMPONENT type="1000" id="90" > +<cdparam x="400" y="50" /> +<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="89" /> +</COMPONENT> + +<CONNECTOR type="115" id="91" > +<cdparam x="407" y="65" /> +<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="89" /> +<P2 x="404" y="98" id="86" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="92" > +<cdparam x="404" y="128" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="404" y="128" id="87" /> +<P2 x="402" y="165" id="84" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> + +</TMLActivityDiagramPanel> + +<TMLActivityDiagramPanel name="Task4" minX="10" maxX="2500" minY="10" maxY="1500" zoom="1.0" > +<COMPONENT type="1001" id="94" > +<cdparam x="393" y="163" /> +<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="93" /> +</COMPONENT> + +<COMPONENT type="1009" id="97" > +<cdparam x="376" y="108" /> +<sizeparam width="75" 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="ch(5) " /> +<TGConnectingPoint num="0" id="95" /> +<TGConnectingPoint num="1" id="96" /> +<extraparam> +<Data channelName="ch" nbOfSamples="5" secPattern="" isAttacker="No" isEncForm="Yes" /> +</extraparam> +</COMPONENT> + +<COMPONENT type="1000" id="99" > +<cdparam x="400" y="50" /> +<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="98" /> +</COMPONENT> + +<CONNECTOR type="115" id="100" > +<cdparam x="407" y="65" /> +<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="98" /> +<P2 x="413" y="103" id="95" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="101" > +<cdparam x="413" y="133" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="413" y="133" id="96" /> +<P2 x="403" y="158" id="93" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> + +</TMLActivityDiagramPanel> + +<TMLActivityDiagramPanel name="Task5" minX="10" maxX="2500" minY="10" maxY="1500" zoom="1.0" > +<COMPONENT type="1001" id="103" > +<cdparam x="418" y="144" /> +<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="102" /> +</COMPONENT> + +<COMPONENT type="1013" id="107" > +<cdparam x="413" y="88" /> +<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="105" /> +<TGConnectingPoint num="1" id="106" /> +</COMPONENT> +<SUBCOMPONENT type="-1" id="104" > +<father id="107" num="0" /> +<cdparam x="428" y="108" /> +<sizeparam width="8" 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="5" /> +</SUBCOMPONENT> + +<COMPONENT type="1000" id="109" > +<cdparam x="400" y="50" /> +<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" /> +</COMPONENT> + +<CONNECTOR type="115" id="110" > +<cdparam x="407" y="65" /> +<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="108" /> +<P2 x="418" y="83" id="105" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="111" > +<cdparam x="418" y="123" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="418" y="123" id="106" /> +<P2 x="428" y="139" id="102" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> + +</TMLActivityDiagramPanel> + +</Modeling> + + + + +<Modeling type="TML Architecture" nameTab="Architecture" > +<TMLArchiDiagramPanel name="DIPLODOCUS architecture and mapping Diagram" minX="10" maxX="2500" minY="10" maxY="1500" attributes="0" masterClockFrequency="200" zoom="1.0" > +<CONNECTOR type="125" id="260" > +<cdparam x="331" y="391" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="{info}" /> +<P1 x="331" y="391" id="245" /> +<P2 x="484" y="366" id="217" /> +<AutomaticDrawing data="true" /> +<extraparam> +<info priority="0" /> +<spy value="false" /> +</extraparam> +</CONNECTOR> +<COMPONENT type="1100" id="235" > +<cdparam x="61" y="391" /> +<sizeparam width="360" height="287" 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="CPU0" value="name" /> +<TGConnectingPoint num="0" id="236" /> +<TGConnectingPoint num="1" id="237" /> +<TGConnectingPoint num="2" id="238" /> +<TGConnectingPoint num="3" id="239" /> +<TGConnectingPoint num="4" id="240" /> +<TGConnectingPoint num="5" id="241" /> +<TGConnectingPoint num="6" id="242" /> +<TGConnectingPoint num="7" id="243" /> +<TGConnectingPoint num="8" id="244" /> +<TGConnectingPoint num="9" id="245" /> +<TGConnectingPoint num="10" id="246" /> +<TGConnectingPoint num="11" id="247" /> +<TGConnectingPoint num="12" id="248" /> +<TGConnectingPoint num="13" id="249" /> +<TGConnectingPoint num="14" id="250" /> +<TGConnectingPoint num="15" id="251" /> +<TGConnectingPoint num="16" id="252" /> +<TGConnectingPoint num="17" id="253" /> +<TGConnectingPoint num="18" id="254" /> +<TGConnectingPoint num="19" id="255" /> +<TGConnectingPoint num="20" id="256" /> +<TGConnectingPoint num="21" id="257" /> +<TGConnectingPoint num="22" id="258" /> +<TGConnectingPoint num="23" id="259" /> +<extraparam> +<info stereotype="CPURR" nodeName="CPU0" /> +<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="156" > +<father id="235" num="0" /> +<cdparam x="61" y="638" /> +<sizeparam width="149" height="40" minWidth="100" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="0" maxX="211" minY="0" maxY="247" /> +<infoparam name="TGComponent" value="Application::Task4" /> +<TGConnectingPoint num="0" id="148" /> +<TGConnectingPoint num="1" id="149" /> +<TGConnectingPoint num="2" id="150" /> +<TGConnectingPoint num="3" id="151" /> +<TGConnectingPoint num="4" id="152" /> +<TGConnectingPoint num="5" id="153" /> +<TGConnectingPoint num="6" id="154" /> +<TGConnectingPoint num="7" id="155" /> +<extraparam> +<info value="Application::Task4" taskName="Task4" referenceTaskName="Application" priority="0" operationMEC="Task4" fatherComponentMECType="0" /> +</extraparam> +</SUBCOMPONENT> +<SUBCOMPONENT type="1101" id="120" > +<father id="235" num="1" /> +<cdparam x="272" y="639" /> +<sizeparam width="149" height="39" minWidth="100" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="0" maxX="211" minY="0" maxY="248" /> +<infoparam name="TGComponent" value="Application::Task5" /> +<TGConnectingPoint num="0" id="112" /> +<TGConnectingPoint num="1" id="113" /> +<TGConnectingPoint num="2" id="114" /> +<TGConnectingPoint num="3" id="115" /> +<TGConnectingPoint num="4" id="116" /> +<TGConnectingPoint num="5" id="117" /> +<TGConnectingPoint num="6" id="118" /> +<TGConnectingPoint num="7" id="119" /> +<extraparam> +<info value="Application::Task5" taskName="Task5" referenceTaskName="Application" priority="0" operationMEC="Task5" fatherComponentMECType="0" /> +</extraparam> +</SUBCOMPONENT> +<SUBCOMPONENT type="1101" id="147" > +<father id="235" num="2" /> +<cdparam x="168" y="533" /> +<sizeparam width="149" height="40" minWidth="100" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="0" maxX="211" minY="0" maxY="247" /> +<infoparam name="TGComponent" value="Application::Task3" /> +<TGConnectingPoint num="0" id="139" /> +<TGConnectingPoint num="1" id="140" /> +<TGConnectingPoint num="2" id="141" /> +<TGConnectingPoint num="3" id="142" /> +<TGConnectingPoint num="4" id="143" /> +<TGConnectingPoint num="5" id="144" /> +<TGConnectingPoint num="6" id="145" /> +<TGConnectingPoint num="7" id="146" /> +<extraparam> +<info value="Application::Task3" taskName="Task3" referenceTaskName="Application" priority="0" operationMEC="Task3" fatherComponentMECType="0" /> +</extraparam> +</SUBCOMPONENT> +<SUBCOMPONENT type="1101" id="129" > +<father id="235" num="3" /> +<cdparam x="272" y="435" /> +<sizeparam width="149" height="40" minWidth="100" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="0" maxX="211" minY="0" maxY="247" /> +<infoparam name="TGComponent" value="Application::Task2" /> +<TGConnectingPoint num="0" id="121" /> +<TGConnectingPoint num="1" id="122" /> +<TGConnectingPoint num="2" id="123" /> +<TGConnectingPoint num="3" id="124" /> +<TGConnectingPoint num="4" id="125" /> +<TGConnectingPoint num="5" id="126" /> +<TGConnectingPoint num="6" id="127" /> +<TGConnectingPoint num="7" id="128" /> +<extraparam> +<info value="Application::Task2" taskName="Task2" referenceTaskName="Application" priority="0" operationMEC="Task2" fatherComponentMECType="0" /> +</extraparam> +</SUBCOMPONENT> +<SUBCOMPONENT type="1101" id="138" > +<father id="235" num="4" /> +<cdparam x="61" y="436" /> +<sizeparam width="149" height="40" minWidth="100" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="0" maxX="211" minY="0" maxY="247" /> +<infoparam name="TGComponent" value="Application::Task1" /> +<TGConnectingPoint num="0" id="130" /> +<TGConnectingPoint num="1" id="131" /> +<TGConnectingPoint num="2" id="132" /> +<TGConnectingPoint num="3" id="133" /> +<TGConnectingPoint num="4" id="134" /> +<TGConnectingPoint num="5" id="135" /> +<TGConnectingPoint num="6" id="136" /> +<TGConnectingPoint num="7" id="137" /> +<extraparam> +<info value="Application::Task1" taskName="Task1" referenceTaskName="Application" priority="0" operationMEC="Task1" fatherComponentMECType="0" /> +</extraparam> +</SUBCOMPONENT> + +<COMPONENT type="1105" id="206" > +<cdparam x="735" y="107" /> +<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="182" /> +<TGConnectingPoint num="1" id="183" /> +<TGConnectingPoint num="2" id="184" /> +<TGConnectingPoint num="3" id="185" /> +<TGConnectingPoint num="4" id="186" /> +<TGConnectingPoint num="5" id="187" /> +<TGConnectingPoint num="6" id="188" /> +<TGConnectingPoint num="7" id="189" /> +<TGConnectingPoint num="8" id="190" /> +<TGConnectingPoint num="9" id="191" /> +<TGConnectingPoint num="10" id="192" /> +<TGConnectingPoint num="11" id="193" /> +<TGConnectingPoint num="12" id="194" /> +<TGConnectingPoint num="13" id="195" /> +<TGConnectingPoint num="14" id="196" /> +<TGConnectingPoint num="15" id="197" /> +<TGConnectingPoint num="16" id="198" /> +<TGConnectingPoint num="17" id="199" /> +<TGConnectingPoint num="18" id="200" /> +<TGConnectingPoint num="19" id="201" /> +<TGConnectingPoint num="20" id="202" /> +<TGConnectingPoint num="21" id="203" /> +<TGConnectingPoint num="22" id="204" /> +<TGConnectingPoint num="23" id="205" /> +<extraparam> +<info stereotype="MEMORY" nodeName="Memory0" /> +<attributes byteDataSize="4" memorySize="1024" clockRatio="1" bufferType="0" /> +</extraparam> +</COMPONENT> + +<COMPONENT type="1102" id="231" > +<cdparam x="484" y="354" /> +<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="207" /> +<TGConnectingPoint num="1" id="208" /> +<TGConnectingPoint num="2" id="209" /> +<TGConnectingPoint num="3" id="210" /> +<TGConnectingPoint num="4" id="211" /> +<TGConnectingPoint num="5" id="212" /> +<TGConnectingPoint num="6" id="213" /> +<TGConnectingPoint num="7" id="214" /> +<TGConnectingPoint num="8" id="215" /> +<TGConnectingPoint num="9" id="216" /> +<TGConnectingPoint num="10" id="217" /> +<TGConnectingPoint num="11" id="218" /> +<TGConnectingPoint num="12" id="219" /> +<TGConnectingPoint num="13" id="220" /> +<TGConnectingPoint num="14" id="221" /> +<TGConnectingPoint num="15" id="222" /> +<TGConnectingPoint num="16" id="223" /> +<TGConnectingPoint num="17" id="224" /> +<TGConnectingPoint num="18" id="225" /> +<TGConnectingPoint num="19" id="226" /> +<TGConnectingPoint num="20" id="227" /> +<TGConnectingPoint num="21" id="228" /> +<TGConnectingPoint num="22" id="229" /> +<TGConnectingPoint num="23" id="230" /> +<extraparam> +<info stereotype="BUS-RR" nodeName="Bus0" /> +<attributes byteDataSize="4" arbitrationPolicy="0" sliceTime="10000" pipelineSize="1" clockRatio="1" privacy="0" referenceAttack="null" /> +</extraparam> +</COMPONENT> + +<CONNECTOR type="125" id="233" > +<cdparam x="759" y="279" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="{info}" /> +<P1 x="735" y="307" id="187" /> +<P2 x="671" y="354" id="216" /> +<AutomaticDrawing data="true" /> +<extraparam> +<info priority="0" /> +<spy value="false" /> +</extraparam> +</CONNECTOR> + +</TMLArchiDiagramPanel> + +</Modeling> + + + + +</TURTLEGMODELING> \ No newline at end of file diff --git a/ttool/src/test/resources/tmltranslator/simulator/parseCPU2_HTML.xml b/ttool/src/test/resources/tmltranslator/simulator/parseCPU2_HTML.xml new file mode 100644 index 0000000000000000000000000000000000000000..e045b8d90b8fc5063f47c80994f36c40c3babe31 --- /dev/null +++ b/ttool/src/test/resources/tmltranslator/simulator/parseCPU2_HTML.xml @@ -0,0 +1,731 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<TURTLEGMODELING version="1.0beta" ANIMATE_INTERACTIVE_SIMULATION="true" ACTIVATE_PENALTIES="false" UPDATE_INFORMATION_DIPLO_SIM="true" 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$Task1$Task2$Task3$Task4$Task5" > +<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="357" y="686" /> +<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="357" y="686" id="22" /> +<P2 x="635" y="683" id="11" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<COMPONENT type="1202" id="10" > +<cdparam x="628" y="177" /> +<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="Task5" /> +<TGConnectingPoint num="0" id="2" /> +<TGConnectingPoint num="1" id="3" /> +<TGConnectingPoint num="2" id="4" /> +<TGConnectingPoint num="3" id="5" /> +<TGConnectingPoint num="4" id="6" /> +<TGConnectingPoint num="5" id="7" /> +<TGConnectingPoint num="6" id="8" /> +<TGConnectingPoint num="7" id="9" /> +<extraparam> +<Data isAttacker="No" daemon="false" Operation="" /> +</extraparam> +</COMPONENT> + +<COMPONENT type="1202" id="21" > +<cdparam x="648" y="615" /> +<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="Task4" /> +<TGConnectingPoint num="0" id="13" /> +<TGConnectingPoint num="1" id="14" /> +<TGConnectingPoint num="2" id="15" /> +<TGConnectingPoint num="3" id="16" /> +<TGConnectingPoint num="4" id="17" /> +<TGConnectingPoint num="5" id="18" /> +<TGConnectingPoint num="6" id="19" /> +<TGConnectingPoint num="7" id="20" /> +<extraparam> +<Data isAttacker="No" daemon="false" Operation="" /> +</extraparam> +</COMPONENT> +<SUBCOMPONENT type="1203" id="12" > +<father id="21" num="0" /> +<cdparam x="635" y="670" /> +<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="Channel ch" /> +<TGConnectingPoint num="0" id="11" /> +<extraparam> +<Prop commName="ch" 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="-1" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +</extraparam> +</SUBCOMPONENT> + +<COMPONENT type="1202" id="32" > +<cdparam x="144" y="606" /> +<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="Task3" /> +<TGConnectingPoint num="0" id="24" /> +<TGConnectingPoint num="1" id="25" /> +<TGConnectingPoint num="2" id="26" /> +<TGConnectingPoint num="3" id="27" /> +<TGConnectingPoint num="4" id="28" /> +<TGConnectingPoint num="5" id="29" /> +<TGConnectingPoint num="6" id="30" /> +<TGConnectingPoint num="7" id="31" /> +<extraparam> +<Data isAttacker="No" daemon="false" Operation="" /> +</extraparam> +</COMPONENT> +<SUBCOMPONENT type="1203" id="23" > +<father id="32" num="0" /> +<cdparam x="331" y="673" /> +<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="Channel ch" /> +<TGConnectingPoint num="0" id="22" /> +<extraparam> +<Prop commName="ch" 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="-1" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +</extraparam> +</SUBCOMPONENT> + +<COMPONENT type="1202" id="41" > +<cdparam x="145" y="119" /> +<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="Task1" /> +<TGConnectingPoint num="0" id="33" /> +<TGConnectingPoint num="1" id="34" /> +<TGConnectingPoint num="2" id="35" /> +<TGConnectingPoint num="3" id="36" /> +<TGConnectingPoint num="4" id="37" /> +<TGConnectingPoint num="5" id="38" /> +<TGConnectingPoint num="6" id="39" /> +<TGConnectingPoint num="7" id="40" /> +<extraparam> +<Data isAttacker="No" daemon="false" Operation="" /> +</extraparam> +</COMPONENT> + +<COMPONENT type="1202" id="50" > +<cdparam x="151" y="358" /> +<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="Task2" /> +<TGConnectingPoint num="0" id="42" /> +<TGConnectingPoint num="1" id="43" /> +<TGConnectingPoint num="2" id="44" /> +<TGConnectingPoint num="3" id="45" /> +<TGConnectingPoint num="4" id="46" /> +<TGConnectingPoint num="5" id="47" /> +<TGConnectingPoint num="6" id="48" /> +<TGConnectingPoint num="7" id="49" /> +<extraparam> +<Data isAttacker="No" daemon="false" Operation="" /> +</extraparam> +</COMPONENT> + + +</TMLComponentTaskDiagramPanel> + +<TMLActivityDiagramPanel name="Task1" minX="10" maxX="2500" minY="10" maxY="1500" zoom="1.0" > +<COMPONENT type="1001" id="52" > +<cdparam x="408" y="191" /> +<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="51" /> +</COMPONENT> + +<COMPONENT type="1013" id="56" > +<cdparam x="404" y="114" /> +<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="54" /> +<TGConnectingPoint num="1" id="55" /> +</COMPONENT> +<SUBCOMPONENT type="-1" id="53" > +<father id="56" num="0" /> +<cdparam x="419" y="134" /> +<sizeparam width="8" 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="5" /> +</SUBCOMPONENT> + +<COMPONENT type="1000" id="58" > +<cdparam x="400" y="50" /> +<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="57" /> +</COMPONENT> + +<CONNECTOR type="115" id="59" > +<cdparam x="407" y="65" /> +<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="57" /> +<P2 x="409" y="109" id="54" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="60" > +<cdparam x="409" y="149" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="409" y="149" id="55" /> +<P2 x="418" y="186" id="51" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> + +</TMLActivityDiagramPanel> + +<TMLActivityDiagramPanel name="Task2" minX="10" maxX="2500" minY="10" maxY="1500" zoom="1.0" > +<COMPONENT type="1001" id="62" > +<cdparam x="418" y="144" /> +<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="61" /> +</COMPONENT> + +<COMPONENT type="1020" id="66" > +<cdparam x="378" y="98" /> +<sizeparam width="90" 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="for loop" value="5" /> +<TGConnectingPoint num="0" id="63" /> +<TGConnectingPoint num="1" id="64" /> +<TGConnectingPoint num="2" id="65" /> +</COMPONENT> + +<COMPONENT type="1026" id="70" > +<cdparam x="563" y="159" /> +<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="delay" value="null" /> +<TGConnectingPoint num="0" id="68" /> +<TGConnectingPoint num="1" id="69" /> +</COMPONENT> +<SUBCOMPONENT type="-1" id="67" > +<father id="70" num="0" /> +<cdparam x="578" y="179" /> +<sizeparam width="28" 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="2 us" /> +<extraparam> +<TimeDelay minDelay="2" maxDelay="nope" hasMaxDelay="false" isActiveDelay="false" unit="us" /> +</extraparam> +</SUBCOMPONENT> + +<COMPONENT type="1001" id="72" > +<cdparam x="601" y="341" /> +<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="71" /> +</COMPONENT> + +<COMPONENT type="1013" id="76" > +<cdparam x="574" y="233" /> +<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="74" /> +<TGConnectingPoint num="1" id="75" /> +</COMPONENT> +<SUBCOMPONENT type="-1" id="73" > +<father id="76" num="0" /> +<cdparam x="589" y="253" /> +<sizeparam width="8" 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="5" /> +</SUBCOMPONENT> + +<COMPONENT type="1000" id="78" > +<cdparam x="361" y="57" /> +<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="77" /> +</COMPONENT> + +<CONNECTOR type="115" id="79" > +<cdparam x="466" y="112" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="468" y="112" id="64" /> +<P2 x="568" y="154" id="68" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="80" > +<cdparam x="555" y="158" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="568" y="194" id="69" /> +<P2 x="579" y="228" id="74" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="81" > +<cdparam x="407" y="65" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="368" y="77" id="77" /> +<P2 x="423" y="93" id="63" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="82" > +<cdparam x="551" y="166" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="579" y="268" id="75" /> +<P2 x="611" y="336" id="71" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="83" > +<cdparam x="423" y="123" /> +<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="123" id="65" /> +<P2 x="428" y="139" id="61" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> + +</TMLActivityDiagramPanel> + +<TMLActivityDiagramPanel name="Task3" minX="10" maxX="2500" minY="10" maxY="1500" zoom="1.0" > +<COMPONENT type="1001" id="85" > +<cdparam x="392" y="170" /> +<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="84" /> +</COMPONENT> + +<COMPONENT type="1006" id="88" > +<cdparam x="369" y="103" /> +<sizeparam width="71" 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="ch(5)" /> +<TGConnectingPoint num="0" id="86" /> +<TGConnectingPoint num="1" id="87" /> +<extraparam> +<Data channelName="ch" nbOfSamples="5" secPattern="" isAttacker="No" isEncForm="Yes" /> +</extraparam> +</COMPONENT> + +<COMPONENT type="1000" id="90" > +<cdparam x="400" y="50" /> +<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="89" /> +</COMPONENT> + +<CONNECTOR type="115" id="91" > +<cdparam x="407" y="65" /> +<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="89" /> +<P2 x="404" y="98" id="86" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="92" > +<cdparam x="404" y="128" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="404" y="128" id="87" /> +<P2 x="402" y="165" id="84" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> + +</TMLActivityDiagramPanel> + +<TMLActivityDiagramPanel name="Task4" minX="10" maxX="2500" minY="10" maxY="1500" zoom="1.0" > +<COMPONENT type="1001" id="94" > +<cdparam x="393" y="163" /> +<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="93" /> +</COMPONENT> + +<COMPONENT type="1009" id="97" > +<cdparam x="376" y="108" /> +<sizeparam width="75" 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="ch(5) " /> +<TGConnectingPoint num="0" id="95" /> +<TGConnectingPoint num="1" id="96" /> +<extraparam> +<Data channelName="ch" nbOfSamples="5" secPattern="" isAttacker="No" isEncForm="Yes" /> +</extraparam> +</COMPONENT> + +<COMPONENT type="1000" id="99" > +<cdparam x="400" y="50" /> +<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="98" /> +</COMPONENT> + +<CONNECTOR type="115" id="100" > +<cdparam x="407" y="65" /> +<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="98" /> +<P2 x="413" y="103" id="95" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="101" > +<cdparam x="413" y="133" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="413" y="133" id="96" /> +<P2 x="403" y="158" id="93" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> + +</TMLActivityDiagramPanel> + +<TMLActivityDiagramPanel name="Task5" minX="10" maxX="2500" minY="10" maxY="1500" zoom="1.0" > +<COMPONENT type="1001" id="103" > +<cdparam x="418" y="144" /> +<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="102" /> +</COMPONENT> + +<COMPONENT type="1013" id="107" > +<cdparam x="413" y="88" /> +<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="105" /> +<TGConnectingPoint num="1" id="106" /> +</COMPONENT> +<SUBCOMPONENT type="-1" id="104" > +<father id="107" num="0" /> +<cdparam x="428" y="108" /> +<sizeparam width="8" 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="5" /> +</SUBCOMPONENT> + +<COMPONENT type="1000" id="109" > +<cdparam x="400" y="50" /> +<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" /> +</COMPONENT> + +<CONNECTOR type="115" id="110" > +<cdparam x="407" y="65" /> +<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="108" /> +<P2 x="418" y="83" id="105" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="111" > +<cdparam x="418" y="123" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="418" y="123" id="106" /> +<P2 x="428" y="139" id="102" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> + +</TMLActivityDiagramPanel> + +</Modeling> + + + + +<Modeling type="TML Architecture" nameTab="Architecture" > +<TMLArchiDiagramPanel name="DIPLODOCUS architecture and mapping Diagram" minX="10" maxX="2500" minY="10" maxY="1500" attributes="0" masterClockFrequency="200" zoom="1.0" > +<CONNECTOR type="125" id="260" > +<cdparam x="331" y="391" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="{info}" /> +<P1 x="331" y="391" id="245" /> +<P2 x="484" y="366" id="217" /> +<AutomaticDrawing data="true" /> +<extraparam> +<info priority="0" /> +<spy value="false" /> +</extraparam> +</CONNECTOR> +<COMPONENT type="1100" id="235" > +<cdparam x="61" y="391" /> +<sizeparam width="360" height="287" 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="CPU0" value="name" /> +<TGConnectingPoint num="0" id="236" /> +<TGConnectingPoint num="1" id="237" /> +<TGConnectingPoint num="2" id="238" /> +<TGConnectingPoint num="3" id="239" /> +<TGConnectingPoint num="4" id="240" /> +<TGConnectingPoint num="5" id="241" /> +<TGConnectingPoint num="6" id="242" /> +<TGConnectingPoint num="7" id="243" /> +<TGConnectingPoint num="8" id="244" /> +<TGConnectingPoint num="9" id="245" /> +<TGConnectingPoint num="10" id="246" /> +<TGConnectingPoint num="11" id="247" /> +<TGConnectingPoint num="12" id="248" /> +<TGConnectingPoint num="13" id="249" /> +<TGConnectingPoint num="14" id="250" /> +<TGConnectingPoint num="15" id="251" /> +<TGConnectingPoint num="16" id="252" /> +<TGConnectingPoint num="17" id="253" /> +<TGConnectingPoint num="18" id="254" /> +<TGConnectingPoint num="19" id="255" /> +<TGConnectingPoint num="20" id="256" /> +<TGConnectingPoint num="21" id="257" /> +<TGConnectingPoint num="22" id="258" /> +<TGConnectingPoint num="23" id="259" /> +<extraparam> +<info stereotype="CPURR" nodeName="CPU0" /> +<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"/> +</extraparam> +</COMPONENT> +<SUBCOMPONENT type="1101" id="156" > +<father id="235" num="0" /> +<cdparam x="61" y="638" /> +<sizeparam width="149" height="40" minWidth="100" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="0" maxX="211" minY="0" maxY="247" /> +<infoparam name="TGComponent" value="Application::Task4" /> +<TGConnectingPoint num="0" id="148" /> +<TGConnectingPoint num="1" id="149" /> +<TGConnectingPoint num="2" id="150" /> +<TGConnectingPoint num="3" id="151" /> +<TGConnectingPoint num="4" id="152" /> +<TGConnectingPoint num="5" id="153" /> +<TGConnectingPoint num="6" id="154" /> +<TGConnectingPoint num="7" id="155" /> +<extraparam> +<info value="Application::Task4" taskName="Task4" referenceTaskName="Application" priority="0" operationMEC="Task4" fatherComponentMECType="0" /> +</extraparam> +</SUBCOMPONENT> +<SUBCOMPONENT type="1101" id="120" > +<father id="235" num="1" /> +<cdparam x="272" y="639" /> +<sizeparam width="149" height="39" minWidth="100" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="0" maxX="211" minY="0" maxY="248" /> +<infoparam name="TGComponent" value="Application::Task5" /> +<TGConnectingPoint num="0" id="112" /> +<TGConnectingPoint num="1" id="113" /> +<TGConnectingPoint num="2" id="114" /> +<TGConnectingPoint num="3" id="115" /> +<TGConnectingPoint num="4" id="116" /> +<TGConnectingPoint num="5" id="117" /> +<TGConnectingPoint num="6" id="118" /> +<TGConnectingPoint num="7" id="119" /> +<extraparam> +<info value="Application::Task5" taskName="Task5" referenceTaskName="Application" priority="0" operationMEC="Task5" fatherComponentMECType="0" /> +</extraparam> +</SUBCOMPONENT> +<SUBCOMPONENT type="1101" id="147" > +<father id="235" num="2" /> +<cdparam x="168" y="533" /> +<sizeparam width="149" height="40" minWidth="100" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="0" maxX="211" minY="0" maxY="247" /> +<infoparam name="TGComponent" value="Application::Task3" /> +<TGConnectingPoint num="0" id="139" /> +<TGConnectingPoint num="1" id="140" /> +<TGConnectingPoint num="2" id="141" /> +<TGConnectingPoint num="3" id="142" /> +<TGConnectingPoint num="4" id="143" /> +<TGConnectingPoint num="5" id="144" /> +<TGConnectingPoint num="6" id="145" /> +<TGConnectingPoint num="7" id="146" /> +<extraparam> +<info value="Application::Task3" taskName="Task3" referenceTaskName="Application" priority="0" operationMEC="Task3" fatherComponentMECType="0" /> +</extraparam> +</SUBCOMPONENT> +<SUBCOMPONENT type="1101" id="129" > +<father id="235" num="3" /> +<cdparam x="272" y="435" /> +<sizeparam width="149" height="40" minWidth="100" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="0" maxX="211" minY="0" maxY="247" /> +<infoparam name="TGComponent" value="Application::Task2" /> +<TGConnectingPoint num="0" id="121" /> +<TGConnectingPoint num="1" id="122" /> +<TGConnectingPoint num="2" id="123" /> +<TGConnectingPoint num="3" id="124" /> +<TGConnectingPoint num="4" id="125" /> +<TGConnectingPoint num="5" id="126" /> +<TGConnectingPoint num="6" id="127" /> +<TGConnectingPoint num="7" id="128" /> +<extraparam> +<info value="Application::Task2" taskName="Task2" referenceTaskName="Application" priority="0" operationMEC="Task2" fatherComponentMECType="0" /> +</extraparam> +</SUBCOMPONENT> +<SUBCOMPONENT type="1101" id="138" > +<father id="235" num="4" /> +<cdparam x="61" y="436" /> +<sizeparam width="149" height="40" minWidth="100" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="0" maxX="211" minY="0" maxY="247" /> +<infoparam name="TGComponent" value="Application::Task1" /> +<TGConnectingPoint num="0" id="130" /> +<TGConnectingPoint num="1" id="131" /> +<TGConnectingPoint num="2" id="132" /> +<TGConnectingPoint num="3" id="133" /> +<TGConnectingPoint num="4" id="134" /> +<TGConnectingPoint num="5" id="135" /> +<TGConnectingPoint num="6" id="136" /> +<TGConnectingPoint num="7" id="137" /> +<extraparam> +<info value="Application::Task1" taskName="Task1" referenceTaskName="Application" priority="0" operationMEC="Task1" fatherComponentMECType="0" /> +</extraparam> +</SUBCOMPONENT> + +<COMPONENT type="1105" id="206" > +<cdparam x="735" y="107" /> +<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="182" /> +<TGConnectingPoint num="1" id="183" /> +<TGConnectingPoint num="2" id="184" /> +<TGConnectingPoint num="3" id="185" /> +<TGConnectingPoint num="4" id="186" /> +<TGConnectingPoint num="5" id="187" /> +<TGConnectingPoint num="6" id="188" /> +<TGConnectingPoint num="7" id="189" /> +<TGConnectingPoint num="8" id="190" /> +<TGConnectingPoint num="9" id="191" /> +<TGConnectingPoint num="10" id="192" /> +<TGConnectingPoint num="11" id="193" /> +<TGConnectingPoint num="12" id="194" /> +<TGConnectingPoint num="13" id="195" /> +<TGConnectingPoint num="14" id="196" /> +<TGConnectingPoint num="15" id="197" /> +<TGConnectingPoint num="16" id="198" /> +<TGConnectingPoint num="17" id="199" /> +<TGConnectingPoint num="18" id="200" /> +<TGConnectingPoint num="19" id="201" /> +<TGConnectingPoint num="20" id="202" /> +<TGConnectingPoint num="21" id="203" /> +<TGConnectingPoint num="22" id="204" /> +<TGConnectingPoint num="23" id="205" /> +<extraparam> +<info stereotype="MEMORY" nodeName="Memory0" /> +<attributes byteDataSize="4" memorySize="1024" clockRatio="1" bufferType="0" /> +</extraparam> +</COMPONENT> + +<COMPONENT type="1102" id="231" > +<cdparam x="484" y="354" /> +<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="207" /> +<TGConnectingPoint num="1" id="208" /> +<TGConnectingPoint num="2" id="209" /> +<TGConnectingPoint num="3" id="210" /> +<TGConnectingPoint num="4" id="211" /> +<TGConnectingPoint num="5" id="212" /> +<TGConnectingPoint num="6" id="213" /> +<TGConnectingPoint num="7" id="214" /> +<TGConnectingPoint num="8" id="215" /> +<TGConnectingPoint num="9" id="216" /> +<TGConnectingPoint num="10" id="217" /> +<TGConnectingPoint num="11" id="218" /> +<TGConnectingPoint num="12" id="219" /> +<TGConnectingPoint num="13" id="220" /> +<TGConnectingPoint num="14" id="221" /> +<TGConnectingPoint num="15" id="222" /> +<TGConnectingPoint num="16" id="223" /> +<TGConnectingPoint num="17" id="224" /> +<TGConnectingPoint num="18" id="225" /> +<TGConnectingPoint num="19" id="226" /> +<TGConnectingPoint num="20" id="227" /> +<TGConnectingPoint num="21" id="228" /> +<TGConnectingPoint num="22" id="229" /> +<TGConnectingPoint num="23" id="230" /> +<extraparam> +<info stereotype="BUS-RR" nodeName="Bus0" /> +<attributes byteDataSize="4" arbitrationPolicy="0" sliceTime="10000" pipelineSize="1" clockRatio="1" privacy="0" referenceAttack="null" /> +</extraparam> +</COMPONENT> + +<CONNECTOR type="125" id="233" > +<cdparam x="759" y="279" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="{info}" /> +<P1 x="735" y="307" id="187" /> +<P2 x="671" y="354" id="216" /> +<AutomaticDrawing data="true" /> +<extraparam> +<info priority="0" /> +<spy value="false" /> +</extraparam> +</CONNECTOR> + +</TMLArchiDiagramPanel> + +</Modeling> + + + + +</TURTLEGMODELING> \ No newline at end of file diff --git a/ttool/src/test/resources/tmltranslator/simulator/parseFPGA_HTML.xml b/ttool/src/test/resources/tmltranslator/simulator/parseFPGA_HTML.xml new file mode 100644 index 0000000000000000000000000000000000000000..5f548cb914cb5d68f415d33f9d4e9c88157805a1 --- /dev/null +++ b/ttool/src/test/resources/tmltranslator/simulator/parseFPGA_HTML.xml @@ -0,0 +1,731 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<TURTLEGMODELING version="1.0beta" ANIMATE_INTERACTIVE_SIMULATION="true" ACTIVATE_PENALTIES="false" UPDATE_INFORMATION_DIPLO_SIM="true" 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$Task1$Task2$Task3$Task4$Task5" > +<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="357" y="686" /> +<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="357" y="686" id="22" /> +<P2 x="635" y="683" id="11" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<COMPONENT type="1202" id="10" > +<cdparam x="628" y="177" /> +<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="Task5" /> +<TGConnectingPoint num="0" id="2" /> +<TGConnectingPoint num="1" id="3" /> +<TGConnectingPoint num="2" id="4" /> +<TGConnectingPoint num="3" id="5" /> +<TGConnectingPoint num="4" id="6" /> +<TGConnectingPoint num="5" id="7" /> +<TGConnectingPoint num="6" id="8" /> +<TGConnectingPoint num="7" id="9" /> +<extraparam> +<Data isAttacker="No" daemon="false" Operation="" /> +</extraparam> +</COMPONENT> + +<COMPONENT type="1202" id="21" > +<cdparam x="648" y="615" /> +<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="Task4" /> +<TGConnectingPoint num="0" id="13" /> +<TGConnectingPoint num="1" id="14" /> +<TGConnectingPoint num="2" id="15" /> +<TGConnectingPoint num="3" id="16" /> +<TGConnectingPoint num="4" id="17" /> +<TGConnectingPoint num="5" id="18" /> +<TGConnectingPoint num="6" id="19" /> +<TGConnectingPoint num="7" id="20" /> +<extraparam> +<Data isAttacker="No" daemon="false" Operation="" /> +</extraparam> +</COMPONENT> +<SUBCOMPONENT type="1203" id="12" > +<father id="21" num="0" /> +<cdparam x="635" y="670" /> +<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="Channel ch" /> +<TGConnectingPoint num="0" id="11" /> +<extraparam> +<Prop commName="ch" 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="-1" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +</extraparam> +</SUBCOMPONENT> + +<COMPONENT type="1202" id="32" > +<cdparam x="144" y="606" /> +<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="Task3" /> +<TGConnectingPoint num="0" id="24" /> +<TGConnectingPoint num="1" id="25" /> +<TGConnectingPoint num="2" id="26" /> +<TGConnectingPoint num="3" id="27" /> +<TGConnectingPoint num="4" id="28" /> +<TGConnectingPoint num="5" id="29" /> +<TGConnectingPoint num="6" id="30" /> +<TGConnectingPoint num="7" id="31" /> +<extraparam> +<Data isAttacker="No" daemon="false" Operation="" /> +</extraparam> +</COMPONENT> +<SUBCOMPONENT type="1203" id="23" > +<father id="32" num="0" /> +<cdparam x="331" y="673" /> +<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="Channel ch" /> +<TGConnectingPoint num="0" id="22" /> +<extraparam> +<Prop commName="ch" 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="-1" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +<Type type="0" typeOther="" /> +</extraparam> +</SUBCOMPONENT> + +<COMPONENT type="1202" id="41" > +<cdparam x="145" y="119" /> +<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="Task1" /> +<TGConnectingPoint num="0" id="33" /> +<TGConnectingPoint num="1" id="34" /> +<TGConnectingPoint num="2" id="35" /> +<TGConnectingPoint num="3" id="36" /> +<TGConnectingPoint num="4" id="37" /> +<TGConnectingPoint num="5" id="38" /> +<TGConnectingPoint num="6" id="39" /> +<TGConnectingPoint num="7" id="40" /> +<extraparam> +<Data isAttacker="No" daemon="false" Operation="" /> +</extraparam> +</COMPONENT> + +<COMPONENT type="1202" id="50" > +<cdparam x="151" y="358" /> +<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="Task2" /> +<TGConnectingPoint num="0" id="42" /> +<TGConnectingPoint num="1" id="43" /> +<TGConnectingPoint num="2" id="44" /> +<TGConnectingPoint num="3" id="45" /> +<TGConnectingPoint num="4" id="46" /> +<TGConnectingPoint num="5" id="47" /> +<TGConnectingPoint num="6" id="48" /> +<TGConnectingPoint num="7" id="49" /> +<extraparam> +<Data isAttacker="No" daemon="false" Operation="" /> +</extraparam> +</COMPONENT> + + +</TMLComponentTaskDiagramPanel> + +<TMLActivityDiagramPanel name="Task1" minX="10" maxX="2500" minY="10" maxY="1500" zoom="1.0" > +<COMPONENT type="1001" id="52" > +<cdparam x="408" y="191" /> +<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="51" /> +</COMPONENT> + +<COMPONENT type="1013" id="56" > +<cdparam x="404" y="114" /> +<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="54" /> +<TGConnectingPoint num="1" id="55" /> +</COMPONENT> +<SUBCOMPONENT type="-1" id="53" > +<father id="56" num="0" /> +<cdparam x="419" y="134" /> +<sizeparam width="8" 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="5" /> +</SUBCOMPONENT> + +<COMPONENT type="1000" id="58" > +<cdparam x="400" y="50" /> +<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="57" /> +</COMPONENT> + +<CONNECTOR type="115" id="59" > +<cdparam x="407" y="65" /> +<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="57" /> +<P2 x="409" y="109" id="54" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="60" > +<cdparam x="409" y="149" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="409" y="149" id="55" /> +<P2 x="418" y="186" id="51" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> + +</TMLActivityDiagramPanel> + +<TMLActivityDiagramPanel name="Task2" minX="10" maxX="2500" minY="10" maxY="1500" zoom="1.0" > +<COMPONENT type="1001" id="62" > +<cdparam x="418" y="144" /> +<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="61" /> +</COMPONENT> + +<COMPONENT type="1020" id="66" > +<cdparam x="378" y="98" /> +<sizeparam width="90" 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="for loop" value="5" /> +<TGConnectingPoint num="0" id="63" /> +<TGConnectingPoint num="1" id="64" /> +<TGConnectingPoint num="2" id="65" /> +</COMPONENT> + +<COMPONENT type="1026" id="70" > +<cdparam x="563" y="159" /> +<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="delay" value="null" /> +<TGConnectingPoint num="0" id="68" /> +<TGConnectingPoint num="1" id="69" /> +</COMPONENT> +<SUBCOMPONENT type="-1" id="67" > +<father id="70" num="0" /> +<cdparam x="578" y="179" /> +<sizeparam width="28" 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="5 ns" /> +<extraparam> +<TimeDelay minDelay="5" maxDelay="nope" hasMaxDelay="false" isActiveDelay="false" unit="ns" /> +</extraparam> +</SUBCOMPONENT> + +<COMPONENT type="1001" id="72" > +<cdparam x="601" y="341" /> +<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="71" /> +</COMPONENT> + +<COMPONENT type="1013" id="76" > +<cdparam x="574" y="233" /> +<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="74" /> +<TGConnectingPoint num="1" id="75" /> +</COMPONENT> +<SUBCOMPONENT type="-1" id="73" > +<father id="76" num="0" /> +<cdparam x="589" y="253" /> +<sizeparam width="8" 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="5" /> +</SUBCOMPONENT> + +<COMPONENT type="1000" id="78" > +<cdparam x="361" y="57" /> +<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="77" /> +</COMPONENT> + +<CONNECTOR type="115" id="79" > +<cdparam x="466" y="112" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="468" y="112" id="64" /> +<P2 x="568" y="154" id="68" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="80" > +<cdparam x="555" y="158" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="568" y="194" id="69" /> +<P2 x="579" y="228" id="74" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="81" > +<cdparam x="407" y="65" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="368" y="77" id="77" /> +<P2 x="423" y="93" id="63" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="82" > +<cdparam x="551" y="166" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="579" y="268" id="75" /> +<P2 x="611" y="336" id="71" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="83" > +<cdparam x="423" y="123" /> +<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="123" id="65" /> +<P2 x="428" y="139" id="61" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> + +</TMLActivityDiagramPanel> + +<TMLActivityDiagramPanel name="Task3" minX="10" maxX="2500" minY="10" maxY="1500" zoom="1.0" > +<COMPONENT type="1001" id="85" > +<cdparam x="392" y="170" /> +<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="84" /> +</COMPONENT> + +<COMPONENT type="1006" id="88" > +<cdparam x="369" y="103" /> +<sizeparam width="71" 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="ch(5)" /> +<TGConnectingPoint num="0" id="86" /> +<TGConnectingPoint num="1" id="87" /> +<extraparam> +<Data channelName="ch" nbOfSamples="5" secPattern="" isAttacker="No" isEncForm="Yes" /> +</extraparam> +</COMPONENT> + +<COMPONENT type="1000" id="90" > +<cdparam x="400" y="50" /> +<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="89" /> +</COMPONENT> + +<CONNECTOR type="115" id="91" > +<cdparam x="407" y="65" /> +<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="89" /> +<P2 x="404" y="98" id="86" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="92" > +<cdparam x="404" y="128" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="404" y="128" id="87" /> +<P2 x="402" y="165" id="84" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> + +</TMLActivityDiagramPanel> + +<TMLActivityDiagramPanel name="Task4" minX="10" maxX="2500" minY="10" maxY="1500" zoom="1.0" > +<COMPONENT type="1001" id="94" > +<cdparam x="393" y="163" /> +<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="93" /> +</COMPONENT> + +<COMPONENT type="1009" id="97" > +<cdparam x="376" y="108" /> +<sizeparam width="75" 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="ch(5) " /> +<TGConnectingPoint num="0" id="95" /> +<TGConnectingPoint num="1" id="96" /> +<extraparam> +<Data channelName="ch" nbOfSamples="5" secPattern="" isAttacker="No" isEncForm="Yes" /> +</extraparam> +</COMPONENT> + +<COMPONENT type="1000" id="99" > +<cdparam x="400" y="50" /> +<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="98" /> +</COMPONENT> + +<CONNECTOR type="115" id="100" > +<cdparam x="407" y="65" /> +<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="98" /> +<P2 x="413" y="103" id="95" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="101" > +<cdparam x="413" y="133" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="413" y="133" id="96" /> +<P2 x="403" y="158" id="93" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> + +</TMLActivityDiagramPanel> + +<TMLActivityDiagramPanel name="Task5" minX="10" maxX="2500" minY="10" maxY="1500" zoom="1.0" > +<COMPONENT type="1001" id="103" > +<cdparam x="418" y="144" /> +<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="102" /> +</COMPONENT> + +<COMPONENT type="1013" id="107" > +<cdparam x="413" y="88" /> +<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="105" /> +<TGConnectingPoint num="1" id="106" /> +</COMPONENT> +<SUBCOMPONENT type="-1" id="104" > +<father id="107" num="0" /> +<cdparam x="428" y="108" /> +<sizeparam width="8" 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="5" /> +</SUBCOMPONENT> + +<COMPONENT type="1000" id="109" > +<cdparam x="400" y="50" /> +<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" /> +</COMPONENT> + +<CONNECTOR type="115" id="110" > +<cdparam x="407" y="65" /> +<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="108" /> +<P2 x="418" y="83" id="105" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> +<CONNECTOR type="115" id="111" > +<cdparam x="418" y="123" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="null" /> +<P1 x="418" y="123" id="106" /> +<P2 x="428" y="139" id="102" /> +<AutomaticDrawing data="true" /> +</CONNECTOR> + +</TMLActivityDiagramPanel> + +</Modeling> + + + + +<Modeling type="TML Architecture" nameTab="Architecture" > +<TMLArchiDiagramPanel name="DIPLODOCUS architecture and mapping Diagram" minX="10" maxX="2500" minY="10" maxY="1500" attributes="0" masterClockFrequency="200" zoom="1.0" > +<COMPONENT type="1116" id="181" > +<cdparam x="116" y="61" /> +<sizeparam width="362" height="255" 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="FPGA0" value="name" /> +<TGConnectingPoint num="0" id="157" /> +<TGConnectingPoint num="1" id="158" /> +<TGConnectingPoint num="2" id="159" /> +<TGConnectingPoint num="3" id="160" /> +<TGConnectingPoint num="4" id="161" /> +<TGConnectingPoint num="5" id="162" /> +<TGConnectingPoint num="6" id="163" /> +<TGConnectingPoint num="7" id="164" /> +<TGConnectingPoint num="8" id="165" /> +<TGConnectingPoint num="9" id="166" /> +<TGConnectingPoint num="10" id="167" /> +<TGConnectingPoint num="11" id="168" /> +<TGConnectingPoint num="12" id="169" /> +<TGConnectingPoint num="13" id="170" /> +<TGConnectingPoint num="14" id="171" /> +<TGConnectingPoint num="15" id="172" /> +<TGConnectingPoint num="16" id="173" /> +<TGConnectingPoint num="17" id="174" /> +<TGConnectingPoint num="18" id="175" /> +<TGConnectingPoint num="19" id="176" /> +<TGConnectingPoint num="20" id="177" /> +<TGConnectingPoint num="21" id="178" /> +<TGConnectingPoint num="22" id="179" /> +<TGConnectingPoint num="23" id="180" /> +<extraparam> +<info stereotype="FPGA" nodeName="FPGA0" /> +<attributes capacity="100" byteDataSize="4" mappingPenalty="0" reconfigurationTime="50" goIdleTime="10" maxConsecutiveIdleCycles="10" execiTime="1" execcTime="1" clockRatio="1" operation ="" scheduling ="Task1,Task2;Task4;Task3;Task5" /> +</extraparam> +</COMPONENT> +<SUBCOMPONENT type="1101" id="120" > +<father id="181" num="0" /> +<cdparam x="329" y="277" /> +<sizeparam width="149" height="39" minWidth="100" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="0" maxX="213" minY="0" maxY="216" /> +<infoparam name="TGComponent" value="Application::Task5" /> +<TGConnectingPoint num="0" id="112" /> +<TGConnectingPoint num="1" id="113" /> +<TGConnectingPoint num="2" id="114" /> +<TGConnectingPoint num="3" id="115" /> +<TGConnectingPoint num="4" id="116" /> +<TGConnectingPoint num="5" id="117" /> +<TGConnectingPoint num="6" id="118" /> +<TGConnectingPoint num="7" id="119" /> +<extraparam> +<info value="Application::Task5" taskName="Task5" referenceTaskName="Application" priority="0" operationMEC="Task5" fatherComponentMECType="0" /> +</extraparam> +</SUBCOMPONENT> +<SUBCOMPONENT type="1101" id="129" > +<father id="181" num="1" /> +<cdparam x="329" y="120" /> +<sizeparam width="149" height="40" minWidth="100" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="0" maxX="213" minY="0" maxY="215" /> +<infoparam name="TGComponent" value="Application::Task2" /> +<TGConnectingPoint num="0" id="121" /> +<TGConnectingPoint num="1" id="122" /> +<TGConnectingPoint num="2" id="123" /> +<TGConnectingPoint num="3" id="124" /> +<TGConnectingPoint num="4" id="125" /> +<TGConnectingPoint num="5" id="126" /> +<TGConnectingPoint num="6" id="127" /> +<TGConnectingPoint num="7" id="128" /> +<extraparam> +<info value="Application::Task2" taskName="Task2" referenceTaskName="Application" priority="0" operationMEC="Task2" fatherComponentMECType="0" /> +</extraparam> +</SUBCOMPONENT> +<SUBCOMPONENT type="1101" id="138" > +<father id="181" num="2" /> +<cdparam x="117" y="120" /> +<sizeparam width="149" height="40" minWidth="100" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="0" maxX="213" minY="0" maxY="215" /> +<infoparam name="TGComponent" value="Application::Task1" /> +<TGConnectingPoint num="0" id="130" /> +<TGConnectingPoint num="1" id="131" /> +<TGConnectingPoint num="2" id="132" /> +<TGConnectingPoint num="3" id="133" /> +<TGConnectingPoint num="4" id="134" /> +<TGConnectingPoint num="5" id="135" /> +<TGConnectingPoint num="6" id="136" /> +<TGConnectingPoint num="7" id="137" /> +<extraparam> +<info value="Application::Task1" taskName="Task1" referenceTaskName="Application" priority="0" operationMEC="Task1" fatherComponentMECType="0" /> +</extraparam> +</SUBCOMPONENT> +<SUBCOMPONENT type="1101" id="147" > +<father id="181" num="3" /> +<cdparam x="219" y="189" /> +<sizeparam width="149" height="40" minWidth="100" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="0" maxX="213" minY="0" maxY="215" /> +<infoparam name="TGComponent" value="Application::Task3" /> +<TGConnectingPoint num="0" id="139" /> +<TGConnectingPoint num="1" id="140" /> +<TGConnectingPoint num="2" id="141" /> +<TGConnectingPoint num="3" id="142" /> +<TGConnectingPoint num="4" id="143" /> +<TGConnectingPoint num="5" id="144" /> +<TGConnectingPoint num="6" id="145" /> +<TGConnectingPoint num="7" id="146" /> +<extraparam> +<info value="Application::Task3" taskName="Task3" referenceTaskName="Application" priority="0" operationMEC="Task3" fatherComponentMECType="0" /> +</extraparam> +</SUBCOMPONENT> +<SUBCOMPONENT type="1101" id="156" > +<father id="181" num="4" /> +<cdparam x="116" y="276" /> +<sizeparam width="149" height="40" minWidth="100" minHeight="1" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="0" maxX="213" minY="0" maxY="215" /> +<infoparam name="TGComponent" value="Application::Task4" /> +<TGConnectingPoint num="0" id="148" /> +<TGConnectingPoint num="1" id="149" /> +<TGConnectingPoint num="2" id="150" /> +<TGConnectingPoint num="3" id="151" /> +<TGConnectingPoint num="4" id="152" /> +<TGConnectingPoint num="5" id="153" /> +<TGConnectingPoint num="6" id="154" /> +<TGConnectingPoint num="7" id="155" /> +<extraparam> +<info value="Application::Task4" taskName="Task4" referenceTaskName="Application" priority="0" operationMEC="Task4" fatherComponentMECType="0" /> +</extraparam> +</SUBCOMPONENT> + +<COMPONENT type="1105" id="206" > +<cdparam x="735" y="107" /> +<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="182" /> +<TGConnectingPoint num="1" id="183" /> +<TGConnectingPoint num="2" id="184" /> +<TGConnectingPoint num="3" id="185" /> +<TGConnectingPoint num="4" id="186" /> +<TGConnectingPoint num="5" id="187" /> +<TGConnectingPoint num="6" id="188" /> +<TGConnectingPoint num="7" id="189" /> +<TGConnectingPoint num="8" id="190" /> +<TGConnectingPoint num="9" id="191" /> +<TGConnectingPoint num="10" id="192" /> +<TGConnectingPoint num="11" id="193" /> +<TGConnectingPoint num="12" id="194" /> +<TGConnectingPoint num="13" id="195" /> +<TGConnectingPoint num="14" id="196" /> +<TGConnectingPoint num="15" id="197" /> +<TGConnectingPoint num="16" id="198" /> +<TGConnectingPoint num="17" id="199" /> +<TGConnectingPoint num="18" id="200" /> +<TGConnectingPoint num="19" id="201" /> +<TGConnectingPoint num="20" id="202" /> +<TGConnectingPoint num="21" id="203" /> +<TGConnectingPoint num="22" id="204" /> +<TGConnectingPoint num="23" id="205" /> +<extraparam> +<info stereotype="MEMORY" nodeName="Memory0" /> +<attributes byteDataSize="4" memorySize="1024" clockRatio="1" bufferType="0" /> +</extraparam> +</COMPONENT> + +<COMPONENT type="1102" id="231" > +<cdparam x="484" y="354" /> +<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="207" /> +<TGConnectingPoint num="1" id="208" /> +<TGConnectingPoint num="2" id="209" /> +<TGConnectingPoint num="3" id="210" /> +<TGConnectingPoint num="4" id="211" /> +<TGConnectingPoint num="5" id="212" /> +<TGConnectingPoint num="6" id="213" /> +<TGConnectingPoint num="7" id="214" /> +<TGConnectingPoint num="8" id="215" /> +<TGConnectingPoint num="9" id="216" /> +<TGConnectingPoint num="10" id="217" /> +<TGConnectingPoint num="11" id="218" /> +<TGConnectingPoint num="12" id="219" /> +<TGConnectingPoint num="13" id="220" /> +<TGConnectingPoint num="14" id="221" /> +<TGConnectingPoint num="15" id="222" /> +<TGConnectingPoint num="16" id="223" /> +<TGConnectingPoint num="17" id="224" /> +<TGConnectingPoint num="18" id="225" /> +<TGConnectingPoint num="19" id="226" /> +<TGConnectingPoint num="20" id="227" /> +<TGConnectingPoint num="21" id="228" /> +<TGConnectingPoint num="22" id="229" /> +<TGConnectingPoint num="23" id="230" /> +<extraparam> +<info stereotype="BUS-RR" nodeName="Bus0" /> +<attributes byteDataSize="4" arbitrationPolicy="0" sliceTime="10000" pipelineSize="1" clockRatio="1" privacy="0" referenceAttack="null" /> +</extraparam> +</COMPONENT> + +<CONNECTOR type="125" id="232" > +<cdparam x="471" y="225" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="{info}" /> +<P1 x="478" y="252" id="170" /> +<P2 x="546" y="354" id="215" /> +<AutomaticDrawing data="true" /> +<extraparam> +<info priority="0" /> +<spy value="false" /> +</extraparam> +</CONNECTOR> +<CONNECTOR type="125" id="233" > +<cdparam x="759" y="279" /> +<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<infoparam name="connector" value="{info}" /> +<P1 x="735" y="307" id="187" /> +<P2 x="671" y="354" id="216" /> +<AutomaticDrawing data="true" /> +<extraparam> +<info priority="0" /> +<spy value="false" /> +</extraparam> +</CONNECTOR> + +</TMLArchiDiagramPanel> + +</Modeling> + + + + +</TURTLEGMODELING> \ No newline at end of file