From 9458b943bb7ae27da54313af7dd355003846c1d5 Mon Sep 17 00:00:00 2001 From: adam Date: Mon, 3 Nov 2008 10:45:19 +0100 Subject: [PATCH] make HornModule and FunnelModule take an Fpga argument --- src/edu/berkeley/fleet/fpga/Fpga.java | 6 +++--- src/edu/berkeley/fleet/fpga/FunnelModule.java | 18 ++++++++---------- src/edu/berkeley/fleet/fpga/HornModule.java | 12 ++++++------ 3 files changed, 17 insertions(+), 19 deletions(-) diff --git a/src/edu/berkeley/fleet/fpga/Fpga.java b/src/edu/berkeley/fleet/fpga/Fpga.java index bc0aca5..36c2024 100644 --- a/src/edu/berkeley/fleet/fpga/Fpga.java +++ b/src/edu/berkeley/fleet/fpga/Fpga.java @@ -142,7 +142,7 @@ public class Fpga extends FleetTwoFleet { dests.addAll(outbox_dests); top_horn = mkNode((FabricElement[])dests.toArray(new FabricElement[0]), true); FabricElement source = mkNode((FabricElement[])sources.toArray(new FabricElement[0]), false); - FunnelModule.FunnelInstance top_funnel = new FunnelModule.FunnelInstance(top, null, source.getOutputPort()); + FunnelModule.FunnelInstance top_funnel = new FunnelModule.FunnelInstance(this, top, null, source.getOutputPort()); ((FunnelModule.FunnelInstance)source).out = top_funnel; //top_horn.addInput(top_funnel, top_funnel.getOutputPort()); top_funnel.addOutput(top_horn, top_horn.getInputPort()); @@ -178,8 +178,8 @@ public class Fpga extends FleetTwoFleet { FabricElement leftPort = mkNode(ports, is_horn, start, (end+start)/2); FabricElement rightPort = mkNode(ports, is_horn, (end+start)/2, end); return is_horn - ? new HornModule.HornInstance(top, leftPort, rightPort) - : new FunnelModule.FunnelInstance(top, leftPort, rightPort); + ? new HornModule.HornInstance(this, top, leftPort, rightPort) + : new FunnelModule.FunnelInstance(this, top, leftPort, rightPort); } } } diff --git a/src/edu/berkeley/fleet/fpga/FunnelModule.java b/src/edu/berkeley/fleet/fpga/FunnelModule.java index 49679a5..7003a54 100644 --- a/src/edu/berkeley/fleet/fpga/FunnelModule.java +++ b/src/edu/berkeley/fleet/fpga/FunnelModule.java @@ -15,13 +15,11 @@ import static edu.berkeley.fleet.fpga.verilog.Verilog.*; public class FunnelModule extends Module { - private static final int WIDTH = WIDTH_PACKET; - - public FunnelModule() { + public FunnelModule(Fpga fpga) { super("funnel"); - Module.SinkPort outp = createOutputPort("out", WIDTH, ""); - Module.SourcePort in1p = createInputPort("in1", WIDTH_PACKET); - Module.SourcePort in2p = createInputPort("in2", WIDTH_PACKET); + Module.SinkPort outp = createOutputPort("out", fpga.WIDTH_PACKET, ""); + Module.SourcePort in1p = createInputPort("in1", fpga.WIDTH_PACKET); + Module.SourcePort in2p = createInputPort("in2", fpga.WIDTH_PACKET); // FIXME: biased towards in2p side new Event(new Object[] { in1p, outp, "!"+in2p.getReq() }, @@ -38,13 +36,13 @@ public class FunnelModule extends Module { public FabricElement out = null; public Module.SourcePort getOutputPort() { return getOutputPort("out"); } public Module.Port getInputPort() { throw new RuntimeException("funnel has multiple inputs"); } - public FunnelInstance(Module thisModule, Module.SourcePort p1, Module.SourcePort p2) { - super(thisModule, new FunnelModule()); + public FunnelInstance(Fpga fpga, Module thisModule, Module.SourcePort p1, Module.SourcePort p2) { + super(thisModule, new FunnelModule(fpga)); 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()); + public FunnelInstance(Fpga fpga, Module thisModule, FabricElement in1, FabricElement in2) { + super(thisModule, new FunnelModule(fpga)); this.in1 = in1; this.in2 = in2; in1.addOutput(this, this.getInputPort("in1")); diff --git a/src/edu/berkeley/fleet/fpga/HornModule.java b/src/edu/berkeley/fleet/fpga/HornModule.java index 0b3c73a..83b91e2 100644 --- a/src/edu/berkeley/fleet/fpga/HornModule.java +++ b/src/edu/berkeley/fleet/fpga/HornModule.java @@ -15,10 +15,10 @@ import static edu.berkeley.fleet.fpga.verilog.Verilog.*; public class HornModule extends Module { - public HornModule() { - this(PACKET_DEST.width-1, - PACKET_DEST.valmaskmax, - PACKET_DEST.valmaskmin, + public HornModule(Fpga fpga) { + this(fpga.PACKET_DEST.width-1, + fpga.PACKET_DEST.valmaskmax, + fpga.PACKET_DEST.valmaskmin, 0); } private HornModule(int top, @@ -53,8 +53,8 @@ public class HornModule extends Module { public void addInput(FabricElement in, Module.Port source) { source.connect(getInputPort("in")); } public Module.SourcePort getOutputPort() { throw new RuntimeException("horn has multiple outputs"); } public Module.Port getInputPort() { return getInputPort("in"); } - public HornInstance(Module thisModule, FabricElement out0, FabricElement out1) { - super(thisModule, new HornModule()); + public HornInstance(Fpga fpga, Module thisModule, FabricElement out0, FabricElement out1) { + super(thisModule, new HornModule(fpga)); this.out0 = out0; this.out1 = out1; out0.addInput(this, getOutputPort("out0")); -- 1.7.10.4