relocate InstructionEncoder to FleetTwoFleet and make it a subclass of Fleet
authoradam <adam@megacz.com>
Wed, 25 Jun 2008 11:04:10 +0000 (12:04 +0100)
committeradam <adam@megacz.com>
Wed, 25 Jun 2008 11:04:10 +0000 (12:04 +0100)
16 files changed:
src/edu/berkeley/fleet/assembler/Parser.java
src/edu/berkeley/fleet/fpga/Client.java
src/edu/berkeley/fleet/fpga/FabricElement.java
src/edu/berkeley/fleet/fpga/FifoModule.java
src/edu/berkeley/fleet/fpga/Fpga.java
src/edu/berkeley/fleet/fpga/FpgaDestination.java
src/edu/berkeley/fleet/fpga/FpgaDock.java
src/edu/berkeley/fleet/fpga/FpgaPath.java
src/edu/berkeley/fleet/fpga/FpgaShip.java
src/edu/berkeley/fleet/fpga/FunnelModule.java
src/edu/berkeley/fleet/fpga/HornModule.java
src/edu/berkeley/fleet/fpga/verilog/Verilog.java
src/edu/berkeley/fleet/interpreter/Interpreter.java
src/edu/berkeley/fleet/interpreter/Outbox.java
src/edu/berkeley/fleet/interpreter/Packet.java
src/edu/berkeley/fleet/two/FleetTwoFleet.java [moved from src/edu/berkeley/fleet/ies44/InstructionEncoder.java with 97% similarity]

index 9359422..be45472 100644 (file)
@@ -6,7 +6,7 @@ import edu.berkeley.sbp.misc.*;
 import edu.berkeley.sbp.meta.*;
 import edu.berkeley.sbp.util.*;
 import static edu.berkeley.fleet.util.BitManipulations.*;
-import edu.berkeley.fleet.ies44.*;
+import edu.berkeley.fleet.two.*;
 import edu.berkeley.fleet.api.Instruction.Set;
 import static edu.berkeley.fleet.api.Instruction.*;
 import static edu.berkeley.fleet.api.Instruction.Set.*;
@@ -110,8 +110,8 @@ public class Parser {
                 if (c.isCBD.contains(j)) {
                     Set old = (Set)inst;
                     long lit = 0;
-                    lit = InstructionEncoder.CBD_SIZE.setval(lit, codeBags.get((int)old.immediate).size());
-                    lit = InstructionEncoder.CBD_OFFSET.setval(lit, codeBagMap[(int)old.immediate]);
+                    lit = FleetTwoFleet.CBD_SIZE.setval(lit, codeBags.get((int)old.immediate).size());
+                    lit = FleetTwoFleet.CBD_OFFSET.setval(lit, codeBagMap[(int)old.immediate]);
                     inst = new Set(old.dock, false, IgnoreOLC, SetDest.DataLatch, lit);
                 }
                 ret.add(inst);
@@ -379,7 +379,7 @@ public class Parser {
                     }
 
 
-                    if (InstructionEncoder.isSmallEnoughToFit(literal)) {
+                    if (FleetTwoFleet.isSmallEnoughToFit(literal)) {
                         cb.add(new Set(dock, looping, predicate, SetDest.DataLatch, (literal)));
                     } else {
                         // FIXME bitwidth hardwired!
index e3cc39f..c07442a 100644 (file)
@@ -84,7 +84,7 @@ public class Client extends FleetProcess {
                 | ((program[i+3] & 0xffL) << 16)
                 | ((program[i+4] & 0xffL) << 8)
                 | ((program[i+5] & 0xffL) << 0);
-            Instruction inst = fpga.readInstruction(fpga.getUniversalSource(), lit);
+            Instruction inst = fpga.readInstruction(lit, fpga.getUniversalSource());
             if (i==0) {
                 long offset = (lit >> 6) & ~(-1L << 10);
                 long size   = (lit >> 0) & ~(-1L << 6);
@@ -93,9 +93,9 @@ public class Client extends FleetProcess {
                 offset = 0;
                 inst = new Instruction.Shift(fpga.getUniversalSource(), false, IgnoreOLC, new BitVector(fpga.getWordWidth()).set(0));
             } else {
-                if (fpga.writeInstruction(fpga.getUniversalSource(), inst) != lit)
+                if (fpga.writeInstruction(inst, fpga.getUniversalSource()) != lit)
                     throw new RuntimeException("no match: " + inst + " @"+(i/6)+"\n"+Long.toString(lit,16)+
-                                               "\n"+Long.toString(fpga.writeInstruction(fpga.getUniversalSource(), inst),16));
+                                               "\n"+Long.toString(fpga.writeInstruction(inst, fpga.getUniversalSource()),16));
             }
             //fpga.writeInstruction(newpd, fpga.getUniversalSource(), inst);
         }
index 5e0d7a3..59de514 100644 (file)
@@ -1,6 +1,6 @@
 package edu.berkeley.fleet.fpga;
 import edu.berkeley.fleet.api.*;
-import edu.berkeley.fleet.ies44.*;
+import edu.berkeley.fleet.two.*;
 import edu.berkeley.fleet.*;
 import java.lang.reflect.*;
 import edu.berkeley.sbp.chr.*;
@@ -9,7 +9,7 @@ import edu.berkeley.sbp.meta.*;
 import edu.berkeley.sbp.util.*;
 import java.util.*;
 import java.io.*;
-import static edu.berkeley.fleet.ies44.InstructionEncoder.*;
+import static edu.berkeley.fleet.two.FleetTwoFleet.*;
 import static edu.berkeley.fleet.fpga.verilog.Verilog.*;
 
 
index bb05228..3cb6bc5 100644 (file)
@@ -1,6 +1,6 @@
 package edu.berkeley.fleet.fpga;
 import edu.berkeley.fleet.api.*;
-import edu.berkeley.fleet.ies44.*;
+import edu.berkeley.fleet.two.*;
 import edu.berkeley.fleet.*;
 import java.lang.reflect.*;
 import edu.berkeley.sbp.chr.*;
@@ -9,7 +9,7 @@ import edu.berkeley.sbp.meta.*;
 import edu.berkeley.sbp.util.*;
 import java.util.*;
 import java.io.*;
-import static edu.berkeley.fleet.ies44.InstructionEncoder.*;
+import static edu.berkeley.fleet.two.FleetTwoFleet.*;
 import static edu.berkeley.fleet.fpga.verilog.Verilog.*;
 
 public class FifoModule extends Module {
index 36f20b8..e2f679e 100644 (file)
@@ -1,7 +1,7 @@
 package edu.berkeley.fleet.fpga;
 import edu.berkeley.fleet.fpga.*;
 import edu.berkeley.fleet.api.*;
-import edu.berkeley.fleet.ies44.*;
+import edu.berkeley.fleet.two.*;
 import edu.berkeley.fleet.*;
 import java.lang.reflect.*;
 import edu.berkeley.sbp.chr.*;
@@ -11,11 +11,11 @@ import edu.berkeley.sbp.util.*;
 import java.util.*;
 import java.io.*;
 import edu.berkeley.fleet.two.*;
-import static edu.berkeley.fleet.ies44.InstructionEncoder.*;
+import static edu.berkeley.fleet.two.FleetTwoFleet.*;
 import static edu.berkeley.fleet.fpga.verilog.Verilog.*;
 
 
-public class Fpga extends Fleet {
+public class Fpga extends FleetTwoFleet {
 
     public Ship getShip(String type, int ordinal) {
         for(Ship s : this)
@@ -247,17 +247,10 @@ public class Fpga extends Fleet {
         } catch (Exception e) { throw new RuntimeException(e); }
     }
 
-    private FpgaInstructionEncoder iie = new FpgaInstructionEncoder();
-    public Instruction readInstruction(DataInputStream is, Dock dispatchFrom) throws IOException { return iie.readInstruction(dispatchFrom, is); }
-    public Instruction readInstruction(Dock dispatchFrom, long instr) { return iie.readInstruction(dispatchFrom, instr); }
-    public long writeInstruction(Dock dispatchFrom, Instruction d) { return iie.writeInstruction(dispatchFrom, d); }
-    public void writeInstruction(DataOutputStream os, Dock dispatchFrom, Instruction d) throws IOException { iie.writeInstruction(os, dispatchFrom, d); }
 
     private Ship debugShip;
 
 
-    public Dock getUniversalSource() { return debugShip.getDock("in"); }
-    private class FpgaInstructionEncoder extends InstructionEncoder {
         public Dock getUniversalSource() { return debugShip.getDock("in"); }
         public long getDestAddr(Path path) {
             return ((FpgaPath)path).toLong();
@@ -281,5 +274,5 @@ public class Fpga extends Fleet {
                         return bb;
             return null;
         }
-    }
+
 }
index 976f0d7..9a61077 100644 (file)
@@ -1,6 +1,6 @@
 package edu.berkeley.fleet.fpga;
 import edu.berkeley.fleet.api.*;
-import edu.berkeley.fleet.ies44.*;
+import edu.berkeley.fleet.two.*;
 import edu.berkeley.fleet.*;
 import java.lang.reflect.*;
 import edu.berkeley.sbp.chr.*;
@@ -9,7 +9,7 @@ import edu.berkeley.sbp.meta.*;
 import edu.berkeley.sbp.util.*;
 import java.util.*;
 import java.io.*;
-import static edu.berkeley.fleet.ies44.InstructionEncoder.*;
+import static edu.berkeley.fleet.two.FleetTwoFleet.*;
 import static edu.berkeley.fleet.fpga.verilog.Verilog.*;
 import edu.berkeley.fleet.api.*;
 import edu.berkeley.fleet.api.Dock;
index 33bfc9e..820d2b7 100644 (file)
@@ -1,6 +1,6 @@
 package edu.berkeley.fleet.fpga;
 import edu.berkeley.fleet.api.*;
-import edu.berkeley.fleet.ies44.*;
+import edu.berkeley.fleet.two.*;
 import edu.berkeley.fleet.*;
 import java.lang.reflect.*;
 import edu.berkeley.sbp.chr.*;
@@ -9,7 +9,7 @@ import edu.berkeley.sbp.meta.*;
 import edu.berkeley.sbp.util.*;
 import java.util.*;
 import java.io.*;
-import static edu.berkeley.fleet.ies44.InstructionEncoder.*;
+import static edu.berkeley.fleet.two.FleetTwoFleet.*;
 import static edu.berkeley.fleet.fpga.verilog.Verilog.*;
 import edu.berkeley.fleet.api.*;
 import edu.berkeley.fleet.api.Dock;
@@ -225,7 +225,7 @@ public class FpgaDock extends FleetTwoDock implements FabricElement {
                                                                             SHIFT.verilogVal("ondeck")+")")),
                                      new ConditionalAction("`predicate_met(ondeck) && "+SET_IMMEDIATE.verilog("ondeck"),
                                                            new AssignAction(data_latch,
-                                                                            "{ {"+(WIDTH_WORD-InstructionEncoder.DataLatch_WIDTH)+
+                                                                            "{ {"+(WIDTH_WORD-FleetTwoFleet.DataLatch_WIDTH)+
                                                                             "{"+SET_IMMEDIATE_EXTEND.verilogVal("ondeck")+"}}, "+
                                                                             SET_IMMEDIATE.verilogVal("ondeck")+" }")),
                                      new ConditionalAction("`predicate_met(ondeck) && `instruction_is_setflags(ondeck)",
index 1007296..ff00574 100644 (file)
@@ -1,6 +1,6 @@
 package edu.berkeley.fleet.fpga;
 import edu.berkeley.fleet.api.*;
-import edu.berkeley.fleet.ies44.*;
+import edu.berkeley.fleet.two.*;
 import edu.berkeley.fleet.*;
 import java.lang.reflect.*;
 import edu.berkeley.sbp.chr.*;
@@ -9,7 +9,7 @@ import edu.berkeley.sbp.meta.*;
 import edu.berkeley.sbp.util.*;
 import java.util.*;
 import java.io.*;
-import static edu.berkeley.fleet.ies44.InstructionEncoder.*;
+import static edu.berkeley.fleet.two.FleetTwoFleet.*;
 import static edu.berkeley.fleet.fpga.verilog.Verilog.*;
 
 
index 53443f1..ac193cd 100644 (file)
@@ -3,7 +3,7 @@ import edu.berkeley.fleet.api.*;
 import java.util.*;
 import java.io.*;
 import edu.berkeley.fleet.two.*;
-import static edu.berkeley.fleet.ies44.InstructionEncoder.*;
+import static edu.berkeley.fleet.two.FleetTwoFleet.*;
 import static edu.berkeley.fleet.fpga.verilog.Verilog.*;
 
 /** a ship, which belongs to a fleet and which may have many ports */
index 3cc9256..bda75e8 100644 (file)
@@ -1,6 +1,6 @@
 package edu.berkeley.fleet.fpga;
 import edu.berkeley.fleet.api.*;
-import edu.berkeley.fleet.ies44.*;
+import edu.berkeley.fleet.two.*;
 import edu.berkeley.fleet.*;
 import java.lang.reflect.*;
 import edu.berkeley.sbp.chr.*;
@@ -9,7 +9,7 @@ import edu.berkeley.sbp.meta.*;
 import edu.berkeley.sbp.util.*;
 import java.util.*;
 import java.io.*;
-import static edu.berkeley.fleet.ies44.InstructionEncoder.*;
+import static edu.berkeley.fleet.two.FleetTwoFleet.*;
 import static edu.berkeley.fleet.fpga.verilog.Verilog.*;
 
 
index c650a96..ee7d4a6 100644 (file)
@@ -1,6 +1,6 @@
 package edu.berkeley.fleet.fpga;
 import edu.berkeley.fleet.api.*;
-import edu.berkeley.fleet.ies44.*;
+import edu.berkeley.fleet.two.*;
 import edu.berkeley.fleet.*;
 import java.lang.reflect.*;
 import edu.berkeley.sbp.chr.*;
@@ -9,7 +9,7 @@ import edu.berkeley.sbp.meta.*;
 import edu.berkeley.sbp.util.*;
 import java.util.*;
 import java.io.*;
-import static edu.berkeley.fleet.ies44.InstructionEncoder.*;
+import static edu.berkeley.fleet.two.FleetTwoFleet.*;
 import static edu.berkeley.fleet.fpga.verilog.Verilog.*;
 
 
index 604b68d..8da080f 100644 (file)
@@ -1,6 +1,6 @@
 package edu.berkeley.fleet.fpga.verilog;
 import edu.berkeley.fleet.api.*;
-import edu.berkeley.fleet.ies44.*;
+import edu.berkeley.fleet.two.*;
 import edu.berkeley.fleet.*;
 import java.lang.reflect.*;
 import edu.berkeley.sbp.chr.*;
@@ -9,7 +9,7 @@ import edu.berkeley.sbp.meta.*;
 import edu.berkeley.sbp.util.*;
 import java.util.*;
 import java.io.*;
-import static edu.berkeley.fleet.ies44.InstructionEncoder.*;
+import static edu.berkeley.fleet.two.FleetTwoFleet.*;
 
 public class Verilog {
 
index 5db6ae1..c3ec582 100644 (file)
@@ -6,12 +6,12 @@ import java.lang.reflect.*;
 import edu.berkeley.fleet.*;
 import edu.berkeley.sbp.util.ANSI;
 import edu.berkeley.fleet.api.*;
-import edu.berkeley.fleet.ies44.*;
+import edu.berkeley.fleet.two.*;
 import edu.berkeley.fleet.assembler.*;
 import edu.berkeley.fleet.two.*;
 import edu.berkeley.fleet.util.*;
 
-public class Interpreter extends Fleet implements Parser.FleetWithDynamicShips {
+public class Interpreter extends FleetTwoFleet implements Parser.FleetWithDynamicShips {
 
     public Ship getShip(String type, int ordinal) {
         for(Ship s : this)
@@ -142,14 +142,8 @@ public class Interpreter extends Fleet implements Parser.FleetWithDynamicShips {
 
     // Instruction Encoding /////////////////////////////////////////////////////////////////////////
 
-    public final InterpreterInstructionEncoder iie = new InterpreterInstructionEncoder();
-    public Instruction readInstruction(DataInputStream is, Dock dispatchFrom) throws IOException { return iie.readInstruction(dispatchFrom, is); }
-    public Instruction readInstruction(Dock dispatchFrom, long instr) { return iie.readInstruction(dispatchFrom, instr); }
-    public long writeInstruction(Dock dispatchFrom, Instruction d) { return writeInstruction(dispatchFrom, d); }
-    public void writeInstruction(DataOutputStream os, Dock dispatchFrom, Instruction d) throws IOException { iie.writeInstruction(os, dispatchFrom, d); }
-    public Dock getUniversalSource() { return null; }
-    public class InterpreterInstructionEncoder extends InstructionEncoder {
     public Dock getUniversalSource() { return null; }
+
         public long getDestAddr(Path path) { throw new RuntimeException(); }
         public long getBoxInstAddr(Dock box) { return ((InterpreterDock)box).getDestAddr(); }
         public Path getPathByAddr(Dock source, long dest) { throw new RuntimeException(); }
@@ -169,7 +163,7 @@ public class Interpreter extends Fleet implements Parser.FleetWithDynamicShips {
                         return bb;
             return null;
         }
-    }
+
 
     // ShipDescription //////////////////////////////////////////////////////////////////////////////
 
index f3efd49..8b06cbc 100644 (file)
@@ -1,7 +1,7 @@
 package edu.berkeley.fleet.interpreter;
 import edu.berkeley.sbp.util.ANSI;
 import edu.berkeley.fleet.api.*;
-import edu.berkeley.fleet.ies44.*;
+import edu.berkeley.fleet.two.*;
 import edu.berkeley.sbp.util.*;
 import edu.berkeley.fleet.util.*;
 import static edu.berkeley.fleet.util.BitManipulations.*;
@@ -70,8 +70,8 @@ public class Outbox extends InstructionDock {
             InterpreterDestination dest = (InterpreterDestination)(Object)instruction.path;
             if (instruction.latchPath) {
                 // FIXME: still not supported
-                long bits = InstructionEncoder.DISPATCH_PATH.getval(register);
-                getInterpreter().dispatch(((Interpreter)getInterpreter()).iie.readInstruction(null, register), bits);
+                long bits = FleetTwoFleet.DISPATCH_PATH.getval(register);
+                getInterpreter().dispatch(((Interpreter)getInterpreter()).readInstruction(register, null), bits);
                 /*
                 dest = (InterpreterDestination)(((Interpreter)getInterpreter()).iie.getDestByAddr(bits));
                 if (dest == null) {
index 8b5c940..cdaf31f 100644 (file)
@@ -6,7 +6,7 @@ import java.lang.reflect.*;
 import edu.berkeley.fleet.*;
 import edu.berkeley.sbp.util.ANSI;
 import edu.berkeley.fleet.api.*;
-import edu.berkeley.fleet.ies44.*;
+import edu.berkeley.fleet.two.*;
 
 class Packet {
 
@@ -1,4 +1,4 @@
-package edu.berkeley.fleet.ies44;
+package edu.berkeley.fleet.two;
 import java.io.*;
 import edu.berkeley.fleet.api.*;
 import edu.berkeley.fleet.util.*;
@@ -7,8 +7,7 @@ import static edu.berkeley.fleet.api.Instruction.Set.*;
 import static edu.berkeley.fleet.api.Instruction.*;
 import static edu.berkeley.fleet.api.Predicate.*;
 
-
-public abstract class InstructionEncoder {
+public abstract class FleetTwoFleet extends Fleet {
 
     public static final Mask PACKET_TOKEN               = new Mask("v.................................................");
     public static final Mask PACKET_DATA                = new Mask(".vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv............");
@@ -92,7 +91,7 @@ public abstract class InstructionEncoder {
     protected abstract Dock getUniversalSource();
 
     /** read a machine-formatted instruction from a file (into a Java object) */
-    public Instruction readInstruction(Dock dispatchFrom, DataInputStream is) throws IOException {
+    public Instruction readInstruction(DataInputStream is, Dock dispatchFrom) throws IOException {
         long inst = 0;
         try {
             inst = (inst << 8) | (is.readByte() & 0xff);
@@ -101,13 +100,13 @@ public abstract class InstructionEncoder {
             inst = (inst << 8) | (is.readByte() & 0xff);
             inst = (inst << 8) | (is.readByte() & 0xff);
             inst = (inst << 8) | (is.readByte() & 0xff);
-            return readInstruction(dispatchFrom, inst);
+            return readInstruction(inst, dispatchFrom);
         } catch (EOFException eof) {
             return null;
         }
     }
 
-    public Instruction readInstruction(Dock dispatchFrom, long inst) {
+    public Instruction readInstruction(long inst, Dock dispatchFrom) {
         Dock dock = getPathByAddr(getUniversalSource(), DISPATCH_PATH.getval(inst)).getDestination().getDock();
 
         if (TAIL.get(inst))   return new Tail(dock);
@@ -180,7 +179,7 @@ public abstract class InstructionEncoder {
         throw new RuntimeException("unknown instruction: 0x" + Long.toString(inst, 16));
     }
 
-    public long writeInstruction(Dock dispatchFrom, Instruction d) {
+    public long writeInstruction(Instruction d, Dock dispatchFrom) {
         long instr = 0;
 
         if (d.dock != null)
@@ -280,7 +279,7 @@ public abstract class InstructionEncoder {
     }
 
     public void writeInstruction(DataOutputStream os, Dock dispatchFrom, Instruction d) throws IOException {
-        long instr = writeInstruction(dispatchFrom, d);
+        long instr = writeInstruction(d, dispatchFrom);
         for(int i=5; i>=0; i--)
             os.write(BitManipulations.getIntField(i*8+7, i*8, instr));
     }