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.*;
16 public interface FabricElement {
18 public FpgaPath getPath(FpgaDestination dest, BitVector signal);
20 public void addInput(FabricElement in, Module.Port inPort);
21 public void addOutput(FabricElement out, Module.Port outPort);
23 public Module.SourcePort getOutputPort();
24 public Module.Port getInputPort();
26 public static abstract class AbstractFabricElement implements FabricElement {
27 public abstract FpgaPath getPath(FpgaDestination dest, BitVector signal);
28 public void addInput(FabricElement in, Module.Port inPort) { throw new RuntimeException(); }
29 public void addOutput(FabricElement out, Module.Port outPort) { throw new RuntimeException(); }
30 public Module.SourcePort getOutputPort() { throw new RuntimeException(); }
31 public Module.Port getInputPort() { throw new RuntimeException(); }