diff --git a/simulators/c++2/src_simulator/sim/Simulator.cpp b/simulators/c++2/src_simulator/sim/Simulator.cpp index 2dc94da3f2571eaccdafa59d9f268ed333ab19b7..8919a58c45337b15594b6a782072616842a2612c 100644 --- a/simulators/c++2/src_simulator/sim/Simulator.cpp +++ b/simulators/c++2/src_simulator/sim/Simulator.cpp @@ -1310,6 +1310,21 @@ ServerIF* Simulator::run(int iLen, char ** iArgs){ return 0; } +bool Simulator::getDaemonTaskStatus(SimComponents* __simComp) { + int tempDaemon = 0; + if (!__simComp->getNonDaemonTaskList().empty()) { + for (TaskList::const_iterator i=__simComp->getNonDaemonTaskList().begin(); i != __simComp->getNonDaemonTaskList().end(); ++i) { + if((*i)->getState()==3){ + tempDaemon ++; + } + } + } + if (tempDaemon < __simComp->getNonDaemonTaskList().size()) { + return false; + } + return true; +} + void Simulator::decodeCommand(std::string iCmd, std::ostream& iXmlOutStream){ std::cout<<"decodeCommand"<<std::endl; //std::cout << "Not crashed. I: " << iCmd << std::endl; @@ -1355,15 +1370,7 @@ void Simulator::decodeCommand(std::string iCmd, std::ostream& iXmlOutStream){ std::cout << "Run to next breakpoint." << std::endl; aGlobMsg << TAG_MSGo << "Run to next breakpoint" << TAG_MSGc << std::endl; _simTerm=runToNextBreakpoint(oLastTrans); - int tempDaemon = 0; - if (!_simComp->getNonDaemonTaskList().empty()) { - for (TaskList::const_iterator i=_simComp->getNonDaemonTaskList().begin(); i != _simComp->getNonDaemonTaskList().end(); ++i) { - if((*i)->getState()==3){ - tempDaemon ++; - } - } - } - if (tempDaemon < _simComp->getNonDaemonTaskList().size()) { + if (!getDaemonTaskStatus(_simComp)) { _simTerm = false; } std::cout << "End Run to next breakpoint." << std::endl; @@ -1382,6 +1389,9 @@ void Simulator::decodeCommand(std::string iCmd, std::ostream& iXmlOutStream){ //_currCmdListener=new RunXTransactions(_simComp,aParam2); aGlobMsg << TAG_MSGo << "Created listener run " << aParam2 << " transactions" << TAG_MSGc << std::endl; _simTerm = runXTransactions(aParam2, oLastTrans); + if (!getDaemonTaskStatus(_simComp)) { + _simTerm = false; + } std::cout << "Run x transactions." << std::endl; break; case 3: //Run up to command x @@ -1396,6 +1406,9 @@ void Simulator::decodeCommand(std::string iCmd, std::ostream& iXmlOutStream){ //_currCmdListener=new RunXCommands(_simComp,aParam2); aGlobMsg << TAG_MSGo << "Created listener run " << aParam2 << " commands" << TAG_MSGc << std::endl; _simTerm = runXCommands(aParam2, oLastTrans); + if (!getDaemonTaskStatus(_simComp)) { + _simTerm = false; + } std::cout << "End Run x commands." << std::endl; break; case 5: //Run up to time x @@ -1404,6 +1417,9 @@ void Simulator::decodeCommand(std::string iCmd, std::ostream& iXmlOutStream){ //_currCmdListener=new RunXTimeUnits(_simComp,aParam2); aGlobMsg << TAG_MSGo << "Created listener run to time " << aParam2 << TAG_MSGc << std::endl; _simTerm = runTillTimeX(aParam2, oLastTrans); + if (!getDaemonTaskStatus(_simComp)) { + _simTerm = false; + } std::cout << "End Run to time x." << std::endl; break; case 6: //Run for x time units @@ -1412,6 +1428,9 @@ void Simulator::decodeCommand(std::string iCmd, std::ostream& iXmlOutStream){ //_currCmdListener=new RunXTimeUnits(_simComp,aParam2+SchedulableDevice::getSimulatedTime()); aGlobMsg << TAG_MSGo << "Created listener run " << aParam2 << " time units" << TAG_MSGc << std::endl; _simTerm = runXTimeUnits(aParam2, oLastTrans); + if (!getDaemonTaskStatus(_simComp)) { + _simTerm = false; + } std::cout << "End Run for x time units." << std::endl; break; case 7: {//Explore Tree @@ -1496,6 +1515,9 @@ void Simulator::decodeCommand(std::string iCmd, std::ostream& iXmlOutStream){ //_currCmdListener=new RunTillTransOnDevice(_simComp, aSubject); aGlobMsg << TAG_MSGo << "Created listener on Bus " << aStrParam << TAG_MSGc << std::endl; _simTerm=runToBusTrans(aBus, oLastTrans); + if (!getDaemonTaskStatus(_simComp)) { + _simTerm = false; + } }else{ aGlobMsg << TAG_MSGo << MSG_CMPNFOUND << TAG_MSGc << std::endl; anErrorCode=2; @@ -1512,6 +1534,9 @@ void Simulator::decodeCommand(std::string iCmd, std::ostream& iXmlOutStream){ //_currCmdListener=new RunTillTransOnDevice(_simComp, aSubject); aGlobMsg << TAG_MSGo << "Created listener on CPU " << aStrParam << TAG_MSGc << std::endl; _simTerm=runToCPUTrans(aCPU, oLastTrans); + if (!getDaemonTaskStatus(_simComp)) { + _simTerm = false; + } }else{ aGlobMsg << TAG_MSGo << MSG_CMPNFOUND << TAG_MSGc << std::endl; anErrorCode=2; @@ -1527,6 +1552,9 @@ void Simulator::decodeCommand(std::string iCmd, std::ostream& iXmlOutStream){ if (aTask!=0){ aGlobMsg << TAG_MSGo << "Created listener on Task " << aStrParam << TAG_MSGc << std::endl; _simTerm=runToTaskTrans(aTask, oLastTrans); + if (!getDaemonTaskStatus(_simComp)) { + _simTerm = false; + } //_currCmdListener=new RunTillTransOnDevice(_simComp, aSubject); }else{ @@ -1545,6 +1573,9 @@ void Simulator::decodeCommand(std::string iCmd, std::ostream& iXmlOutStream){ //_currCmdListener=new RunTillTransOnDevice(_simComp, aSubject); aGlobMsg << TAG_MSGo << "Created listener on Slave " << aStrParam << TAG_MSGc << std::endl; _simTerm=runToSlaveTrans(aSlave, oLastTrans); + if (!getDaemonTaskStatus(_simComp)) { + _simTerm = false; + } }else{ aGlobMsg << TAG_MSGo << MSG_CMPNFOUND << TAG_MSGc << std::endl; anErrorCode=2; @@ -1561,6 +1592,9 @@ void Simulator::decodeCommand(std::string iCmd, std::ostream& iXmlOutStream){ //_currCmdListener=new RunTillTransOnDevice(_simComp, aSubject); aGlobMsg << TAG_MSGo << "Created listener on Channel " << aStrParam << TAG_MSGc << std::endl; _simTerm=runToChannelTrans(aChannel, oLastTrans); + if (!getDaemonTaskStatus(_simComp)) { + _simTerm = false; + } }else{ aGlobMsg << TAG_MSGo << MSG_CMPNFOUND << TAG_MSGc << std::endl; anErrorCode=2; @@ -1571,6 +1605,9 @@ void Simulator::decodeCommand(std::string iCmd, std::ostream& iXmlOutStream){ case 13:{//Run to next random choice command std::cout << "Run to next random command." << std::endl; _simTerm=runToNextRandomCommand(oLastTrans); + if (!getDaemonTaskStatus(_simComp)) { + _simTerm = false; + } std::cout << "End Run to next random choice command." << std::endl; break; } @@ -1605,6 +1642,9 @@ void Simulator::decodeCommand(std::string iCmd, std::ostream& iXmlOutStream){ //_currCmdListener=new RunTillTransOnDevice(_simComp, aSubject); aGlobMsg << TAG_MSGo << "Created listener on FPGA " << aStrParam << TAG_MSGc << std::endl; _simTerm=runToCPUTrans(aFPGA, oLastTrans); + if (!getDaemonTaskStatus(_simComp)) { + _simTerm = false; + } }else{ aGlobMsg << TAG_MSGo << MSG_CMPNFOUND << TAG_MSGc << std::endl; anErrorCode=2; diff --git a/simulators/c++2/src_simulator/sim/Simulator.h b/simulators/c++2/src_simulator/sim/Simulator.h index 592ab1288b022a25bf0518ad1d417f0fc945523a..b5e842bc5a09a6205f523362114878c22cbd05ee 100644 --- a/simulators/c++2/src_simulator/sim/Simulator.h +++ b/simulators/c++2/src_simulator/sim/Simulator.h @@ -267,6 +267,8 @@ public: */ void schedule2TXT(std::string& iTraceFileName) const; + bool getDaemonTaskStatus(SimComponents* __simComp); + void schedule2XML(std::ostringstream& glob,std::string& iTraceFileName) const; /** \param glob Stream on which the XML answer shall be send to diff --git a/ttool/src/test/java/tmltranslator/CommonMethods.java b/ttool/src/test/java/tmltranslator/CommonMethods.java new file mode 100644 index 0000000000000000000000000000000000000000..088d540a3e653c646757a328007ece6840d79a05 --- /dev/null +++ b/ttool/src/test/java/tmltranslator/CommonMethods.java @@ -0,0 +1,44 @@ +package tmltranslator; + +import java.io.BufferedReader; +import java.io.FileReader; + +public class CommonMethods { + + public static boolean compareTextFile (String filePath1, String filePath2) throws Exception { + BufferedReader reader1 = new BufferedReader(new FileReader(filePath1)); + + BufferedReader reader2 = new BufferedReader(new FileReader(filePath2)); + + String line1 = reader1.readLine(); + + String line2 = reader2.readLine(); + + boolean areEqual = true; + + int lineNum = 1; + + while (line1 != null || line2 != null) { + if (line1 == null || line2 == null) { + areEqual = false; + break; + } else if (!line1.equalsIgnoreCase(line2)) { + areEqual = false; + break; + } + line1 = reader1.readLine(); + line2 = reader2.readLine(); + lineNum++; + } + + if (areEqual) { + System.out.println("Two files have same content."); + } else { + System.out.println("Two files have different content. They differ at line " + lineNum); + System.out.println("File1 has " + line1 + " and File2 has " + line2 + " at line " + lineNum); + } + reader1.close(); + reader2.close(); + return areEqual; + } +} diff --git a/ttool/src/test/java/tmltranslator/DiplodocusSimulatorTest.java b/ttool/src/test/java/tmltranslator/DiplodocusSimulatorTest.java index 6473e7974e5a5863aa16ab62f689e7c26e51aabf..0bd5b204e352c8099046e401990bf6c88e981358 100644 --- a/ttool/src/test/java/tmltranslator/DiplodocusSimulatorTest.java +++ b/ttool/src/test/java/tmltranslator/DiplodocusSimulatorTest.java @@ -45,6 +45,14 @@ public class DiplodocusSimulatorTest extends AbstractUITest { final String MODELS_DAEMON_RTNB = "testDaemon"; final int [] DAEMON_RTNBP_1 = {16, 15, 205, 205}; final int [] DAEMON_RTNBP_2 = {28, 27, 408, 408}; + // model for general simulation commands + final String MODELS_DAEMON_GENERAL_COMMANDS = "testDaemon"; + final String GENERAL_RUN_TO_TIME_X = getBaseResourcesDir() + "tmltranslator/expected/expected_run_to_time_x.txt"; // 1 5 + final String GENERAL_RUN_X_TIME_UNITS = getBaseResourcesDir() + "tmltranslator/expected/expected_run_x_time_units.txt"; // 1 6 + final String GENERAL_RUN_X_TRANSACTIONS = getBaseResourcesDir() + "tmltranslator/expected/expected_run_x_transactions.txt"; // 1 2 + final String GENERAL_RUN_X_COMMANDS = getBaseResourcesDir() + "tmltranslator/expected/expected_run_x_commands.txt"; // 1 4 + + private String SIM_DIR; @@ -585,4 +593,184 @@ public class DiplodocusSimulatorTest extends AbstractUITest { System.out.println("executing: maxvalue of " + s + " " + maxValue); assertTrue(DAEMON_RTNBP_2[3] == maxValue); } + + @Test + public void testGeneralSimulationCommands() throws Exception { + String s = MODELS_DAEMON_GENERAL_COMMANDS; + SIM_DIR = DIR_GEN + s + "_general_commands/"; + 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 { + // run to time x + String[] params = new String[3]; + + params[0] = "./" + SIM_DIR + "run.x"; + params[1] = "-cmd"; + params[2] = "11 4 21; 1 0; 1 5 3; 1 5 3; 7 2" + graphPath + "_run_to_time_x"; + 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); + } + + //run x time units + params = new String[3]; + + params[0] = "./" + SIM_DIR + "run.x"; + params[1] = "-cmd"; + params[2] = "11 4 21; 1 0; 1 6 3; 1 6 3; 7 2 " + graphPath + "_run_x_time_units"; + 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 second case: " + str); + } + + //run x transactions + params = new String[3]; + + params[0] = "./" + SIM_DIR + "run.x"; + params[1] = "-cmd"; + params[2] = "11 4 21; 1 0; 1 2 3; 1 2 3; 1 2 3; 7 2 " + graphPath + "_run_x_transactions"; + 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 second case: " + str); + } + + //run x commands + params = new String[3]; + + params[0] = "./" + SIM_DIR + "run.x"; + params[1] = "-cmd"; + params[2] = "11 4 21; 1 0; 1 4 3; 1 4 4; 7 2 " + graphPath + "_run_x_commands"; + 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 second case: " + str); + } + } catch (Exception e) { + // Probably make is not installed + System.out.println("FAILED: executing simulation"); + return; + } + assertTrue(CommonMethods.compareTextFile(graphPath + "_run_to_time_x.txt",GENERAL_RUN_TO_TIME_X)); + assertTrue(CommonMethods.compareTextFile(graphPath + "_run_x_time_units.txt",GENERAL_RUN_X_TIME_UNITS)); + assertTrue(CommonMethods.compareTextFile(graphPath + "_run_x_transactions.txt",GENERAL_RUN_X_TRANSACTIONS)); + assertTrue(CommonMethods.compareTextFile(graphPath + "_run_x_commands.txt",GENERAL_RUN_X_COMMANDS)); + } } \ No newline at end of file diff --git a/ttool/src/test/resources/tmltranslator/expected/expected_run_to_time_x.txt b/ttool/src/test/resources/tmltranslator/expected/expected_run_to_time_x.txt new file mode 100644 index 0000000000000000000000000000000000000000..129cb22900c632e5d9174012e5bdc2984188dd62 --- /dev/null +++ b/ttool/src/test/resources/tmltranslator/expected/expected_run_to_time_x.txt @@ -0,0 +1,8 @@ +========= Scheduling for device: CPU0_1 ========= +FVWithRequest__Periodic: Send FVWithRequest__go__FVWithRequest__go(evtB) content:0 params: t:0 l:1 (vl:1) params: Ch: FVWithRequest__go__FVWithRequest__go +FVWithRequest__Sender: Wait FVWithRequest__go__FVWithRequest__go params: t:1 l:1 (vl:1) params: Ch: FVWithRequest__go__FVWithRequest__go +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:2 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:7 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +========= Scheduling for device: Bus0_0 ========= +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:2 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:7 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm diff --git a/ttool/src/test/resources/tmltranslator/expected/expected_run_x_commands.txt b/ttool/src/test/resources/tmltranslator/expected/expected_run_x_commands.txt new file mode 100644 index 0000000000000000000000000000000000000000..5d9b5dbee4b7d696c87e4990823cf25e251ddcd6 --- /dev/null +++ b/ttool/src/test/resources/tmltranslator/expected/expected_run_x_commands.txt @@ -0,0 +1,22 @@ +========= Scheduling for device: CPU0_1 ========= +FVWithRequest__Periodic: Send FVWithRequest__go__FVWithRequest__go(evtB) content:0 params: t:0 l:1 (vl:1) params: Ch: FVWithRequest__go__FVWithRequest__go +FVWithRequest__Sender: Wait FVWithRequest__go__FVWithRequest__go params: t:1 l:1 (vl:1) params: Ch: FVWithRequest__go__FVWithRequest__go +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:2 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:7 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:12 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:17 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:22 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:27 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:32 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:37 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Periodic: IdleDL in FVWithRequest__Periodic len:1 progress:0 ID:24 t:42 l:1 (vl:1) params: +FVWithRequest__AnotherTask: Read 160,FVWithRequest__comm1__FVWithRequest__comm t:43 l:160 (vl:160) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +========= Scheduling for device: Bus0_0 ========= +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:2 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:7 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:12 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:17 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:22 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:27 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:32 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:37 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm diff --git a/ttool/src/test/resources/tmltranslator/expected/expected_run_x_time_units.txt b/ttool/src/test/resources/tmltranslator/expected/expected_run_x_time_units.txt new file mode 100644 index 0000000000000000000000000000000000000000..129cb22900c632e5d9174012e5bdc2984188dd62 --- /dev/null +++ b/ttool/src/test/resources/tmltranslator/expected/expected_run_x_time_units.txt @@ -0,0 +1,8 @@ +========= Scheduling for device: CPU0_1 ========= +FVWithRequest__Periodic: Send FVWithRequest__go__FVWithRequest__go(evtB) content:0 params: t:0 l:1 (vl:1) params: Ch: FVWithRequest__go__FVWithRequest__go +FVWithRequest__Sender: Wait FVWithRequest__go__FVWithRequest__go params: t:1 l:1 (vl:1) params: Ch: FVWithRequest__go__FVWithRequest__go +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:2 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:7 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +========= Scheduling for device: Bus0_0 ========= +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:2 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:7 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm diff --git a/ttool/src/test/resources/tmltranslator/expected/expected_run_x_transactions.txt b/ttool/src/test/resources/tmltranslator/expected/expected_run_x_transactions.txt new file mode 100644 index 0000000000000000000000000000000000000000..beccfd86be708f716ed3189996f88e150a6d46b2 --- /dev/null +++ b/ttool/src/test/resources/tmltranslator/expected/expected_run_x_transactions.txt @@ -0,0 +1,21 @@ +========= Scheduling for device: CPU0_1 ========= +FVWithRequest__Periodic: Send FVWithRequest__go__FVWithRequest__go(evtB) content:0 params: t:0 l:1 (vl:1) params: Ch: FVWithRequest__go__FVWithRequest__go +FVWithRequest__Sender: Wait FVWithRequest__go__FVWithRequest__go params: t:1 l:1 (vl:1) params: Ch: FVWithRequest__go__FVWithRequest__go +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:2 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:7 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:12 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:17 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:22 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:27 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:32 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:37 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Periodic: IdleDL in FVWithRequest__Periodic len:1 progress:0 ID:24 t:42 l:1 (vl:1) params: +========= Scheduling for device: Bus0_0 ========= +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:2 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:7 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:12 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:17 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:22 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:27 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:32 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm +FVWithRequest__Sender: Write 160,FVWithRequest__comm1__FVWithRequest__comm t:37 l:5 (vl:20) params: Ch: FVWithRequest__comm1__FVWithRequest__comm