diff --git a/simulators/c++2/src_simulator/arch/MultiCoreCPU.cpp b/simulators/c++2/src_simulator/arch/MultiCoreCPU.cpp index e7a1fe8fb352ebedb2d10d2758afdba1b91a39d4..4217eeb0e363034dcea3a13a1e0ced5f3da243ed 100644 --- a/simulators/c++2/src_simulator/arch/MultiCoreCPU.cpp +++ b/simulators/c++2/src_simulator/arch/MultiCoreCPU.cpp @@ -438,7 +438,7 @@ int MultiCoreCPU::allTrans2XML(std::ostringstream& glob, int maxNbOfTrans) const int total = 0; for(TransactionList::const_iterator i=_transactList.begin(); i != _transactList.end(); ++i){ if (cpt >= begining) { - (*i)->toXML(glob, 1, _name); + (*i)->toXML(glob, 0, _name); total ++; } cpt ++; @@ -451,7 +451,7 @@ void MultiCoreCPU::latencies2XML(std::ostringstream& glob, int id1, int id2) { for(TransactionList::const_iterator i=_transactList.begin(); i != _transactList.end(); ++i){ if ((*i)->getCommand() !=NULL){ if ((*i)->getCommand()->getID() == id1 || (*i)->getCommand()->getID() == id2){ - (*i)->toXML(glob, 1, _name); + (*i)->toXML(glob, 0, _name); } } } diff --git a/simulators/c++2/src_simulator/arch/SingleCoreCPU.cpp b/simulators/c++2/src_simulator/arch/SingleCoreCPU.cpp index b90dd9e6e9e633028b9b4caaa9895a984843f21c..4bc2334287ac26d0513d1bdcf798ca996f69f266 100644 --- a/simulators/c++2/src_simulator/arch/SingleCoreCPU.cpp +++ b/simulators/c++2/src_simulator/arch/SingleCoreCPU.cpp @@ -428,7 +428,7 @@ int SingleCoreCPU::allTrans2XML(std::ostringstream& glob, int maxNbOfTrans) cons int total = 0; for(TransactionList::const_iterator i=_transactList.begin(); i != _transactList.end(); ++i){ if (cpt >= begining) { - (*i)->toXML(glob, 1, _name); + (*i)->toXML(glob, 0, _name); total ++; } cpt ++; @@ -440,7 +440,7 @@ void SingleCoreCPU::latencies2XML(std::ostringstream& glob, unsigned int id1, un for(TransactionList::const_iterator i=_transactList.begin(); i != _transactList.end(); ++i){ if ((*i)->getCommand() !=NULL){ if ((*i)->getCommand()->getID() == id1 || (*i)->getCommand()->getID() == id2){ - (*i)->toXML(glob, 1, _name); + (*i)->toXML(glob, 0, _name); } } } diff --git a/src/main/java/avatartranslator/AvatarPragmaLatency.java b/src/main/java/avatartranslator/AvatarPragmaLatency.java index 19db85bb5ea2a131b2ca659ff004619c837775df..58276b8759714b471da2fbab65cda48ba3765300 100644 --- a/src/main/java/avatartranslator/AvatarPragmaLatency.java +++ b/src/main/java/avatartranslator/AvatarPragmaLatency.java @@ -50,9 +50,9 @@ package avatartranslator; import java.util.List; public class AvatarPragmaLatency extends AvatarPragma { - private AvatarActionOnSignal state1; + private AvatarStateMachineElement state1; private AvatarBlock block1; - private AvatarActionOnSignal state2; + private AvatarStateMachineElement state2; private AvatarBlock block2; private int symbolType; public static final int lessThan =1; @@ -63,7 +63,7 @@ public class AvatarPragmaLatency extends AvatarPragma { private List<String> id2; private String pragmaString=""; - public AvatarPragmaLatency(String _name, Object _referenceObject, AvatarBlock block1, AvatarActionOnSignal state1, AvatarBlock block2, AvatarActionOnSignal state2, int symbolType, int time, List<String> id1, List<String> id2, String pragmaString) + public AvatarPragmaLatency(String _name, Object _referenceObject, AvatarBlock block1, AvatarStateMachineElement state1, AvatarBlock block2, AvatarStateMachineElement state2, int symbolType, int time, List<String> id1, List<String> id2, String pragmaString) { super(_name, _referenceObject); this.block1 = block1; @@ -77,7 +77,7 @@ public class AvatarPragmaLatency extends AvatarPragma { this.pragmaString=pragmaString; } - public AvatarActionOnSignal getState1() + public AvatarStateMachineElement getState1() { return this.state1; } @@ -87,7 +87,7 @@ public class AvatarPragmaLatency extends AvatarPragma { return this.block1; } - public AvatarActionOnSignal getState2() + public AvatarStateMachineElement getState2() { return this.state2; } diff --git a/src/main/java/avatartranslator/AvatarState.java b/src/main/java/avatartranslator/AvatarState.java index 0f0290414d244d9b33f357672ee4c211519a6521..880eb41b464998dd8cb360e5bba3aadb29be96bc 100644 --- a/src/main/java/avatartranslator/AvatarState.java +++ b/src/main/java/avatartranslator/AvatarState.java @@ -51,6 +51,7 @@ public class AvatarState extends AvatarStateElement { private String entryCode; private boolean hidden; // i.e, not present in the original state machine public int stateID; // to be used by code generator to more efficiently keep track of states. + private boolean checkLatency; public AvatarState(String _name, Object _referenceObject) { super(_name, _referenceObject); @@ -81,6 +82,15 @@ public class AvatarState extends AvatarStateElement { public String getNiceName() { return "State " + getName(); } + + public boolean getCheckLatency(){ + return checkLatency; + } + + public void setCheckLatency(boolean b){ + checkLatency=b; + } + public int hasEmptyTransitionsOnItself(AvatarStateMachine _asm) { AvatarTransition at; diff --git a/src/main/java/ui/AvatarDesignPanelTranslator.java b/src/main/java/ui/AvatarDesignPanelTranslator.java index 72d8905efe722f14dba7d095c6d643097d6bed1b..892e452735a428a9458a8a80afabb9e620579d92 100644 --- a/src/main/java/ui/AvatarDesignPanelTranslator.java +++ b/src/main/java/ui/AvatarDesignPanelTranslator.java @@ -270,7 +270,7 @@ public class AvatarDesignPanelTranslator { String block1 = p1.split("\\.")[0]; String state1 = p1.split("\\.")[1]; AvatarBlock bl1; - AvatarActionOnSignal st1=null; + AvatarStateMachineElement st1=null; List<String> id1= new ArrayList<String>(); bl1 = as.getBlockWithName(block1); if (bl1==null){ @@ -288,6 +288,14 @@ public class AvatarDesignPanelTranslator { st1= aaos; } } + AvatarState astate1 = asm.getStateWithName(state1); + if (astate1!=null){ + if (astate1.getCheckLatency()){ + id1.add("State-"+state1 + ":"+ astate1.getID()); + st1= astate1; + } + } + if (id1.size()==0){ UICheckingError ce = new UICheckingError(CheckingError.STRUCTURE_ERROR, "Cannot find checkable state " + block1+ "." + state1 + " in pragma"); ce.setTDiagramPanel(adp.getAvatarBDPanel()); @@ -320,7 +328,7 @@ public class AvatarDesignPanelTranslator { AvatarBlock bl2; - AvatarActionOnSignal st2=null; + AvatarStateMachineElement st2=null; bl2 = as.getBlockWithName(block2); if (bl2==null){ @@ -342,6 +350,14 @@ public class AvatarDesignPanelTranslator { } } + AvatarState astate2 = asm.getStateWithName(state2); + if (astate2!=null){ + if (astate2.getCheckLatency()){ + id2.add("State-"+state2 + ":"+ astate2.getID()); + st2= astate2; + } + } + if (id2.size()==0){ UICheckingError ce = new UICheckingError(CheckingError.STRUCTURE_ERROR, "Cannot find checkable state " + block2+ "." + state2 + " in pragma"); ce.setTDiagramPanel(adp.getAvatarBDPanel()); @@ -1594,7 +1610,7 @@ public class AvatarDesignPanelTranslator { astate.addReferenceObject (tgc); tgc.setAVATARID (astate.getID()); if (tgc.getCheckLatency()){ - // astate.setCheckLatency(true); + astate.setCheckLatency(true); _as.checkedIDs.add(tgc.getName()+"-"+tgc.getValue()+":"+astate.getID()); } } diff --git a/src/main/java/ui/avatarinteractivesimulation/JFrameAvatarInteractiveSimulation.java b/src/main/java/ui/avatarinteractivesimulation/JFrameAvatarInteractiveSimulation.java index 11b0b717f45eddc7093adaddcfb6ea40dc2bbe5f..dcd604a490c039c46091106400bb27a16e1465d0 100755 --- a/src/main/java/ui/avatarinteractivesimulation/JFrameAvatarInteractiveSimulation.java +++ b/src/main/java/ui/avatarinteractivesimulation/JFrameAvatarInteractiveSimulation.java @@ -927,8 +927,8 @@ public class JFrameAvatarInteractiveSimulation extends JFrame implements Avatar jspLatency = new JScrollPane(latTable); jspLatency.setWheelScrollingEnabled(true); jspLatency.getVerticalScrollBar().setUnitIncrement(10); - jspLatency.setMinimumSize(new Dimension(250, 50)); - jspLatency.setPreferredSize(new Dimension(250, 50)); + jspLatency.setMinimumSize(new Dimension(450, 100)); + jspLatency.setPreferredSize(new Dimension(450, 100)); latencyPanel.add(jspLatency, c0); diff --git a/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java b/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java index 3bbcf132a3de8b5da0670eb832fb8b9496eca307..3a6497ebcc6e26c7e48545ad5c1a3736b263b001 100755 --- a/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java +++ b/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java @@ -1534,7 +1534,7 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene } try { - if ((command.equals("Write") || command.equals("Read")) && tran.deviceName.contains("CPU")){ + if ((command.equals("Write") || command.equals("Read")) && tran.nodeType.equals("0")){ TMLChannel chan = tmap.getTMLModeling().getChannelByShortName(tran.channelName); if (chan!=null){ TMLTask originTask = chan.getOriginTask(); @@ -1581,7 +1581,7 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene } } } - else if ((command.equals("Send") || command.equals("Wait") || command.equals("SelectEvent")) && tran.deviceName.contains("CPU") && !tran.channelName.startsWith("reqChannel")){ + else if ((command.equals("Send") || command.equals("Wait") || command.equals("SelectEvent")) && tran.nodeType.equals("0") && !tran.channelName.startsWith("reqChannel")){ if (command.equals("SelectEvent")){ String trace="time="+tran.endTime+ " block=" + tran.taskName + " type=state_entering state=SelectEvent"; if (!simtraces.contains(trace)){ @@ -1634,7 +1634,7 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene } } } - else if ((command.equals("Request") || command.equals("Wait")) && tran.deviceName.contains("CPU") && tran.channelName.startsWith("reqChannel")){ + else if ((command.equals("Request") || command.equals("Wait")) && tran.nodeType.equals("0") && tran.channelName.startsWith("reqChannel")){ TMLRequest req=null; for (TMLRequest request: tmap.getTMLModeling().getRequests()){ if (tran.channelName.replaceAll("reqChannel_","").equals(request.getDestinationTask().getName())){