make HornModule and FunnelModule take an Fpga argument
[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         in.hasLatch = false;
22         out0.hasLatch = false;
23         out1.hasLatch = false;
24         addPreCrap("assign out0 = in;");
25         addPreCrap("assign out1 = in;");
26         addPreCrap("assign out0_r = in_r;");
27         addPreCrap("assign out1_r = in_r;");
28         addPreCrap("reg in_a__;");
29         addPreCrap("assign in_a = in_a__;");
30         addPreCrap("always @(posedge clk) begin if (out0_a && out1_a) in_a__ <= 1; if (!out0_a && !out1_a) in_a__ <= 0; end");
31     }
32 }