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 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");