X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Ffleet%2Ffpga%2FFpga.java;h=26bbc8f8f172841f64ff5b2e01a46047b991cfa3;hb=28e41c98c299d834bb5ec9a749126d858dc81bf0;hp=d2b960c427ef5ad6aa6595dc8cc2a0837ca4fa08;hpb=bca8395a541aa0c0facf84493b6fb6d7e393c2f8;p=fleet.git diff --git a/src/edu/berkeley/fleet/fpga/Fpga.java b/src/edu/berkeley/fleet/fpga/Fpga.java index d2b960c..26bbc8f 100644 --- a/src/edu/berkeley/fleet/fpga/Fpga.java +++ b/src/edu/berkeley/fleet/fpga/Fpga.java @@ -16,7 +16,7 @@ import static edu.berkeley.fleet.fpga.verilog.Verilog.*; import edu.berkeley.fleet.two.PercolatedPort; -public class Fpga extends FleetTwoFleet { +public abstract class Fpga extends FleetTwoFleet { public Module top; Ship debugShip; @@ -33,7 +33,7 @@ public class Fpga extends FleetTwoFleet { } public static void main(String[] s) throws Exception { - new Fpga(new Module("main")).top.dump(s[0]); + ((Fpga)Fleet.getDefaultImpl()).top.dump(s[0]); PrintWriter pw; pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream(s[0]+"/timescale.v"))); @@ -64,7 +64,7 @@ public class Fpga extends FleetTwoFleet { // Setup ////////////////////////////////////////////////////////////////////////////// Ship createShip(String type) throws IOException { - ShipDescription sd = new ShipDescription(type, new BufferedReader(new InputStreamReader(new FileInputStream("ships/"+type+".ship")))); + ShipDescription sd = new ShipDescription(this, type, new BufferedReader(new InputStreamReader(new FileInputStream("ships/"+type+".ship")))); int count = 0; for(Ship ship : ships.values()) if (ship.getType().equals(type)) count++; String name = type+count; @@ -73,42 +73,12 @@ public class Fpga extends FleetTwoFleet { return ship; } - public Fpga() throws Exception { this(new Module("main")); } - public Fpga(Module top) throws Exception { - this.top = top; - debugShip = createShip("Debug"); - - boolean small = true; - //boolean small = false; - - if (small) { - /* - for(int i=0; i<1; i++) createShip("Memory"); - for(int i=0; i<2; i++) createShip("Fifo"); - for(int i=0; i<2; i++) createShip("Alu"); - createShip("Counter"); - createShip("CarrySaveAdder"); - createShip("Rotator"); - createShip("Lut3"); - */ - createShip("DDR2"); - createShip("Dvi"); - } else { - for(int i=0; i<3; i++) createShip("Memory"); - for(int i=0; i<3; i++) createShip("Alu"); - for(int i=0; i<2; i++) createShip("Fifo"); - for(int i=0; i<14; i++) createShip("Counter"); - - // "really big" configuration: 138 docks - for(int i=0; i<4; i++) createShip("Alu"); - //createShip("CarrySaveAdder"); - //createShip("Rotator"); - //createShip("Lut3"); - - //createShip("DDR2"); - //createShip("Video"); - } + protected Fpga() throws IOException { + this.top = new Module("main"); + this.debugShip = createShip("Debug"); + } + protected void init() throws IOException { // for FifoShip new Module.InstantiatedModule(top, new FifoModule(8, WIDTH_WORD)); @@ -130,6 +100,7 @@ public class Fpga extends FleetTwoFleet { final Module.SourcePort sp = sp0; sources.add(new FabricElement.AbstractFabricElement() { private FabricElement upstream; + public int getPathLength(FpgaDestination dest) { return upstream.getPathLength(dest); } public FpgaPath getPath(FpgaDestination dest, BitVector signal) { return upstream.getPath(dest, signal); } public void addOutput(FabricElement out, Module.Port outPort) { this.upstream = out; @@ -164,6 +135,7 @@ public class Fpga extends FleetTwoFleet { public void expand(ShipDescription sd) { try { if (sd.getSection("fpga")==null) return; + if (getShip(sd.getName(),0)==null) return; // no ships of this type String filename = sd.getName().toLowerCase(); if (sd.getSection("ucf") != null) {