From 189e6e87ff393dedb809e8b8725d6b3141508cbe Mon Sep 17 00:00:00 2001 From: Adam Megacz Date: Sun, 10 Jan 2010 11:18:29 -0800 Subject: [PATCH] marina: add some additional control over the proper stopper counter --- .../berkeley/fleet/marina/InstructionStopper.java | 5 +- src/edu/berkeley/fleet/marina/Marina.java | 6 +-- src/edu/berkeley/fleet/marina/MarinaTest.java | 57 ++++++++++++++++---- src/edu/berkeley/fleet/marina/ProperStopper.java | 10 ++++ 4 files changed, 62 insertions(+), 16 deletions(-) diff --git a/src/edu/berkeley/fleet/marina/InstructionStopper.java b/src/edu/berkeley/fleet/marina/InstructionStopper.java index 8cbcf10..9a9ffc3 100644 --- a/src/edu/berkeley/fleet/marina/InstructionStopper.java +++ b/src/edu/berkeley/fleet/marina/InstructionStopper.java @@ -21,8 +21,9 @@ public class InstructionStopper extends ProperStopper { ChainControl reportChain, ChipModel model, boolean clockHack, - Indenter indenter, String counterPath) { - super(propInst, controlChain, dataChain, reportChain, model, clockHack, indenter, counterPath); + Indenter indenter) { + super(propInst, controlChain, dataChain, reportChain, model, clockHack, indenter, + propInst+".instruct@0.cntScnTh@1.cntScnOn@1"); INSTR_RING_CONTROL_PATH = propInst+".tapStage@2"; } diff --git a/src/edu/berkeley/fleet/marina/Marina.java b/src/edu/berkeley/fleet/marina/Marina.java index 1956bce..16af0df 100644 --- a/src/edu/berkeley/fleet/marina/Marina.java +++ b/src/edu/berkeley/fleet/marina/Marina.java @@ -77,16 +77,14 @@ public class Marina extends FleetTwoFleet { reportChain, model, clockHack, - indenter, - prefix+"northFif@1.fillDrai@1.instruct@0.cntScnTh@1.cntScnOn@1"); + indenter); southRing = new InstructionStopper(prefix+"southFif@1.tapPropS@1", controlChain, dataChain, reportChain, model, clockHack, - indenter, - prefix+"southFif@1.tapPropS@1.instruct@0.cntScnTh@1.cntScnOn@1"); + indenter); } public static final int INDEX_OF_ADDRESS_BIT_COPIED_TO_C_FLAG_WHEN_DC_EQUALS_ONE = 5; diff --git a/src/edu/berkeley/fleet/marina/MarinaTest.java b/src/edu/berkeley/fleet/marina/MarinaTest.java index 4f89b51..ed4c51e 100644 --- a/src/edu/berkeley/fleet/marina/MarinaTest.java +++ b/src/edu/berkeley/fleet/marina/MarinaTest.java @@ -805,6 +805,19 @@ public class MarinaTest { CLEAR_FLAG.add(Predicate.FlagA), CLEAR_FLAG.add(Predicate.FlagB)); + private final Instruction NOP_IF_FLAG_A = + new Instruction.Move(marina.getOnlyDock(), + Predicate.FlagA, /* predicate */ + false, /* torpedoable */ + null, /* path */ + false, /* tokenIn */ + false, /* dataIn */ + false, /* latchData */ + false, /* latchPath */ + false, /* dataOut */ + false /* tokenOut */ + ); + private final Instruction NOP = new Instruction.Move(marina.getOnlyDock(), Predicate.IgnoreFlagD, /* predicate */ @@ -2328,6 +2341,8 @@ public class MarinaTest { case 3031: testOverfillTokens(marina); break; case 3040: loadEveryValueOLC(marina); break; + + // Duke Test ////////////////////////////////////////////////////////////////////////////// case 6666: { SubchainNode chainNode = (SubchainNode)marina.dukeChain @@ -2346,6 +2361,7 @@ public class MarinaTest { break; } + // Kessels Counter ////////////////////////////////////////////////////////////////////////////// case 7777: { int wait = 300; @@ -2429,6 +2445,9 @@ public class MarinaTest { pw.close(); break; } + + + // General Purpose ////////////////////////////////////////////////////////////////////////////// case 8888: { //int wait = 1000; @@ -2436,14 +2455,16 @@ public class MarinaTest { //int toks = 1; PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("out.dat"))); + /* for(double myvdd = 1.00; myvdd<1.01; myvdd += 0.05) { vdd = (float)myvdd; vdd18.setVoltageWait((float)Math.max(1.8,vdd)); vdd10.setVoltageWait(vdd); Thread.sleep(1000); + */ for(int toks = 0; toks < 13; toks++) { - int MAX_ITER = 10; + int MAX_ITER = 1; double total = 0; for(int iter = 0; iter < MAX_ITER; iter++) { @@ -2453,9 +2474,29 @@ public class MarinaTest { marina.southRing.enableInstructionSend(true); marina.southRing.fill(setOlc(1)); + /* + marina.southRing.fill(new Instruction.Set(marina.getOnlyDock(), + Predicate.IgnoreFlagD, + Instruction.Set.FlagFunction.ONE, + Instruction.Set.FlagFunction.ZERO + )); + */ marina.southRing.fill(new Instruction.Head(marina.getOnlyDock())); for(int i=0; i