X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Ffleet%2Ffpga%2FFunnelModule.java;h=49679a530141005a7fca3d64d8efb21229fd45a7;hb=a4b0968866c01e3a0420296f9d49d1b9aab1a871;hp=3cc92568c06d34598661f869b55381c5cb5eb40e;hpb=04308be26da4be224dd02dc95d27f061fc32f4b8;p=fleet.git diff --git a/src/edu/berkeley/fleet/fpga/FunnelModule.java b/src/edu/berkeley/fleet/fpga/FunnelModule.java index 3cc9256..49679a5 100644 --- a/src/edu/berkeley/fleet/fpga/FunnelModule.java +++ b/src/edu/berkeley/fleet/fpga/FunnelModule.java @@ -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,18 +9,22 @@ 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 FunnelModule extends Module { + private static final int WIDTH = WIDTH_PACKET; + public FunnelModule() { super("funnel"); - Module.SinkPort outp = createOutputPort("out", WIDTH_PACKET, ""); + Module.SinkPort outp = createOutputPort("out", WIDTH, ""); Module.SourcePort in1p = createInputPort("in1", WIDTH_PACKET); Module.SourcePort in2p = createInputPort("in2", WIDTH_PACKET); - new Event(new Object[] { in1p, outp }, + + // FIXME: biased towards in2p side + new Event(new Object[] { in1p, outp, "!"+in2p.getReq() }, new Action[] { in1p, outp, new AssignAction(outp, in1p) }); new Event(new Object[] { in2p, outp }, @@ -32,12 +36,12 @@ public class FunnelModule extends Module { private FabricElement in1 = null; private FabricElement in2 = null; public FabricElement out = null; - public Module.Port getOutputPort() { return getOutputPort("out"); } + public Module.SourcePort getOutputPort() { return getOutputPort("out"); } public Module.Port getInputPort() { throw new RuntimeException("funnel has multiple inputs"); } - public FunnelInstance(Module thisModule, Module.Port p1, Module.Port p2) { + public FunnelInstance(Module thisModule, Module.SourcePort p1, Module.SourcePort p2) { super(thisModule, new FunnelModule()); - p1.connect(this.getInputPort("in1")); - p2.connect(this.getInputPort("in2")); + if (p1 != null) p1.connect(this.getInputPort("in1")); + if (p2 != null) p2.connect(this.getInputPort("in2")); } public FunnelInstance(Module thisModule, FabricElement in1, FabricElement in2) { super(thisModule, new FunnelModule());