java -Xmx500m -cp lib/edu.berkeley.sbp.jar:fleeterpreter.jar edu.berkeley.fleet.FleetParser --dump-code < demo.fleet
fabric: fleeterpreter.jar
- java -Xmx500m -cp lib/edu.berkeley.sbp.jar:fleeterpreter.jar edu.berkeley.fleet.FleetParser --dump-fabric < demo.fleet
+ java -Xmx500m -cp lib/edu.berkeley.sbp.jar:fleeterpreter.jar edu.berkeley.fleet.FleetParser --dump-fabric < demo.fleet > ../fleet/build/fabric.balsa
+ cat ../fleet/build/fabric.balsa
applet: fleeterpreter.jar
java -Xmx500m -cp lib/edu.berkeley.sbp.jar:fleeterpreter.jar edu.berkeley.fleet.FleetApplet < test.fleet
cd bin; jar xvf ../lib/edu.berkeley.sbp.jar
echo 'Main-Class: edu.berkeley.fleet.FleetParser' > bin/manifest
cd bin; jar cvmf manifest ../$@ .
+
+program:
+ make code
+ scp fleet.bin root@bee441.cs.berkeley.edu:
+# ssh root@bee441.cs.berkeley.edu 'user_unprogram 1;user_program 1 main.bit; echo ok; ./a.out /dev/selectmap1 fleet.bin'
\ No newline at end of file
import java.util.*;
import java.io.*;
+import static edu.berkeley.fleet.Instruction.IgnoreCopyTake;
/** a codebag */
public class CodeBag {
Instruction inst = (Instruction)d;
dump(os, inst.source.resolve(fleet).instr_bits);
dump(os, inst.source.resolve(fleet).instr_addr);
- dump(os, 5);
- dump(os, 10); // input+output
- dump(os, inst.destination.resolve(fleet).bits);
- dump(os, inst.destination.resolve(fleet).addr);
+ dump(os, 1); dump(os, inst.trigger ? 1 : 0);
+ dump(os, 1); dump(os, inst.dataIn != IgnoreCopyTake.IGNORE ? 1 : 0);
+ dump(os, 1); dump(os, inst.dataIn == IgnoreCopyTake.COPY ? 1 : 0);
+ dump(os, 1); dump(os, inst.dataOut ? 1 : 0);
+ dump(os, 1); dump(os, inst.ack ? 1 : 0);
+ if (inst.destination != null) {
+ dump(os, inst.destination.resolve(fleet).bits);
+ dump(os, inst.destination.resolve(fleet).addr);
+ }
dump(os, 0);
System.out.println();
} else if (d instanceof Literal.LiteralDatum) {
dump(os, 5);
dump(os, 2);
dump(os, 32);
- dump(os, ld.data);
+ dump(os, (ld.data >> 24) & 0xff);
+ dump(os, (ld.data >> 16) & 0xff);
+ dump(os, (ld.data >> 8) & 0xff);
+ dump(os, (ld.data >> 0) & 0xff);
+ //dump(os, 0xff);
+ //dump(os, 0xff);
+ //dump(os, 0xff);
+ //dump(os, 0xff);
dump(os, 0);
System.out.println();
}
ArrayList instructionports = new ArrayList<Port>();
for(Ship ship : shiplist)
for(Port port : ship.portlist)
- instructionports.add(port);
+ if (!(port.getName().equals("out") && port.getShip() instanceof DebugShip))
+ instructionports.add(port);
FabricTree instructions =
new FabricTree((Port[])instructionports.toArray(new Port[0]),
"horn",
ArrayList inputports = new ArrayList<Port>();
for(Ship ship : shiplist)
for(Port port : ship.portlist)
- if (port instanceof Inbox)
+ if (!(port.getName().equals("out") && port.getShip() instanceof DebugShip))
inputports.add(port);
FabricTree inputs =
new FabricTree((Port[])inputports.toArray(new Port[0]),
ArrayList outputports = new ArrayList<Port>();
for(Ship ship : shiplist)
for(Port port : ship.portlist)
- if (port instanceof Outbox && !(port.getShip() instanceof DebugShip))
+ if (!(port.getName().equals("out") && port.getShip() instanceof DebugShip))
outputports.add(port);
FabricTree outputs =
new FabricTree((Port[])outputports.toArray(new Port[0]),
System.out.println("procedure fabric(input top_in:XBit; output top_out:XBit)");
System.out.println("is");
- System.out.println(" channel source_debug_out : XBit");
instructions.dumpChannels(true);
outputs.dumpChannels(true);
inputs.dumpChannels(true);
+ for(Ship ship : shiplist)
+ for(Port port : ship.portlist)
+ System.out.println(" channel data_"+ship.getName()+"_"+port.getName()+" : XBit");
System.out.println("begin");
System.out.println(" loop source -> dest end");
System.out.println(" || loop top_in -> instruction end");
- System.out.println(" || loop source_debug_out -> top_out end");
+ System.out.println(" || loop data_debug_out -> top_out end");
System.out.println("");
instructions.dumpChannels(false);
System.out.println("");
for(Port port : ship.portlist) {
if (!first) System.out.print(", ");
first = false;
- System.out.print("instruction_"+port.getShip().getName()+"_"+port.getName());
- System.out.print(",");
- if (port instanceof Inbox)
- System.out.print("dest_"+port.getShip().getName()+"_"+port.getName());
- else
- System.out.print("source_"+port.getShip().getName()+"_"+port.getName());
+ System.out.print("data_"+port.getShip().getName()+"_"+port.getName());
System.out.print(" ");
}
System.out.println(")");
+
+ for(Port port : ship.portlist) {
+ if (ship instanceof DebugShip && port instanceof Outbox)
+ continue;
+ System.out.print(" || ");
+ if (port instanceof Inbox)
+ System.out.print("inbox(");
+ else
+ System.out.print("outbox(");
+ System.out.print("instruction_"+port.getShip().getName()+"_"+port.getName());
+ System.out.print(", ");
+ System.out.print("dest_"+port.getShip().getName()+"_"+port.getName());
+ System.out.print(", ");
+ System.out.print("source_"+port.getShip().getName()+"_"+port.getName());
+ System.out.print(", ");
+ System.out.print("data_"+port.getShip().getName()+"_"+port.getName());
+ System.out.print(")");
+ System.out.println();
+ }
+
}
System.out.println("end");
}