diff --git a/src/main/java/ui/interactivesimulation/InteractiveSimulationActions.java b/src/main/java/ui/interactivesimulation/InteractiveSimulationActions.java index 41172e3e5a4a58361c25825e4a85d05fa6c59f55..01a5773be7622c98ffa4b0dc0db075e15f85d672 100755 --- a/src/main/java/ui/interactivesimulation/InteractiveSimulationActions.java +++ b/src/main/java/ui/interactivesimulation/InteractiveSimulationActions.java @@ -104,8 +104,8 @@ public class InteractiveSimulationActions extends AbstractAction { public static final int ACT_ANALYSIS_RG = 30; public static final int ACT_VIEW_RG = 31; - - public static final int NB_ACTION = 36; + public static final int ACT_SHOW_TRACE = 36; + public static final int NB_ACTION = 37; private static final TAction [] actions = new TAction[NB_ACTION]; @@ -189,6 +189,7 @@ public class InteractiveSimulationActions extends AbstractAction { actions[ACT_VIEW_RG] = new TAction("view-rg", "View last RG", IconManager.imgic344, IconManager.imgic344, "View last RG", "View last RG", '0'); actions[ACT_UPDATE_LATENCY] = new TAction("update-latency", "Update latencies", IconManager.imgic75, IconManager.imgic75, "Update latencies", "Update latencies", '0'); actions[ACT_ADD_LATENCY] = new TAction("add-latency", "Measure Latency", null, null, "Measure Latency", "Measure Latency", '0'); + actions[ACT_SHOW_TRACE] = new TAction("show-trace", "Show Simulation Traces", IconManager.imgic7007, IconManager.imgic7007, "Show Simulation Traces", "Show Simulation Traces", '0'); } diff --git a/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java b/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java index 613c90e1ac10138d48bf402de02420ddc6cc004e..6d7390f1409312d7d770e8a8d1bb34c6a01fdf9f 100755 --- a/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java +++ b/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java @@ -82,7 +82,7 @@ import java.util.List; */ public class JFrameInteractiveSimulation extends JFrame implements ActionListener, Runnable, MouseListener, ItemListener, ChangeListener { - protected static final int NB_OF_TRANSACTIONS = 10; + protected static final int NB_OF_TRANSACTIONS = 1000; protected static final String SIMULATION_HEADER = "siminfo"; protected static final String SIMULATION_GLOBAL = "global"; @@ -108,7 +108,7 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene private String hostSystemC; private String pathExecute; - protected JButton buttonClose, buttonStart, buttonStopAndClose; + protected JButton buttonClose, buttonStart, buttonStopAndClose, buttonShowTrace; protected JTextArea jta; protected JScrollPane jsp; @@ -145,7 +145,7 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene protected JTextField stateFileName; protected JTextField benchmarkFileName; protected JComboBox<String> cpus, busses, mems, tasks, chans; - + HashMap<String, List<Integer>> channelIDMap= new HashMap<String, List<Integer>>(); private String[] cpuIDs, busIDs, memIDs, taskIDs, chanIDs; private List<String> simtraces= new ArrayList<String>(); @@ -209,6 +209,7 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene LatencyTableModel latm; public Vector<String> checkedTransactions = new Vector<String>(); private JScrollPane jspLatency; + int chanId=0; private int mode = 0; //private boolean busyStatus = false; @@ -262,7 +263,6 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene points = _points; - valueTable = new Hashtable<Integer, String>(); rowTable = new Hashtable<Integer, Integer>(); runningTable = new Hashtable<Integer, Integer>(); @@ -307,6 +307,7 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene buttonStart = new JButton(actions[InteractiveSimulationActions.ACT_START_ALL]); buttonClose = new JButton(actions[InteractiveSimulationActions.ACT_STOP_ALL]); buttonStopAndClose = new JButton(actions[InteractiveSimulationActions.ACT_STOP_AND_CLOSE_ALL]); + buttonShowTrace = new JButton(actions[InteractiveSimulationActions.ACT_SHOW_TRACE]); //buttonStopAndClose = new JButton(buttonStopAndCloseS, IconManager.imgic27); @@ -330,6 +331,7 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene jp.add(buttonStart); jp.add(buttonStopAndClose); jp.add(buttonClose); + jp.add(buttonShowTrace); mainpanel.add(jp, BorderLayout.NORTH); @@ -1378,6 +1380,12 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene return true; } + + public void resetSimTrace(){ + simtraces.clear(); + writeSimTrace(); + } + public void writeSimTrace(){ try { tmlSimPanel = new JFrameTMLSimulationPanel(new Frame(), mgui, "Simulation Transactions"); @@ -1411,12 +1419,17 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene } catch (Exception e){ - System.out.println("Could not write sim trace " + e); + System.out.println("Could not write sim trace " + e + " " + simtraces + " " +simIndex); } } protected void addTransactionToNode(SimulationTransaction tran){ + //System.out.println("Command " + tran.command + String command = tran.command; + if (command.contains(" ")){ + command = command.split(" ")[0]; + } try { - if (tran.command.contains("Write")){ + if (command.equals("Write") || command.equals("Read")){ TMLChannel chan = tmap.getTMLModeling().getChannelByShortName(tran.channelName); if (chan!=null){ TMLTask originTask = chan.getOriginTask(); @@ -1424,26 +1437,52 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene if (originTask!=null && destTask!=null){ //JK asynch channels don't work // if (chan.getType()==TMLChannel.BRBW){ - String trace="time=" + tran.endTime+ " block="+ originTask.getName() + " blockdestination="+ destTask.getName() +" type=synchro channel="+tran.channelName+" params=\"" +chan.getSize()+"\""; + // String trace="time=" + tran.endTime+ " block="+ originTask.getName() + " blockdestination="+ destTask.getName() +" type=synchro channel="+tran.channelName+" params=\"" +chan.getSize()+"\""; + + //} + //else { + String asynchType = (command.equals("Write") ? "send_async" : "receive_async"); + int msgId=chanId; + if (command.equals("Write")){ + if (!channelIDMap.containsKey(tran.channelName)){ + channelIDMap.put(tran.channelName, new ArrayList<Integer>()); + } + channelIDMap.get(tran.channelName).add(msgId); + chanId++; + } + else { + if (channelIDMap.containsKey(tran.channelName) && channelIDMap.get(tran.channelName).size()>0){ + msgId=channelIDMap.get(tran.channelName).remove(0); + } + + } + String trace = "time=" + tran.endTime+ " block="+ originTask.getName() + " type="+asynchType+ " blockdestination="+ destTask.getName() + " channel="+tran.channelName+" msgid="+ msgId + " params=\"" +chan.getSize()+"\""; + // System.out.println("sending asynch " + trace); if (!simtraces.contains(trace)){ simtraces.add(trace); } //} - //else { - // String asynchType = (tran.command.contains("Write") ? "send_asynch" : "receive_asynch"); - //simtraces.add("#"+simIndex+" time=" + tran.startTime+ " block="+ originTask.getName() + " blockdestination="+ destTask.getName() +" type="+asynchType+ " channel="+tran.channelName+" params=\"" +chan.getSize()+"\""); - //} } } } - else if (tran.command.contains("Exec")){ + else if (command.equals("SelectEvent")){ + } + else if (command.equals("Send")){ + } + else if (command.equals("Wait")){ + } + else if (command.equals("Request")){ + } + else if (command.equals("Notified")){ + } + else if (command.contains("Execi")){ String trace="time="+tran.endTime+ " block=" + tran.taskName + " type=state_entering state=exec" + tran.length; if (!simtraces.contains(trace)){ simtraces.add(trace); } } else { - // :( + System.out.println("UNHANDLED COMMAND " + tran.command); } //System.out.println("Simulation command " + tran.command + " " + tran.channelName + " " + tran.length); @@ -2901,7 +2940,6 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene updateTasks(); } else if (command.equals(actions[InteractiveSimulationActions.ACT_UPDATE_TRANSACTIONS].getActionCommand())) { updateTransactions(); - writeSimTrace(); } else if (command.equals(actions[InteractiveSimulationActions.ACT_ADD_LATENCY].getActionCommand())) { addLatency(); } else if (command.equals(actions[InteractiveSimulationActions.ACT_UPDATE_LATENCY].getActionCommand())) { @@ -2914,7 +2952,11 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene analyzeRG(); } else if (command.equals(actions[InteractiveSimulationActions.ACT_VIEW_RG].getActionCommand())) { viewRG(); - } + } else if (command.equals(actions[InteractiveSimulationActions.ACT_REFRESH].getActionCommand())) { + resetSimTrace(); + } else if (command.equals(actions[InteractiveSimulationActions.ACT_SHOW_TRACE].getActionCommand())) { + writeSimTrace(); + } } public void error(String error) { diff --git a/src/main/java/ui/interactivesimulation/JFrameTMLSimulationPanel.java b/src/main/java/ui/interactivesimulation/JFrameTMLSimulationPanel.java index 735f93aeee9f6270877ee51585af284cfa8154aa..423db8356026c797e4eab3a0e4c6b72b5b28e0fe 100644 --- a/src/main/java/ui/interactivesimulation/JFrameTMLSimulationPanel.java +++ b/src/main/java/ui/interactivesimulation/JFrameTMLSimulationPanel.java @@ -106,13 +106,13 @@ public class JFrameTMLSimulationPanel extends JFrame implements ActionListener { JPanel topPanel = new JPanel(); JButton buttonClose = new JButton(actions[InteractiveSimulationActions.ACT_STOP_ALL]); topPanel.add(buttonClose); - topPanel.add(new JLabel(" time unit:")); + /*topPanel.add(new JLabel(" time unit:")); units = new JComboBox<>(unitTab); units.setSelectedIndex(1); units.addActionListener(this); topPanel.add(units); JButton buttonRefresh = new JButton(actions[InteractiveSimulationActions.ACT_REFRESH]); - topPanel.add(buttonRefresh); + topPanel.add(buttonRefresh);*/ framePanel.add(topPanel, BorderLayout.NORTH); // Simulation panel diff --git a/src/main/java/ui/interactivesimulation/JSimulationSDPanel.java b/src/main/java/ui/interactivesimulation/JSimulationSDPanel.java index 6dd09317719335a73f001104b6b8c2eaf1227381..e761e97c917767c9ec2d0dff251bc03c31e696cb 100644 --- a/src/main/java/ui/interactivesimulation/JSimulationSDPanel.java +++ b/src/main/java/ui/interactivesimulation/JSimulationSDPanel.java @@ -1157,7 +1157,7 @@ public class JSimulationSDPanel extends JPanel implements MouseMotionListener, R if (tmp != null) { gt.messageID = tmp; } - + System.out.println("Added transaction " + gt); transactions.add(gt); //TraceManager.addDev("One transactions added"); diff --git a/src/main/java/ui/interactivesimulation/JSimulationTMLPanel.java b/src/main/java/ui/interactivesimulation/JSimulationTMLPanel.java index 76c45d8b235ada4988323a63deae5955aa01d799..57767224894ebdc4bd0f270a99a5c0246d019e8e 100644 --- a/src/main/java/ui/interactivesimulation/JSimulationTMLPanel.java +++ b/src/main/java/ui/interactivesimulation/JSimulationTMLPanel.java @@ -1012,7 +1012,6 @@ public class JSimulationTMLPanel extends JPanel implements MouseMotionListener, } private void addGenericTransaction(String trans) { - //System.out.println("Adding translation!!! " + trans); int index0; String tmp, tmp1, tmp2; long value; @@ -1065,7 +1064,7 @@ public class JSimulationTMLPanel extends JPanel implements MouseMotionListener, gt.startingTime = Long.valueOf(tmp); gt.finishTime = Long.valueOf(tmp); } catch (Exception e) { - TraceManager.addDev("Exception: " + e.getMessage() + " on transaction " + trans); + System.out.println("Exception: " + e.getMessage() + " on transaction " + trans); return; } @@ -1088,6 +1087,7 @@ public class JSimulationTMLPanel extends JPanel implements MouseMotionListener, return; } + if (tmp.compareTo("state_entering") == 0) { gt.type = GenericTransaction.STATE_ENTERING; } diff --git a/src/main/java/ui/util/IconManager.java b/src/main/java/ui/util/IconManager.java index 836cf00e568fffb5788b88eff76b150bd408cf0a..1c3f9a88e14c5af8b28ba983572c305a981f98e6 100755 --- a/src/main/java/ui/util/IconManager.java +++ b/src/main/java/ui/util/IconManager.java @@ -156,7 +156,8 @@ public class IconManager { public static ImageIcon imgic7000, imgic7001; //Safety public static ImageIcon imgic7002, imgic7003, imgic7004, imgic7005, imgic7006; - + //Show traces + public static ImageIcon imgic7007; // Delegate ports image removed, by Solange //public static ImageIcon imgic2102; @@ -602,6 +603,8 @@ public class IconManager { private static String icon7004 = "E1.gif"; private static String icon7005 = "E2.gif"; private static String icon7006 = "imply.gif"; + //Show traces + private static String icon7007 = "toolbarButtonGraphics/general/showTrace.gif"; public IconManager() { @@ -1022,6 +1025,7 @@ public class IconManager { imgic7004 = getIcon(icon7004); imgic7005 = getIcon(icon7005); imgic7006 = getIcon(icon7006); + imgic7007 = getIcon(icon7007); } } // Class