add currently-commented-out code to put a wig-wag in the instruction fifo
[fleet.git] / src / edu / berkeley / fleet / fpga / FpgaDock.java
index d8bbef1..b06bc68 100644 (file)
@@ -18,8 +18,13 @@ import java.util.*;
 
 public class FpgaDock extends FleetTwoDock implements FabricElement {
 
-    private static final int INSTRUCTION_FIFO_SIZE = 12;
-    private static final int EPILOGUE_FIFO_SIZE    = 0;
+    //private static final int INSTRUCTION_FIFO_SIZE = 12;
+
+    // Marina has 12 latches in the ring, 9 of which are wagged (plus
+    // M1, OD, RQ), so max capacity is 11 instructions
+    static final int INSTRUCTION_FIFO_SIZE = 11;
+    static final int INSTRUCTION_WAGGED_STAGES = 8;
+
     //private static final int DATA_FIFO_SIZE        = 4;
     static final int DATA_FIFO_SIZE        = 8;
         
@@ -159,7 +164,10 @@ public class FpgaDock extends FleetTwoDock implements FabricElement {
             int dfifo_width = inbox ? fpga.getWordWidth()+1 : 1;
 
             // FIXME: assumes fpga.DISPATCH_PATH is at top of word!!!
-            Module ififo_m   = new FifoModule(INSTRUCTION_FIFO_SIZE, fpga.getWordWidth()-fpga.DISPATCH_PATH.valmaskwidth);
+            Module ififo_m_1   = new FifoModule(INSTRUCTION_FIFO_SIZE, fpga.getWordWidth()-fpga.DISPATCH_PATH.valmaskwidth);
+            //Module ififo_m_1   = new FifoModule(INSTRUCTION_FIFO_SIZE-INSTRUCTION_WAGGED_STAGES, fpga.getWordWidth()-fpga.DISPATCH_PATH.valmaskwidth);
+            //Module ififo_m_2   = new FifoModule(INSTRUCTION_WAGGED_STAGES, fpga.getWordWidth()-fpga.DISPATCH_PATH.valmaskwidth, true);
+
             Module dfifo_m   = new FifoModule(DATA_FIFO_SIZE,        dfifo_width);
 
             Module.SourcePort instruction   = createInputPort("instruction", fpga.WIDTH_PACKET);
@@ -195,9 +203,12 @@ public class FpgaDock extends FleetTwoDock implements FabricElement {
             Module.SinkPort   data_out      = inbox ? ship_in   : fabric_out;
             Module.SourcePort data_in       = inbox ? dfifo_out : ship_out;
 
-            Module.InstantiatedModule ififo = new Module.InstantiatedModule(this, ififo_m);
-            Module.SinkPort   ififo_in      = ififo.getInputPort("in");
-            Module.SourcePort ififo_out     = ififo.getOutputPort("out");
+            Module.InstantiatedModule ififo_1 = new Module.InstantiatedModule(this, ififo_m_1);
+            //Module.InstantiatedModule ififo_2 = new Module.InstantiatedModule(this, ififo_m_2);
+            //ififo_1.getOutputPort("out").connect(ififo_2.getInputPort("in"));
+            Module.SinkPort   ififo_in      = ififo_1.getInputPort("in");
+            //Module.SourcePort ififo_out     = ififo_2.getOutputPort("out");
+            Module.SourcePort ififo_out     = ififo_1.getOutputPort("out");
 
             Module.InstantiatedModule torpedo_branch = new Module.InstantiatedModule(this, new TorpedoBranchModule());
             instruction.connect(torpedo_branch.getInputPort("in"));