1 package edu.berkeley.fleet.fpga;
2 import edu.berkeley.fleet.api.*;
3 import edu.berkeley.fleet.two.*;
4 import edu.berkeley.fleet.*;
5 import java.lang.reflect.*;
6 import edu.berkeley.sbp.chr.*;
7 import edu.berkeley.sbp.misc.*;
8 import edu.berkeley.sbp.meta.*;
9 import edu.berkeley.sbp.util.*;
12 import static edu.berkeley.fleet.two.FleetTwoFleet.*;
13 import static edu.berkeley.fleet.fpga.verilog.Verilog.*;
15 public class FanoutModule extends Module {
16 public FanoutModule(int width) {
17 super("fanout"+width);
18 Module.SourcePort in = createInputPort ("in", width);
19 Module.SinkPort out0 = createOutputPort("out0", width, "");
20 Module.SinkPort out1 = createOutputPort("out1", width, "");
22 out0.hasLatch = false;
23 out0.forceNoLatch = true;
24 out1.hasLatch = false;
25 out1.forceNoLatch = true;
27 out0.latchDriver = in;
28 out1.latchDriver = in;
30 Module.StateWire busy = new StateWire("busy", false);
31 new Event(new Object[] { in, out0, out1, busy.isEmpty() },
32 new Action[] { out0, out1, busy.doFill() });
33 new Event(new Object[] { in, out0, out1, busy.isFull() },
34 new Action[] { in, busy.doDrain() });