X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Ffleet%2Ffpga%2FFpgaDock.java;h=b06bc68a0c50adde45e8c655d860ffc0f1f2d06b;hb=2b736370b06cd95ae346213c3688264f851c61ed;hp=d8bbef17544218a5a97ca4f947454c1acb3c1956;hpb=e68cb2a0117b551e2e1340e7daab270258cb32ac;p=fleet.git diff --git a/src/edu/berkeley/fleet/fpga/FpgaDock.java b/src/edu/berkeley/fleet/fpga/FpgaDock.java index d8bbef1..b06bc68 100644 --- a/src/edu/berkeley/fleet/fpga/FpgaDock.java +++ b/src/edu/berkeley/fleet/fpga/FpgaDock.java @@ -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"));