massive overhaul of fpga code
[fleet.git] / src / edu / berkeley / fleet / fpga / FpgaDestination.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 import edu.berkeley.fleet.api.*;
15 import edu.berkeley.fleet.api.Dock;
16 import java.util.*;
17
18
19 public class FpgaDestination extends Destination implements FabricElement {
20     private Module.Port port;
21     private FpgaDock dock;
22
23     public FpgaDestination(FpgaDock dock, Module.Port port, boolean isInstructionDestination) {
24         super(dock);
25         this.port = port;
26         this.dock = dock;
27     }
28
29     public Module.SourcePort getOutputPort() { throw new RuntimeException(); }
30     public Module.Port getInputPort()  { throw new RuntimeException(); }
31     public void addOutput(FabricElement out, Module.Port outPort) { throw new RuntimeException(); }
32
33     public long getAddr() {
34         return ((Fpga)dock.getShip().getFleet()).top_horn.getPath(this,null).toLong();
35     }
36     public FpgaPath getPath(FabricElement dest, BitVector signal) {
37         if (dest==this) return FpgaPath.emptyPath(this, signal);
38         return null;
39     }
40     public void addInput(FabricElement in, Module.Port inPort) {
41         inPort.connect((Module.SinkPort)port);
42     }
43     public String toString() {
44         return dock.toString();
45     }
46 }