add new urjtag-based code, fjmem
[fleet.git] / src / edu / berkeley / fleet / fpga / FanoutModule.java
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.*;
10 import java.util.*;
11 import java.io.*;
12 import static edu.berkeley.fleet.two.FleetTwoFleet.*;
13 import static edu.berkeley.fleet.fpga.verilog.Verilog.*;
14
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);
21
22         out0.connectValue(in);
23         out1.connectValue(in);
24
25         Module.StateWire  busy    = new StateWire("busy", false);
26         new Event(new Object[] { in, out0, out1, busy.isEmpty() },
27                   new Action[] {     out0, out1, busy.doFill() });
28         new Event(new Object[] { in, out0, out1, busy.isFull() },
29                   new Action[] { in,             busy.doDrain() });
30     }
31 }