+++ /dev/null
-package edu.berkeley.fleet.demo;
-import edu.berkeley.fleet.api.*;
-import static edu.berkeley.fleet.api.Instruction.Set.*;
-import edu.berkeley.fleet.interpreter.Interpreter;
-
-public class Test2 {
-
- private static Instruction literal(Dock dock, int literal) {
- return new Instruction.Set(dock, false, Predicate.Default,
- SetDest.DataLatch, literal);
- }
- private static Instruction deliver(Dock dock) {
- return new Instruction.Move(dock, false, Predicate.Default,
- false, null, false, false, false, false, true, false);
- }
- private static Instruction collectAndSend(Dock dock, Destination dest) {
- return new Instruction.Move(dock, false, Predicate.Default,
- false, dock.getPath(dest,null), false, true, true, false, true, false);
- }
- private static Instruction recvAndDeliver(Dock dock) {
- return new Instruction.Move(dock, false, Predicate.Default,
- false, null, false, true, true, false, true, false);
- }
-
- public static void main(String[] s) {
-
- Fleet fleet = new Interpreter(new String[] {
- "alu2",
- "Debug"
- },
- /* logging */ true);
-
- Ship alu = fleet.getShip("alu2", 0);
- Ship debug = fleet.getShip("Debug", 0);
- Dock debugIn = debug.getDock("in");
-
- Instruction[] instructions = new Instruction[] {
- literal(alu.getDock("in1"), 1),
- literal(alu.getDock("in2"), 2),
- literal(alu.getDock("inOp"), 0 /* opcode for ADD */),
- deliver(alu.getDock("in1")),
- deliver(alu.getDock("in2")),
- deliver(alu.getDock("inOp")),
- collectAndSend(alu.getDock("out"), debugIn.getDataDestination()),
- recvAndDeliver(debugIn),
- };
-
- FleetProcess fp = fleet.run(instructions);
- BitVector bv = fp.recvWord();
- System.out.println(bv.toLong());
- fp.terminate();
- }
-
-}
\ No newline at end of file
+++ /dev/null
-package edu.berkeley.fleet.demo;
-import edu.berkeley.fleet.api.*;
-import static edu.berkeley.fleet.api.Instruction.Set.*;
-import edu.berkeley.fleet.interpreter.Interpreter;
-import java.util.*;
-
-public class Test3 {
-
- private static Instruction literal(Dock dock, int literal) {
- return new Instruction.Set(dock, false, Predicate.Default,
- SetDest.DataLatch, literal);
- }
- private static Instruction deliver(Dock dock) {
- return new Instruction.Move(dock, false, Predicate.Default,
- false, null, false, false, false, false, true, false);
- }
- private static Instruction collectAndSend(Dock dock, Destination dest) {
- return new Instruction.Move(dock, false, Predicate.Default,
- false, dock.getPath(dest,null), false, true, true, false, true, false);
- }
- private static Instruction recvAndDeliver(Dock dock) {
- return new Instruction.Move(dock, false, Predicate.Default,
- false, null, false, true, true, false, true, false);
- }
- private static Instruction collectWaitAndSend(Dock dock, Destination dest) {
- return new Instruction.Move(dock, false, Predicate.Default,
- false, dock.getPath(dest,null), true, true, true, false, true, false);
- }
- private static Instruction recvDeliverAndSendToken(Dock dock, Destination ack) {
- return new Instruction.Move(dock, false, Predicate.Default,
- false, dock.getPath(ack,null), false, true, true, false, true, true);
- }
- private static Instruction recvDeliver(Dock dock) {
- return new Instruction.Move(dock, false, Predicate.Default,
- false, null, false, true, true, false, true, false);
- }
- private static Instruction sendToken(Dock dock, Destination ack) {
- return new Instruction.Move(dock, false, Predicate.Default,
- false, dock.getPath(ack,null), false, false, false, false, false, true);
- }
- private static Instruction setInnerCounter(Dock dock, int immediate) {
- return new Instruction.Set(dock, false, Predicate.Default,
- SetDest.InnerLoopCounter, immediate);
- }
-
- public static void main(String[] s) {
-
- Fleet fleet = new Interpreter(new String[] {
- "alu2",
- "Fifo",
- "Debug"
- },
- /* logging */ true);
-
- Ship alu = fleet.getShip("alu2", 0);
- Ship debug = fleet.getShip("Debug", 0);
- Ship fifo = fleet.getShip("Fifo", 0);
- Dock debugIn = debug.getDock("in");
-
- // fill up the fifo with numbers 1..8
- ArrayList<Instruction> instructions = new ArrayList<Instruction>();
- for(int i=0; i<8; i++) {
- instructions.add(literal(fifo.getDock("in"), i));
- instructions.add(deliver(fifo.getDock("in")));
- }
-
- for(Instruction i : new Instruction[] {
-
- // repeat 8 times: wait for a token, sent a datum fifo.out->alu.in1
- setInnerCounter(fifo.getDock("out"), 8),
- collectWaitAndSend(fifo.getDock("out"), alu.getDock("in1").getDataDestination()),
-
- // prime the pump with two tokens
- setInnerCounter(alu.getDock("in1"), 2),
- sendToken(alu.getDock("in1"), fifo.getDock("out").getDataDestination()),
-
- // literal to be added to each argument
- literal(alu.getDock("in2"), 1),
-
- // opcode=ADD
- literal(alu.getDock("inOp"), 0),
-
- // 8x: recieve an argument, add it, send acknowledgement token
- setInnerCounter(alu.getDock("in1"), 8),
- recvDeliverAndSendToken(alu.getDock("in1"), fifo.getDock("out").getDataDestination()),
-
- // 8x: deliver at in2 and inOp
- setInnerCounter(alu.getDock("in2"), 8),
- deliver(alu.getDock("in2")),
- setInnerCounter(alu.getDock("inOp"), 8),
- deliver(alu.getDock("inOp")),
-
- // 8x: take alu output and send it to the debug ship
- setInnerCounter(alu.getDock("out"), 8),
- collectAndSend(alu.getDock("out"), debugIn.getDataDestination()),
-
- setInnerCounter(debug.getDock("in"), 8),
- recvDeliver(debug.getDock("in")),
- })
- instructions.add(i);
-
- FleetProcess fp = fleet.run(instructions.toArray(new Instruction[0]));
- for(int i=0; i<8; i++)
- System.out.println(fp.recvWord().toLong());
- fp.terminate();
- }
-
-}
\ No newline at end of file