Skip to content
Snippets Groups Projects
Commit 0557ec31 authored by Anders Nilsson's avatar Anders Nilsson
Browse files

A _very_ naive SDF analysis implemented, if there's only one action in an actor it is an SDF.

parent 0f98e40a
Branches
No related tags found
No related merge requests found
/* -*-Java-*- */
/*
* Copyright (C) 2009 Anders Nilsson <anders.nilsson@cs.lth.se>
*
* This file is part of Actors model compiler.
*/
import xdfAST.Start;
import xdfAST.Instance;
import java.util.LinkedList;
......
<?xml version="1.0" encoding="UTF-8"?>
<!--Actor AddFiveOnce--><design name="AddFiveOnce">
<actor-port dir="in" name="In" size="32" typeName="int"/>
<actor-port dir="out" name="Out" size="32" typeName="int"/>
<!--Action 0$id$w146ab2--><module autostart="false" kind="action" name="init">
<operation kind="pinRead" portName="In" removable="no" style="simple">
<port dir="out" size="32" source="0$id$w146ab2b3b1" typeName="int"/>
</operation>
<!--Expr 0$id$w146ab2b5b1ab1--><operation kind="noop">
<port dir="in" source="0$id$w146ab2b3b1"/>
<port dir="out" size="32" source="0$id$w146ab2b5b1ab1" typeName="int"/>
</operation>
<!--Expr 1$id$w561ab3b5b1ab1b1--><operation kind="$literal_Integer" value="5">
<port dir="out" size="4" source="1$id$w561ab3b5b1ab1b1" typeName="int"/>
</operation>
<!--Expr 1$id$w561ab3b5b1a--><operation kind="$add">
<port dir="in" source="0$id$w146ab2b5b1ab1"/>
<port dir="in" source="1$id$w561ab3b5b1ab1b1"/>
<port dir="out" size="33" source="1$id$w561ab3b5b1a" typeName="int"/>
</operation>
<!--Expr 0$id$w146ab2b5b1--><operation kind="noop">
<port dir="in" source="1$id$w561ab3b5b1a"/>
<port dir="out" size="33" source="0$id$w146ab2b5b1" typeName="int"/>
</operation>
<operation kind="pinWrite" portName="Out" style="simple">
<port dir="in" source="0$id$w146ab2b5b1"/>
</operation>
</module>
<!--Action 0$id$w146ab3--><module autostart="false" kind="action" name="run">
<operation kind="pinRead" portName="In" removable="no" style="simple">
<port dir="out" size="32" source="0$id$w146ab3b3b1" typeName="int"/>
</operation>
<!--Expr 0$id$w146ab3b5b1a--><operation kind="noop">
<port dir="in" source="0$id$w146ab3b3b1"/>
<port dir="out" size="32" source="0$id$w146ab3b5b1a" typeName="int"/>
</operation>
<!--Expr 0$id$w146ab3b5b1--><operation kind="noop">
<port dir="in" source="0$id$w146ab3b5b1a"/>
<port dir="out" size="32" source="0$id$w146ab3b5b1" typeName="int"/>
</operation>
<operation kind="pinWrite" portName="Out" style="simple">
<port dir="in" source="0$id$w146ab3b5b1"/>
</operation>
</module>
<stateVar name="0$id$w146a$fsm$init">
<initValue size="1" typeName="bool" value="1"/>
</stateVar>
<stateVar name="0$id$w146a$fsm$run">
<initValue size="1" typeName="bool" value="0"/>
</stateVar>
<module autostart="true" kind="action-scheduler" name="action-scheduler"
sourceName="action-scheduler">
<operation kind="$literal_Integer" value="1">
<port dir="out" size="1" source="0$id$w146a$sched$true" typeName="bool"/>
</operation>
<module kind="loop">
<module decision="0$id$w146a$sched$true$loop" kind="test">
<operation kind="noop">
<port dir="in" source="0$id$w146a$sched$true"/>
<port dir="out" size="1" source="0$id$w146a$sched$true$loop" typeName="bool"/>
</operation>
</module>
<module kind="body">
<operation kind="pinAvail" portName="In">
<port dir="out" size="32" source="In$pinAvail" typeName="int"/>
</operation>
<!--Input peeks for action 0$id$w146ab2--><operation kind="$literal_Integer" value="1">
<port dir="out" size="32" source="0$id$w146ab2b3$In$tokenCount" typeName="int"/>
</operation>
<operation kind="$ge">
<port dir="in" source="In$pinAvail"/>
<port dir="in" source="0$id$w146ab2b3$In$tokenCount"/>
<port dir="out" size="1" source="0$id$w146ab2b3$ready" typeName="bool"/>
</operation>
<operation kind="$literal_Integer" value="0">
<port dir="out" size="1" source="0$id$w146ab2b3b1$index$1" typeName="int"/>
</operation>
<operation kind="pinPeek" portName="In">
<port dir="in" source="0$id$w146ab2b3b1$index$1"/>
<port dir="out" size="32" source="0$id$w146ab2b3b1" typeName="int"/>
</operation>
<!--Local variables used in guards of action 0$id$w146ab2--><!--Guard for action 0$id$w146ab2--><operation kind="$and">
<port dir="in" source="0$id$w146ab2b3$ready"/>
<port dir="out" size="1" source="0$id$w146ab2$guard" typeName="bool"/>
</operation>
<!--Input peeks for action 0$id$w146ab3--><operation kind="$literal_Integer" value="1">
<port dir="out" size="32" source="0$id$w146ab3b3$In$tokenCount" typeName="int"/>
</operation>
<operation kind="$ge">
<port dir="in" source="In$pinAvail"/>
<port dir="in" source="0$id$w146ab3b3$In$tokenCount"/>
<port dir="out" size="1" source="0$id$w146ab3b3$ready" typeName="bool"/>
</operation>
<operation kind="$literal_Integer" value="0">
<port dir="out" size="1" source="0$id$w146ab3b3b1$index$1" typeName="int"/>
</operation>
<operation kind="pinPeek" portName="In">
<port dir="in" source="0$id$w146ab3b3b1$index$1"/>
<port dir="out" size="32" source="0$id$w146ab3b3b1" typeName="int"/>
</operation>
<!--Local variables used in guards of action 0$id$w146ab3--><!--Guard for action 0$id$w146ab3--><operation kind="$and">
<port dir="in" source="0$id$w146ab3b3$ready"/>
<port dir="out" size="1" source="0$id$w146ab3$guard" typeName="bool"/>
</operation>
<operation kind="pinStatus" portName="Out">
<port dir="out" size="1" source="0$id$w146ab1$status" typeName="bool"/>
</operation>
<operation kind="$and">
<port dir="in" source="0$id$w146ab1$status"/>
<port dir="out" size="1" source="0$id$w146ab2$fireable" typeName="bool"/>
</operation>
<operation kind="$and">
<port dir="in" source="0$id$w146ab1$status"/>
<port dir="out" size="1" source="0$id$w146ab3$fireable" typeName="bool"/>
</operation>
<operation kind="noop">
<port dir="in" source="0$id$w146a$fsm$init"/>
<port dir="out" size="1" source="0$id$w146a$fsm$copy$init" typeName="bool"/>
</operation>
<operation kind="noop">
<port dir="in" source="0$id$w146a$fsm$run"/>
<port dir="out" size="1" source="0$id$w146a$fsm$copy$run" typeName="bool"/>
</operation>
<module kind="if">
<module decision="init$enabled" kind="test">
<operation kind="noop">
<port dir="in" source="0$id$w146a$fsm$copy$init"/>
<port dir="out" size="1" source="init$enabled" typeName="bool"/>
</operation>
</module>
<module kind="then">
<module kind="if">
<module decision="init$state$0$id$w146ab2$guard$read" kind="test">
<operation kind="noop">
<port dir="in" source="0$id$w146ab2$guard"/>
<port dir="out" size="1" source="init$state$0$id$w146ab2$guard$read" typeName="bool"/>
</operation>
</module>
<module kind="then">
<module kind="if">
<module decision="init$state$0$id$w146ab2$fireable" kind="test">
<operation kind="noop">
<port dir="in" source="0$id$w146ab2$fireable"/>
<port dir="out" size="1" source="init$state$0$id$w146ab2$fireable" typeName="bool"/>
</operation>
</module>
<module kind="then">
<operation kind="taskCall" target="init"/>
<operation kind="$literal_Integer" value="0">
<port dir="out" size="1" source="d985e1$false" typeName="bool"/>
</operation>
<operation kind="$literal_Integer" value="1">
<port dir="out" size="1" source="d985e1$true" typeName="bool"/>
</operation>
<operation kind="assign" target="0$id$w146a$fsm$init">
<port dir="in" source="d985e1$false"/>
</operation>
<operation kind="assign" target="0$id$w146a$fsm$run">
<port dir="in" source="d985e1$true"/>
</operation>
</module>
</module>
</module>
</module>
</module>
<module kind="else">
<module kind="if">
<module decision="run$enabled" kind="test">
<operation kind="noop">
<port dir="in" source="0$id$w146a$fsm$copy$run"/>
<port dir="out" size="1" source="run$enabled" typeName="bool"/>
</operation>
</module>
<module kind="then">
<module kind="if">
<module decision="run$state$0$id$w146ab3$guard$read" kind="test">
<operation kind="noop">
<port dir="in" source="0$id$w146ab3$guard"/>
<port dir="out" size="1" source="run$state$0$id$w146ab3$guard$read" typeName="bool"/>
</operation>
</module>
<module kind="then">
<module kind="if">
<module decision="run$state$0$id$w146ab3$fireable" kind="test">
<operation kind="noop">
<port dir="in" source="0$id$w146ab3$fireable"/>
<port dir="out" size="1" source="run$state$0$id$w146ab3$fireable" typeName="bool"/>
</operation>
</module>
<module kind="then">
<operation kind="taskCall" target="run"/>
<operation kind="$literal_Integer" value="0">
<port dir="out" size="1" source="d986e1$false" typeName="bool"/>
</operation>
<operation kind="$literal_Integer" value="1">
<port dir="out" size="1" source="d986e1$true" typeName="bool"/>
</operation>
<operation kind="assign" target="0$id$w146a$fsm$run">
<port dir="in" source="d986e1$true"/>
</operation>
</module>
</module>
</module>
</module>
</module>
</module>
</module>
</module>
</module>
</module>
</module>
</design>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!--Actor AddOne--><design name="AddOne">
<actor-port dir="in" name="In" size="32" typeName="int"/>
<actor-port dir="out" name="Out" size="32" typeName="int"/>
<!--Action 0$id$w86ab2--><module autostart="false" kind="action" name="actionAtLine_3">
<operation kind="pinRead" portName="In" removable="no" style="simple">
<port dir="out" size="32" source="0$id$w86ab2b1b1" typeName="int"/>
</operation>
<!--Expr 0$id$w86ab2b3b1ab1--><operation kind="noop">
<port dir="in" source="0$id$w86ab2b1b1"/>
<port dir="out" size="32" source="0$id$w86ab2b3b1ab1" typeName="int"/>
</operation>
<!--Expr 1$id$w352ab3b3b1ab1b1--><operation kind="$literal_Integer" value="1">
<port dir="out" size="2" source="1$id$w352ab3b3b1ab1b1" typeName="int"/>
</operation>
<!--Expr 1$id$w352ab3b3b1a--><operation kind="$add">
<port dir="in" source="0$id$w86ab2b3b1ab1"/>
<port dir="in" source="1$id$w352ab3b3b1ab1b1"/>
<port dir="out" size="33" source="1$id$w352ab3b3b1a" typeName="int"/>
</operation>
<!--Expr 0$id$w86ab2b3b1--><operation kind="noop">
<port dir="in" source="1$id$w352ab3b3b1a"/>
<port dir="out" size="33" source="0$id$w86ab2b3b1" typeName="int"/>
</operation>
<operation kind="pinWrite" portName="Out" style="simple">
<port dir="in" source="0$id$w86ab2b3b1"/>
</operation>
</module>
<module autostart="true" kind="action-scheduler" name="action-scheduler"
sourceName="action-scheduler">
<operation kind="$literal_Integer" value="1">
<port dir="out" size="1" source="0$id$w86a$sched$true" typeName="bool"/>
</operation>
<module kind="loop">
<module decision="0$id$w86a$sched$true$loop" kind="test">
<operation kind="noop">
<port dir="in" source="0$id$w86a$sched$true"/>
<port dir="out" size="1" source="0$id$w86a$sched$true$loop" typeName="bool"/>
</operation>
</module>
<module kind="body">
<operation kind="pinAvail" portName="In">
<port dir="out" size="32" source="In$pinAvail" typeName="int"/>
</operation>
<!--Input peeks for action 0$id$w86ab2--><operation kind="$literal_Integer" value="1">
<port dir="out" size="32" source="0$id$w86ab2b1$In$tokenCount" typeName="int"/>
</operation>
<operation kind="$ge">
<port dir="in" source="In$pinAvail"/>
<port dir="in" source="0$id$w86ab2b1$In$tokenCount"/>
<port dir="out" size="1" source="0$id$w86ab2b1$ready" typeName="bool"/>
</operation>
<operation kind="$literal_Integer" value="0">
<port dir="out" size="1" source="0$id$w86ab2b1b1$index$1" typeName="int"/>
</operation>
<operation kind="pinPeek" portName="In">
<port dir="in" source="0$id$w86ab2b1b1$index$1"/>
<port dir="out" size="32" source="0$id$w86ab2b1b1" typeName="int"/>
</operation>
<!--Local variables used in guards of action 0$id$w86ab2--><!--Guard for action 0$id$w86ab2--><operation kind="$and">
<port dir="in" source="0$id$w86ab2b1$ready"/>
<port dir="out" size="1" source="0$id$w86ab2$guard" typeName="bool"/>
</operation>
<operation kind="pinStatus" portName="Out">
<port dir="out" size="1" source="0$id$w86ab1$status" typeName="bool"/>
</operation>
<operation kind="$and">
<port dir="in" source="0$id$w86ab1$status"/>
<port dir="out" size="1" source="0$id$w86ab2$fireable" typeName="bool"/>
</operation>
<module kind="if">
<module decision="always$state$0$id$w86ab2$guard$read" kind="test">
<operation kind="noop">
<port dir="in" source="0$id$w86ab2$guard"/>
<port dir="out" size="1" source="always$state$0$id$w86ab2$guard$read" typeName="bool"/>
</operation>
</module>
<module kind="then">
<module kind="if">
<module decision="always$state$0$id$w86ab2$fireable" kind="test">
<operation kind="noop">
<port dir="in" source="0$id$w86ab2$fireable"/>
<port dir="out" size="1" source="always$state$0$id$w86ab2$fireable" typeName="bool"/>
</operation>
</module>
<module kind="then">
<operation kind="taskCall" target="actionAtLine_3"/>
</module>
</module>
</module>
</module>
</module>
</module>
</module>
</design>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!--Actor Double--><design name="Double">
<actor-port dir="in" name="In" size="32" typeName="int"/>
<actor-port dir="out" name="Out" size="32" typeName="int"/>
<!--Action 0$id$w86ab2--><module autostart="false" kind="action" name="actionAtLine_3">
<operation kind="pinRead" portName="In" removable="no" style="simple">
<port dir="out" size="32" source="0$id$w86ab2b1b1" typeName="int"/>
</operation>
<!--Expr 0$id$w86ab2b3b1ab1--><operation kind="noop">
<port dir="in" source="0$id$w86ab2b1b1"/>
<port dir="out" size="32" source="0$id$w86ab2b3b1ab1" typeName="int"/>
</operation>
<!--Expr 1$id$w352ab3b3b1ab1b1--><operation kind="$literal_Integer" value="2">
<port dir="out" size="3" source="1$id$w352ab3b3b1ab1b1" typeName="int"/>
</operation>
<!--Expr 1$id$w352ab3b3b1a--><operation kind="$mul">
<port dir="in" source="0$id$w86ab2b3b1ab1"/>
<port dir="in" source="1$id$w352ab3b3b1ab1b1"/>
<port dir="out" size="32" source="1$id$w352ab3b3b1a" typeName="int"/>
</operation>
<!--Expr 0$id$w86ab2b3b1--><operation kind="noop">
<port dir="in" source="1$id$w352ab3b3b1a"/>
<port dir="out" size="32" source="0$id$w86ab2b3b1" typeName="int"/>
</operation>
<operation kind="pinWrite" portName="Out" style="simple">
<port dir="in" source="0$id$w86ab2b3b1"/>
</operation>
</module>
<module autostart="true" kind="action-scheduler" name="action-scheduler"
sourceName="action-scheduler">
<operation kind="$literal_Integer" value="1">
<port dir="out" size="1" source="0$id$w86a$sched$true" typeName="bool"/>
</operation>
<module kind="loop">
<module decision="0$id$w86a$sched$true$loop" kind="test">
<operation kind="noop">
<port dir="in" source="0$id$w86a$sched$true"/>
<port dir="out" size="1" source="0$id$w86a$sched$true$loop" typeName="bool"/>
</operation>
</module>
<module kind="body">
<operation kind="pinAvail" portName="In">
<port dir="out" size="32" source="In$pinAvail" typeName="int"/>
</operation>
<!--Input peeks for action 0$id$w86ab2--><operation kind="$literal_Integer" value="1">
<port dir="out" size="32" source="0$id$w86ab2b1$In$tokenCount" typeName="int"/>
</operation>
<operation kind="$ge">
<port dir="in" source="In$pinAvail"/>
<port dir="in" source="0$id$w86ab2b1$In$tokenCount"/>
<port dir="out" size="1" source="0$id$w86ab2b1$ready" typeName="bool"/>
</operation>
<operation kind="$literal_Integer" value="0">
<port dir="out" size="1" source="0$id$w86ab2b1b1$index$1" typeName="int"/>
</operation>
<operation kind="pinPeek" portName="In">
<port dir="in" source="0$id$w86ab2b1b1$index$1"/>
<port dir="out" size="32" source="0$id$w86ab2b1b1" typeName="int"/>
</operation>
<!--Local variables used in guards of action 0$id$w86ab2--><!--Guard for action 0$id$w86ab2--><operation kind="$and">
<port dir="in" source="0$id$w86ab2b1$ready"/>
<port dir="out" size="1" source="0$id$w86ab2$guard" typeName="bool"/>
</operation>
<operation kind="pinStatus" portName="Out">
<port dir="out" size="1" source="0$id$w86ab1$status" typeName="bool"/>
</operation>
<operation kind="$and">
<port dir="in" source="0$id$w86ab1$status"/>
<port dir="out" size="1" source="0$id$w86ab2$fireable" typeName="bool"/>
</operation>
<module kind="if">
<module decision="always$state$0$id$w86ab2$guard$read" kind="test">
<operation kind="noop">
<port dir="in" source="0$id$w86ab2$guard"/>
<port dir="out" size="1" source="always$state$0$id$w86ab2$guard$read" typeName="bool"/>
</operation>
</module>
<module kind="then">
<module kind="if">
<module decision="always$state$0$id$w86ab2$fireable" kind="test">
<operation kind="noop">
<port dir="in" source="0$id$w86ab2$fireable"/>
<port dir="out" size="1" source="always$state$0$id$w86ab2$fireable" typeName="bool"/>
</operation>
</module>
<module kind="then">
<operation kind="taskCall" target="actionAtLine_3"/>
</module>
</module>
</module>
</module>
</module>
</module>
</module>
</design>
\ No newline at end of file
/* -*-Java-*- */
/*
* Copyright (C) 2009 Anders Nilsson <anders.nilsson@cs.lth.se>
*
* This file is part of Actors model compiler.
*/
aspect SDF {
syn boolean ASTNode.isSDF() = false;
eq Start.isSDF() = getSpecification().isSDF();
eq Specification.isSDF() {
boolean result = false;
for (Element e : getElements()) {
result |= e.isSDF();
}
return result;
}
eq design.isSDF() = nbrOfActions() == 1;
}
aspect Misc {
syn int design.nbrOfActions() {
int nbrActions = 0;
for (Element e : getElements()) {
if (e.isAction()) {
nbrActions++;
}
}
return nbrActions;
}
syn boolean Element.isAction() = false;
eq module.isAction() {
return kind().equals("action");
}
syn String module.kind() {
for (int i=0; i<getNumAttribute(); i++) {
Attribute a = getAttribute(i);
if (a instanceof kind) {
return fix(a.getAttrValue().getLITERAL());
}
}
return "";
}
static String ASTNode.fix(String s) {
if (s.indexOf('"') == 0) {
return s.substring(1,s.length()-1);
}
return s;
}
}
aspect Fixes {
int ASTNode.numChildren;
int ASTNode.numChildren() {return jjtGetNumChildren();}
int List.getNumNoTransformChild() {return getNumChildNoTransform();}
int Opt.getNumChildNoTransfrom() {return getNumChildNoTransform();}
}
\ No newline at end of file
/* -*-Java-*- */
/*
* Copyright (C) 2009 Anders Nilsson <anders.nilsson@cs.lth.se>
*
* This file is part of Actors model compiler.
*/
import xlimAST.Start;
public class SDFAnalysis extends Parser {
public static void main(String args[]) {
Start ast = parse(args);
System.out.println(ast.isSDF());
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!--Actor SubOne--><design name="SubOne">
<actor-port dir="in" name="In" size="32" typeName="int"/>
<actor-port dir="out" name="Out" size="32" typeName="int"/>
<!--Action 0$id$w86ab2--><module autostart="false" kind="action" name="actionAtLine_3">
<operation kind="pinRead" portName="In" removable="no" style="simple">
<port dir="out" size="32" source="0$id$w86ab2b1b1" typeName="int"/>
</operation>
<!--Expr 0$id$w86ab2b3b1ab1--><operation kind="noop">
<port dir="in" source="0$id$w86ab2b1b1"/>
<port dir="out" size="32" source="0$id$w86ab2b3b1ab1" typeName="int"/>
</operation>
<!--Expr 1$id$w352ab3b3b1ab1b1--><operation kind="$literal_Integer" value="1">
<port dir="out" size="2" source="1$id$w352ab3b3b1ab1b1" typeName="int"/>
</operation>
<!--Expr 1$id$w352ab3b3b1a--><operation kind="$sub">
<port dir="in" source="0$id$w86ab2b3b1ab1"/>
<port dir="in" source="1$id$w352ab3b3b1ab1b1"/>
<port dir="out" size="33" source="1$id$w352ab3b3b1a" typeName="int"/>
</operation>
<!--Expr 0$id$w86ab2b3b1--><operation kind="noop">
<port dir="in" source="1$id$w352ab3b3b1a"/>
<port dir="out" size="33" source="0$id$w86ab2b3b1" typeName="int"/>
</operation>
<operation kind="pinWrite" portName="Out" style="simple">
<port dir="in" source="0$id$w86ab2b3b1"/>
</operation>
</module>
<module autostart="true" kind="action-scheduler" name="action-scheduler"
sourceName="action-scheduler">
<operation kind="$literal_Integer" value="1">
<port dir="out" size="1" source="0$id$w86a$sched$true" typeName="bool"/>
</operation>
<module kind="loop">
<module decision="0$id$w86a$sched$true$loop" kind="test">
<operation kind="noop">
<port dir="in" source="0$id$w86a$sched$true"/>
<port dir="out" size="1" source="0$id$w86a$sched$true$loop" typeName="bool"/>
</operation>
</module>
<module kind="body">
<operation kind="pinAvail" portName="In">
<port dir="out" size="32" source="In$pinAvail" typeName="int"/>
</operation>
<!--Input peeks for action 0$id$w86ab2--><operation kind="$literal_Integer" value="1">
<port dir="out" size="32" source="0$id$w86ab2b1$In$tokenCount" typeName="int"/>
</operation>
<operation kind="$ge">
<port dir="in" source="In$pinAvail"/>
<port dir="in" source="0$id$w86ab2b1$In$tokenCount"/>
<port dir="out" size="1" source="0$id$w86ab2b1$ready" typeName="bool"/>
</operation>
<operation kind="$literal_Integer" value="0">
<port dir="out" size="1" source="0$id$w86ab2b1b1$index$1" typeName="int"/>
</operation>
<operation kind="pinPeek" portName="In">
<port dir="in" source="0$id$w86ab2b1b1$index$1"/>
<port dir="out" size="32" source="0$id$w86ab2b1b1" typeName="int"/>
</operation>
<!--Local variables used in guards of action 0$id$w86ab2--><!--Guard for action 0$id$w86ab2--><operation kind="$and">
<port dir="in" source="0$id$w86ab2b1$ready"/>
<port dir="out" size="1" source="0$id$w86ab2$guard" typeName="bool"/>
</operation>
<operation kind="pinStatus" portName="Out">
<port dir="out" size="1" source="0$id$w86ab1$status" typeName="bool"/>
</operation>
<operation kind="$and">
<port dir="in" source="0$id$w86ab1$status"/>
<port dir="out" size="1" source="0$id$w86ab2$fireable" typeName="bool"/>
</operation>
<module kind="if">
<module decision="always$state$0$id$w86ab2$guard$read" kind="test">
<operation kind="noop">
<port dir="in" source="0$id$w86ab2$guard"/>
<port dir="out" size="1" source="always$state$0$id$w86ab2$guard$read" typeName="bool"/>
</operation>
</module>
<module kind="then">
<module kind="if">
<module decision="always$state$0$id$w86ab2$fireable" kind="test">
<operation kind="noop">
<port dir="in" source="0$id$w86ab2$fireable"/>
<port dir="out" size="1" source="always$state$0$id$w86ab2$fireable" typeName="bool"/>
</operation>
</module>
<module kind="then">
<operation kind="taskCall" target="actionAtLine_3"/>
</module>
</module>
</module>
</module>
</module>
</module>
</module>
</design>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment