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.*;
14 import edu.berkeley.fleet.api.*;
15 import edu.berkeley.fleet.api.Dock;
19 public class FpgaDestination extends Destination implements FabricElement {
20 private Module.Port port;
21 private boolean isInstructionDestination;
24 public FpgaDestination(FpgaDock dock, Module.Port port, boolean isInstructionDestination) {
28 this.isInstructionDestination = isInstructionDestination;
31 public Module.SourcePort getOutputPort() { throw new RuntimeException(); }
32 public Module.Port getInputPort() { throw new RuntimeException(); }
33 public void addOutput(FabricElement out, Module.Port outPort) { throw new RuntimeException(); }
35 public int getPathLength(FpgaDestination dest) {
37 return isInstructionDestination ? 0 : FpgaDock.DATA_FIFO_SIZE;
41 public FpgaPath getPath(FpgaDestination dest, BitVector signal) {
42 if (dest==this) return FpgaPath.emptyPath(this, signal);
45 public void addInput(FabricElement in, Module.Port inPort) {
46 ((Module.SourcePort)inPort).connect((Module.SinkPort)port);
48 public String toString() {
49 return dock.toString() + (isInstructionDestination ? ":i" : "");