import edu.berkeley.fleet.two.PercolatedPort;
-public class Fpga extends FleetTwoFleet {
+public abstract class Fpga extends FleetTwoFleet {
public Module top;
Ship debugShip;
}
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")));
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<2; i++) createShip("Alu");
- for(int i=0; i<1; i++) createShip("Memory");
- for(int i=0; i<2; i++) createShip("Fifo");
- createShip("Counter");
- createShip("CarrySaveAdder");
- createShip("Rotator");
- createShip("Lut3");
- createShip("Timer");
- 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("Timer");
- createShip("DDR2");
- createShip("Dvi");
- }
+ 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));
// Expand //////////////////////////////////////////////////////////////////////////////
+ protected abstract String getDirName();
+
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) {
- File outf = new File("build/fpga/"+filename+".ucf");
+ File outf = new File("build/"+getDirName()+"/"+filename+".ucf");
FileOutputStream out = new FileOutputStream(outf);
PrintWriter pw = new PrintWriter(out);
pw.println(sd.getSection("ucf"));
pw.close();
}
- File outf = new File("build/fpga/"+filename+".v");
+ File outf = new File("build/"+getDirName()+"/"+filename+".v");
new File(outf.getParent()).mkdirs();
System.err.println("writing to " + outf);
FileOutputStream out = new FileOutputStream(outf);