X-Git-Url: http://git.megacz.com/?p=fleet.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Ffleet%2Fmarina%2FMarina.java;h=1956bce62f1484097e3cc627092aad8040004f09;hp=5b74b5a400de6e72ac78da7bf2f53217e7553f35;hb=836b25222d4573f6b8a7b31c12c6877bdf2f7c34;hpb=c345d2335f3d7a5b8f9316a3fd62608c5d3e151e diff --git a/src/edu/berkeley/fleet/marina/Marina.java b/src/edu/berkeley/fleet/marina/Marina.java index 5b74b5a..1956bce 100644 --- a/src/edu/berkeley/fleet/marina/Marina.java +++ b/src/edu/berkeley/fleet/marina/Marina.java @@ -1,9 +1,44 @@ package edu.berkeley.fleet.marina; -import edu.berkeley.fleet.api.*; import com.sun.electric.tool.simulation.test.*; -import com.sun.electric.tool.simulation.test.BitVector; +import edu.berkeley.fleet.api.*; +import edu.berkeley.fleet.api.BitVector; +import edu.berkeley.fleet.two.*; +import edu.berkeley.fleet.*; +import java.util.*; + +public class Marina extends FleetTwoFleet { -public class Marina extends MarinaFleet { + MarinaShip fakeShip = new MarinaShip(this); + MarinaDock onlyDock = new MarinaDock(fakeShip, true); + + public BitVector encodeInstruction(Dock dispatchFrom, Instruction instruction) { + return encodeInstruction(instruction, dispatchFrom); + } + + public Iterator iterator() { + HashSet hs = new HashSet(); + hs.add(fakeShip); + return hs.iterator(); + } + + public Ship getShip(String type, int ordinal) { + throw new RuntimeException("not implemented"); + } + + public FleetProcess run(Instruction[] instructions) { + throw new RuntimeException("not implemented"); + } + + public BitVector getDestAddr(Path path) { + if (path==null) return new BitVector(0); + return ((MarinaPath)path).bv; + } + + public Dock getOnlyDock() { + return onlyDock; + } + + //////////////////////////////////////////////////////////////////////////////// JtagLogicLevel mc0; JtagLogicLevel mc1; @@ -27,6 +62,9 @@ public class Marina extends MarinaFleet { ChipModel model, boolean clockHack, Indenter indenter) { + // use "internal encoding" + super(true); + this.controlChain = controlChain; this.dataChain = dataChain; this.dukeChain = dukeChain; @@ -86,9 +124,9 @@ public class Marina extends MarinaFleet { private int value; private Ilc() { reportChain.shift(REPORT_CHAIN, true, false); - BitVector odd = reportChain.getOutBits(REPORT_CHAIN+"."+ILC_PATH_ODD).bitReverse().not(); - BitVector even = reportChain.getOutBits(REPORT_CHAIN+"."+ILC_PATH_EVEN).bitReverse().not(); - BitVector ret = new BitVector(8, "olc"); + com.sun.electric.tool.simulation.test.BitVector odd = reportChain.getOutBits(REPORT_CHAIN+"."+ILC_PATH_ODD).bitReverse().not(); + com.sun.electric.tool.simulation.test.BitVector even = reportChain.getOutBits(REPORT_CHAIN+"."+ILC_PATH_EVEN).bitReverse().not(); + com.sun.electric.tool.simulation.test.BitVector ret = new com.sun.electric.tool.simulation.test.BitVector(8, "olc"); for(int i=0; i<4; i++) { ret.set(i*2+1, odd.get(i)); ret.set(i*2, even.get(i)); @@ -278,9 +316,9 @@ public class Marina extends MarinaFleet { public int getOLC() { reportChain.shift(REPORT_CHAIN, true, false); if (omegaCounter) { - BitVector bits = null; + com.sun.electric.tool.simulation.test.BitVector bits = null; for(int i=0; i<4; i++) { - BitVector x = reportChain.getOutBits(REPORT_CHAIN+"."+OLC_PATH_KESSEL+i); + com.sun.electric.tool.simulation.test.BitVector x = reportChain.getOutBits(REPORT_CHAIN+"."+OLC_PATH_KESSEL+i); //System.out.println("bits are: " + x); bits = bits==null ? x : bits.cat(x); } @@ -313,9 +351,9 @@ public class Marina extends MarinaFleet { System.out.println(); return ret; } else if (kesselsCounter) { - BitVector bits = null; + com.sun.electric.tool.simulation.test.BitVector bits = null; for(int i=0; i<4; i++) { - BitVector x = reportChain.getOutBits(REPORT_CHAIN+"."+OLC_PATH_KESSEL+i); + com.sun.electric.tool.simulation.test.BitVector x = reportChain.getOutBits(REPORT_CHAIN+"."+OLC_PATH_KESSEL+i); //System.out.println("bits are: " + x); bits = bits==null ? x : bits.cat(x); } @@ -352,11 +390,11 @@ public class Marina extends MarinaFleet { ); return (first+second); } else { - BitVector odd = reportChain.getOutBits(REPORT_CHAIN+"."+OLC_PATH_ODD).bitReverse(); - BitVector even = reportChain.getOutBits(REPORT_CHAIN+"."+OLC_PATH_EVEN).bitReverse(); + com.sun.electric.tool.simulation.test.BitVector odd = reportChain.getOutBits(REPORT_CHAIN+"."+OLC_PATH_ODD).bitReverse(); + com.sun.electric.tool.simulation.test.BitVector even = reportChain.getOutBits(REPORT_CHAIN+"."+OLC_PATH_EVEN).bitReverse(); odd = odd.not(); even = even.not(); - BitVector bv = new BitVector(6, "olc"); + com.sun.electric.tool.simulation.test.BitVector bv = new com.sun.electric.tool.simulation.test.BitVector(6, "olc"); for(int i=0; i<3; i++) { bv.set(i*2, odd.get(i)); bv.set(i*2+1, even.get(i)); @@ -382,12 +420,12 @@ public class Marina extends MarinaFleet { public int getNumTokens() { reportChain.shift(REPORT_CHAIN, true, false); // get the token successor and token FIFO wires - BitVector bv = reportChain.getOutBits(REPORT_CHAIN+"."+TOK_FIFO_PATH); + com.sun.electric.tool.simulation.test.BitVector bv = reportChain.getOutBits(REPORT_CHAIN+"."+TOK_FIFO_PATH); int sz = bv.getNumBits(); MarinaTest.fatal(sz!=3, "wrong token FIFO size: "+sz+" expected: 3"); // get the token predecessor wire - BitVector pred = reportChain.getOutBits(REPORT_CHAIN+"."+TOK_PRED_PATH); + com.sun.electric.tool.simulation.test.BitVector pred = reportChain.getOutBits(REPORT_CHAIN+"."+TOK_PRED_PATH); sz = pred.getNumBits(); MarinaTest.fatal(sz!=1, "wrong token predecessor size: "+sz+" expected: 1");