diff --git a/src/ui/interactivesimulation/JFrameInteractiveSimulation.java b/src/ui/interactivesimulation/JFrameInteractiveSimulation.java index 4a3ce9bfb30bb8886c2e3339db643673b2cd519e..2f69459696ff7770a2dfc09893fe0f30a2131869 100755 --- a/src/ui/interactivesimulation/JFrameInteractiveSimulation.java +++ b/src/ui/interactivesimulation/JFrameInteractiveSimulation.java @@ -1658,6 +1658,16 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene sendCommandWithPositiveInt("run-x-commands"); } else if (command.equals(actions[InteractiveSimulationActions.ACT_RUN_EXPLORATION].getActionCommand())) { sendCommand("run-exploration"); + } else if (command.equals(actions[InteractiveSimulationActions.ACT_RUN_TO_NEXT_BUS_TRANSFER].getActionCommand())) { + toNextBusTransfer(); + } else if (command.equals(actions[InteractiveSimulationActions.ACT_RUN_UNTIL_CPU_EXECUTES].getActionCommand())) { + runUntilCPUExecutes(); + } else if (command.equals(actions[InteractiveSimulationActions.ACT_RUN_UNTIL_MEMORY_ACCESS].getActionCommand())) { + toNextMemoryTransfer(); + } else if (command.equals(actions[InteractiveSimulationActions.ACT_RUN_UNTIL_TASK_EXECUTES].getActionCommand())) { + runUntilTaskExecutes(); + } else if (command.equals(actions[InteractiveSimulationActions.ACT_RUN_UNTIL_CHANNEL_ACCESS].getActionCommand())) { + runUntilChannelAccess(); } else if (command.equals(actions[InteractiveSimulationActions.ACT_SAVE_VCD].getActionCommand())) { sendSaveTraceCommand("0"); } else if (command.equals(actions[InteractiveSimulationActions.ACT_SAVE_HTML].getActionCommand())) { @@ -1712,6 +1722,63 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene } } + public void toNextBusTransfer() { + int id = getIDFromString(busIDs[busses.getSelectedItem()); + if (id != -1) { + sendCommand("run-to-next-transfer-on-bus " + id); + } + } + + public void runUntilCPUExecutes() { + int id = getIDFromString(cpuIDs[cpus.getSelectedItem()); + if (id != -1) { + sendCommand("run-until-cpu-executes " + id); + } + } + + public void toNextMemoryTransfer() { + int id = getIDFromString(memIDs[mems.getSelectedItem()); + if (id != -1) { + sendCommand("run-until-memory-access " + id); + } + } + + public void runUntilTaskExecutes() { + int id = getIDFromString(taskIDs[tasks.getSelectedItem()); + if (id != -1) { + sendCommand("run-until-task-executes " + id); + } + } + + public void runUntilChannelAccess() { + int id = getIDFromString(chanIDs[chans.getSelectedItem()); + if (id != -1) { + sendCommand("run-until-channel-access " + id); + } + } + + + + public int getIDFromString(String s) { + int index0 = s.indexOf("("); + int index1 = s.indexOf(")"); + if ((index0 < 0) || (index1 <0) || (index1 < index0)) { + return -1; + } + + String in = s.substring(index0+1, index1); + + try { + return Integer.decode(in).intValue(); + } catch (Exception e) { + System.out.println("Wrong string: "+ in); + } + + return -1; + } + + + public void addBreakPoint(int _commandID) { System.out.println("Add breakpoint: " + _commandID); // Check whether that breakpoint is already listed or not