From bd813b43b873780101ce956001d5f809a655025d Mon Sep 17 00:00:00 2001 From: Adam Megacz Date: Thu, 19 Nov 2009 22:05:35 -0800 Subject: [PATCH] cleanup of Marina test code --- .../berkeley/fleet/marina/InstructionStopper.java | 38 ++- src/edu/berkeley/fleet/marina/Marina.java | 329 ++++++-------------- src/edu/berkeley/fleet/marina/MarinaTest.java | 203 ++++++------ src/edu/berkeley/fleet/marina/ProperStopper.java | 32 +- 4 files changed, 250 insertions(+), 352 deletions(-) diff --git a/src/edu/berkeley/fleet/marina/InstructionStopper.java b/src/edu/berkeley/fleet/marina/InstructionStopper.java index f88d0c4..530724f 100644 --- a/src/edu/berkeley/fleet/marina/InstructionStopper.java +++ b/src/edu/berkeley/fleet/marina/InstructionStopper.java @@ -17,15 +17,19 @@ import static edu.berkeley.fleet.marina.Marina.INSTRUCTION_LENGTH; */ public class InstructionStopper extends ProperStopper { - public InstructionStopper(String name, - String propInst, + private static final int INSTRUCTION_SEND_NDX = 1; + private static final int INSTRUCTION_RECIRCULATE_NDX = 0; + private final String INSTR_RING_CONTROL_PATH; + + public InstructionStopper(String propInst, ChainControl controlChain, ChainControl dataChain, ChainControl reportChain, ChipModel model, boolean clockHack, Indenter indenter, String counterPath) { - super(name, propInst, controlChain, dataChain, reportChain, model, clockHack, indenter, counterPath); + super(propInst, controlChain, dataChain, reportChain, model, clockHack, indenter, counterPath); + INSTR_RING_CONTROL_PATH = propInst+".tapStage@2"; } /** put one Instruction into InstructionStopper */ @@ -42,4 +46,32 @@ public class InstructionStopper extends ProperStopper { MarinaTest.indenter.prln(" inserting torpedo"); super.fill(new MarinaPacket(MarinaPacket.null_word, true, MarinaPacket.null_path)); } + + public void fill(Instruction[] instructions) { fill(instructions, false); } + public void fill(Instruction[] instructions, boolean repeat) { fill(instructions, repeat, false); } + public void fill(Instruction[] instructions, boolean repeat, boolean leaveStopped) { + enableInstructionSend(false); + enableInstructionRecirculate(true); + for(Instruction i : instructions) + if (i!=null) { + fill(i); + } else { + fillTorpedo(); + } + enableInstructionRecirculate(repeat); + enableInstructionSend(true); + if (!leaveStopped) run(); + } + public void enableInstructionSend(boolean b) { + BitVector bv = controlChain.getInBits(Marina.CONTROL_CHAIN+"."+INSTR_RING_CONTROL_PATH); + bv.set(INSTRUCTION_SEND_NDX, b); + controlChain.setInBits(Marina.CONTROL_CHAIN+"."+INSTR_RING_CONTROL_PATH, bv); + controlChain.shift(Marina.CONTROL_CHAIN, false, true); + } + public void enableInstructionRecirculate(boolean b) { + BitVector bv = controlChain.getInBits(Marina.CONTROL_CHAIN+"."+INSTR_RING_CONTROL_PATH); + bv.set(INSTRUCTION_RECIRCULATE_NDX, b); + controlChain.setInBits(Marina.CONTROL_CHAIN+"."+INSTR_RING_CONTROL_PATH, bv); + controlChain.shift(Marina.CONTROL_CHAIN, false, true); + } } diff --git a/src/edu/berkeley/fleet/marina/Marina.java b/src/edu/berkeley/fleet/marina/Marina.java index 28e293c..6da458e 100644 --- a/src/edu/berkeley/fleet/marina/Marina.java +++ b/src/edu/berkeley/fleet/marina/Marina.java @@ -1,25 +1,65 @@ package edu.berkeley.fleet.marina; -/* -*- tab-width: 4 -*- */ +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.Instruction; -import edu.berkeley.fleet.marina.MarinaPath; - -/** The Marina object will eventually represent the Marina test chip. - * Right now, it doesn't do much of anything. It just helps me exercise - * my test infrastructure. */ public class Marina { + JtagLogicLevel mc0; + JtagLogicLevel mc1; + private final Indenter indenter; + public final ChainControl controlChain; + public final ChainControl dataChain; + public final ChainControl dukeChain; + public final ChainControl reportChain; + private final ChipModel model; + public final ProperStopper data; + public final InstructionStopper instrIn; + public final ProperStopper northRing; + public final InstructionStopper southRing; + int northCount = 0; + int southCount = 0; + + public Marina(ChainControl controlChain, + ChainControl dataChain, + ChainControl dukeChain, + ChainControl reportChain, + ChipModel model, + boolean clockHack, + Indenter indenter) { + this.controlChain = controlChain; + this.dataChain = dataChain; + this.dukeChain = dukeChain; + this.reportChain = reportChain; + this.model = model; + this.indenter = indenter; + northRing = data = new ProperStopper(prefix+"northFif@1.fillDrai@1", + controlChain, + dataChain, + reportChain, + model, + clockHack, + indenter, + prefix+"northFif@1.fillDrai@1.instruct@0.cntScnTh@1.cntScnOn@1"); + southRing = instrIn = new InstructionStopper(prefix+"southFif@1.tapPropS@1", + controlChain, + dataChain, + reportChain, + model, + clockHack, + indenter, + prefix+"southFif@1.tapPropS@1.instruct@0.cntScnTh@1.cntScnOn@1"); + } + public static final int INDEX_OF_ADDRESS_BIT_COPIED_TO_C_FLAG_WHEN_DC_EQUALS_ONE = 5; public static final int INDEX_OF_ADDRESS_BIT_COPIED_TO_C_FLAG_WHEN_DC_EQUALS_ZERO = MarinaPath.SIGNAL_BIT_INDEX; - - public static int TOKEN_FIFO_CAPACITY = 3; - - //public static final boolean kesselsCounter = true; + private static final int COUNTER_LENGTH = 34; + public static final int INSTRUCTION_LENGTH = 36; + public static final int SOUTH_RING_CAPACITY = 11; + public static final int TOKEN_FIFO_CAPACITY = 3; public static final boolean kesselsCounter = false; public static final boolean omegaCounter = false; - public static final String DATA_CHAIN = kesselsCounter ? "marina.marina_data" : "marina.ivan_data"; public static final String CONTROL_CHAIN = kesselsCounter ? "marina.marina_control" : "marina.ivan_control"; public static final String REPORT_CHAIN = kesselsCounter ? "marina.marina_report" : "marina.ivan_report"; @@ -28,49 +68,20 @@ public class Marina { public static String prefix = "marinaGu@0.outDockW@"+(kesselsCounter?"3":"0")+".marinaOu@"+(kesselsCounter?"1":"0")+"."; public static String MASTER_CLEAR = "mc"; - - /* - private static String prefix = "outDockW@"+(kesselsCounter?"3":"0")+".marinaOu@1."; - private static String MASTER_CLEAR = "EXTmasterClear"; - */ - - private static final String OLC_PATH_EVEN = - prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.olcWcont@0.scanEx3h@1"; // bits 2,4,6 - private static final String OLC_PATH_ODD = - prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.olcWcont@0.scanEx3h@2"; // bits 1,3,5 - public static final String OLC_PATH_KESSEL = - prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.counte@0.adamScan@1.scanEx6h@"; - private static final String ILC_PATH_ODD = - prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.ilcMoveO@0.scanEx4h@0"; // bits 1,3,5,7 - private static final String ILC_PATH_EVEN = - prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.ilcMoveO@0.scanEx4h@1"; // bits 2,4,6,8 - private static final String FLAGS_PATH = - prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.flags@0.scanEx3h@0"; - - private static final String INSTR_RING_CONTROL_PATH = - prefix+"southFif@1.tapPropS@1.tapStage@2"; - private static final String TOK_FIFO_PATH = - prefix+"tokenFIF@1"; - private static final String INSTRUCTION_COUNTER_PATH = - prefix+"southFif@1.tapPropS@1.instruct@0"; - private static final String DATA_COUNTER_PATH = - prefix+"northFif@1.fillDrai@1.instruct@0"; - private static final String TOK_PRED_PATH = - prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.ilcMoveO@0.scanEx2h@0.scanCell@10"; - - private static final int COUNTER_LENGTH = 34; - private static final int INSTRUCTION_SEND_NDX = 1; - private static final int INSTRUCTION_RECIRCULATE_NDX = 0; - - public static final int INSTRUCTION_LENGTH = 36; - - private static final int A_FLAG_NDX = 0; - private static final int B_FLAG_NDX = 1; - - public static final int SOUTH_RING_CAPACITY = 11; + private static final String CENTER_PATH = prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0"; + private static final String OLC_PATH_EVEN = CENTER_PATH+".olcWcont@0.scanEx3h@1"; // bits 2,4,6 + private static final String OLC_PATH_ODD = CENTER_PATH+".olcWcont@0.scanEx3h@2"; // bits 1,3,5 + private static final String OLC_PATH_KESSEL = CENTER_PATH+".counte@0.adamScan@1.scanEx6h@"; + private static final String ILC_PATH_ODD = CENTER_PATH+".ilcMoveO@0.scanEx4h@0"; // bits 1,3,5,7 + private static final String ILC_PATH_EVEN = CENTER_PATH+".ilcMoveO@0.scanEx4h@1"; // bits 2,4,6,8 + private static final String FLAGS_PATH = CENTER_PATH+".flags@0.scanEx3h@0"; + private static final String TOK_FIFO_PATH = prefix+"tokenFIF@1"; + private static final String INSTRUCTION_COUNTER_PATH = prefix+"southFif@1.tapPropS@1.instruct@0"; + private static final String DATA_COUNTER_PATH =prefix+"northFif@1.fillDrai@1.instruct@0"; + private static final String TOK_PRED_PATH = CENTER_PATH+".ilcMoveO@0.scanEx2h@0.scanCell@10"; // ILC appears in scan chain as "count[1:6], zLo, i, dLo" - public class Ilc { + private class Ilc { // value is bit reversed and complemented private int value; private Ilc() { @@ -101,22 +112,6 @@ public class Marina { } } - private final Indenter indenter; - - // The name of the scan chain - // The instance path, from the top cell of the netlist, of the instance of infinityWithCover - public final ChainControl controlChain; - public final ChainControl dataChain; - public final ChainControl dukeChain; - public final ChainControl reportChain; - - private final ChipModel model; - public final ProperStopper data; - public final InstructionStopper instrIn; - - private void prln(String msg) {indenter.prln(msg);} - private void pr(String msg) {indenter.pr(msg);} - /** Shift the report scan chain */ public void shiftReport(boolean readEnable, boolean writeEnable) { reportChain.shift(REPORT_CHAIN, readEnable, writeEnable); @@ -137,36 +132,6 @@ public class Marina { dukeChain.shift(DUKE_CHAIN, readEnable, writeEnable); } - public Marina(ChainControl controlChain, - ChainControl dataChain, - ChainControl dukeChain, - ChainControl reportChain, - ChipModel model, boolean clockHack, Indenter indenter) { - this.controlChain = controlChain; - this.dataChain = dataChain; - this.dukeChain = dukeChain; - this.reportChain = reportChain; - this.model = model; - this.indenter = indenter; - data = new ProperStopper("north fifo", - prefix+"northFif@1.fillDrai@1.properSt@1", - controlChain, - dataChain, - reportChain, - model, clockHack, indenter, - prefix+"northFif@1.fillDrai@1.instruct@0.cntScnTh@1.cntScnOn@1"); - instrIn = new InstructionStopper("south fifo", - prefix+"southFif@1.tapPropS@1.properSt@1", - controlChain, - dataChain, - reportChain, - model, clockHack, indenter, - prefix+"southFif@1.tapPropS@1.instruct@0.cntScnTh@1.cntScnOn@1"); - } - - int northCount = 0; - int southCount = 0; - public void stopAndResetCounters() { instrIn.setCounterEnable(false); data.setCounterEnable(false); @@ -184,7 +149,6 @@ public class Marina { public int getNorthCount() { return northCount; } public int getSouthCount() { return southCount; } - public void masterClear() { final double WIDTH = 10; // ns // Put a high going pulse on the internal chip master clear signal @@ -199,16 +163,16 @@ public class Marina { // value. In verilog we need to prevent the X'es from // propagating, so we force the flags to a known value // - vm.setNodeState(prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.flag_A__set_", 0); - vm.setNodeState(prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.flag_A__clr_", 1); - vm.setNodeState(prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.flag_B__set_", 0); - vm.setNodeState(prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.flag_B__clr_", 1); + vm.setNodeState(CENTER_PATH+".flag_A__set_", 0); + vm.setNodeState(CENTER_PATH+".flag_A__clr_", 1); + vm.setNodeState(CENTER_PATH+".flag_B__set_", 0); + vm.setNodeState(CENTER_PATH+".flag_B__clr_", 1); - vm.setNodeState(prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.flag_D__set_", 1); - vm.setNodeState(prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.flag_D__clr_", 0); + vm.setNodeState(CENTER_PATH+".flag_D__set_", 1); + vm.setNodeState(CENTER_PATH+".flag_D__clr_", 0); - vm.setNodeState(prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.flags@0.aFlag@0.net_50", 0); // A - vm.setNodeState(prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.flags@0.aFlag@1.net_50", 0); // B + vm.setNodeState(CENTER_PATH+".flags@0.aFlag@0.net_50", 0); // A + vm.setNodeState(CENTER_PATH+".flags@0.aFlag@1.net_50", 0); // B vm.setNodeState(prefix+"outputDo@0.outM1Pre@0.litDandP@0.latch2in@0.hi2inLat@0.latchKee@0.out_B_", 0); // C // possible C-flag inputs @@ -218,12 +182,12 @@ public class Marina { // force the OLC to zero if (!kesselsCounter) for(int i=1; i<=6; i++) - vm.setNodeState(prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.olcWcont@0.olc@0.inLO["+i+"]", (i==1)?0:1); + vm.setNodeState(CENTER_PATH+".olcWcont@0.olc@0.inLO["+i+"]", (i==1)?0:1); // set the ILC input to 1 for(int i=1; i<=8; i++) { if (i!=7) - vm.setNodeState(prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.ilcMoveO@0.ilc@0.\\inLO["+i+"]", (i==1)?0:1); + vm.setNodeState(CENTER_PATH+".ilcMoveO@0.ilc@0.\\inLO["+i+"]", (i==1)?0:1); } vm.setNodeState(prefix+"northFif@1.upDown8w@2.weakStag@22.addr1in2@0.fire", 1); @@ -237,29 +201,29 @@ public class Marina { model.waitNS(1000); // pulse ilc[load] and olc[load] - vm.setNodeState(prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.ilcMoveO@0.ilc@0.ilc_load_", 1); - vm.setNodeState(prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.ilcMoveO@0.ilc@0.ilc_decLO_", 1); - vm.setNodeState(prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.ilcMoveO@0.ilc@0.ilc_torpLO_", 1); + vm.setNodeState(CENTER_PATH+".ilcMoveO@0.ilc@0.ilc_load_", 1); + vm.setNodeState(CENTER_PATH+".ilcMoveO@0.ilc@0.ilc_decLO_", 1); + vm.setNodeState(CENTER_PATH+".ilcMoveO@0.ilc@0.ilc_torpLO_", 1); if (!kesselsCounter) - vm.setNodeState(prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.olcWcont@0.olc@0.olc_load_", 1); + vm.setNodeState(CENTER_PATH+".olcWcont@0.olc@0.olc_load_", 1); model.waitNS(100); model.waitNS(1); - vm.releaseNode(prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.ilcMoveO@0.ilc@0.ilc_load_"); - vm.releaseNode(prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.ilcMoveO@0.ilc@0.ilc_decLO_"); - vm.releaseNode(prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.ilcMoveO@0.ilc@0.ilc_torpLO_"); + vm.releaseNode(CENTER_PATH+".ilcMoveO@0.ilc@0.ilc_load_"); + vm.releaseNode(CENTER_PATH+".ilcMoveO@0.ilc@0.ilc_decLO_"); + vm.releaseNode(CENTER_PATH+".ilcMoveO@0.ilc@0.ilc_torpLO_"); if (!kesselsCounter) - vm.releaseNode(prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.olcWcont@0.olc@0.olc_load_"); + vm.releaseNode(CENTER_PATH+".olcWcont@0.olc@0.olc_load_"); - vm.releaseNode(prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.flag_A__set_"); - vm.releaseNode(prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.flag_A__clr_"); - vm.releaseNode(prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.flag_B__set_"); - vm.releaseNode(prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.flag_B__clr_"); + vm.releaseNode(CENTER_PATH+".flag_A__set_"); + vm.releaseNode(CENTER_PATH+".flag_A__clr_"); + vm.releaseNode(CENTER_PATH+".flag_B__set_"); + vm.releaseNode(CENTER_PATH+".flag_B__clr_"); - vm.releaseNode(prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.flag_D__set_"); - vm.releaseNode(prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.flag_D__clr_"); + vm.releaseNode(CENTER_PATH+".flag_D__set_"); + vm.releaseNode(CENTER_PATH+".flag_D__clr_"); - vm.releaseNode(prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.flags@0.aFlag@0.net_50"); - vm.releaseNode(prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.flags@0.aFlag@1.net_50"); + vm.releaseNode(CENTER_PATH+".flags@0.aFlag@0.net_50"); + vm.releaseNode(CENTER_PATH+".flags@0.aFlag@1.net_50"); // Every move instruction, even those with Ti=0,Di=0, // loads the C-flag. It will get loaded with an "X", @@ -272,13 +236,13 @@ public class Marina { for(int i=1; i<=8; i++) { if (i!=7) - vm.releaseNode(prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.ilcMoveO@0.ilc@0.\\inLO["+i+"] "); + vm.releaseNode(CENTER_PATH+".ilcMoveO@0.ilc@0.\\inLO["+i+"] "); } model.waitNS(1000); if (!kesselsCounter) for(int i=1; i<=6; i++) - vm.releaseNode(prefix+"outputDo@0.outM1Pre@0.outDockP@0.outDockC@0.olcWcont@0.olc@0.inLO["+i+"]"); + vm.releaseNode(CENTER_PATH+".olcWcont@0.olc@0.inLO["+i+"]"); // the proper stopper states come up in an undefined ("X") // state, so under Verilog we need to force them to a @@ -316,9 +280,6 @@ public class Marina { resetAfterMasterClear(); } - JtagLogicLevel mc0; - JtagLogicLevel mc1; - private void resetAfterMasterClear() { // The following call to ChainControl.resetInBits() is vital! // If you forget, then the inBits member initializes @@ -434,72 +395,16 @@ public class Marina { return (int)bv.toLong(); } } - /** Get the 7 bit inner loop counter. The MSB is the zero bit. - * The low order 6 bits are the count */ - public Ilc getILC() { - return new Ilc(); - } - /** Get the A flag */ + public boolean getILCInfinity() { return new Ilc().getInfinity(); } + public boolean getILCDone() { return new Ilc().getDone(); } + public int getILC() { return new Ilc().getCount(); } public boolean getFlagA() { shiftReport(true, false); - return reportChain.getOutBits(REPORT_CHAIN+"."+FLAGS_PATH).get(A_FLAG_NDX); + return reportChain.getOutBits(REPORT_CHAIN+"."+FLAGS_PATH).get(0); } - /** Get the B flag */ public boolean getFlagB() { shiftReport(true, false); - return reportChain.getOutBits(REPORT_CHAIN+"."+FLAGS_PATH).get(B_FLAG_NDX); - } - /** return value of instruction counter. Instruction counter counts - * the instructions flowing through 1/2 of alternating FIFO. - * Caution: instruction counter is written by all scans, - * regardless of readEnable or writeEnable! */ - public long getInstructionCounter() { - shiftData(true, false); - BitVector count = dataChain.getOutBits(DATA_CHAIN+"."+INSTRUCTION_COUNTER_PATH); - int sz = count.getNumBits(); - MarinaTest.fatal(sz!=COUNTER_LENGTH, "wrong number of counter bits: "+sz+ - " expected: "+COUNTER_LENGTH); - return count.bitReverse().toLong(); - } - /** return value of data counter. Data counter counts items flowing - * through drain stage of data proper stopper. - * Caution: data counter is written by all scans, - * regardless of readEnable or writeEnable! */ - public long getDataCounter() { - shiftData(true, false); - BitVector count = dataChain.getOutBits(DATA_CHAIN+"."+DATA_COUNTER_PATH); - int sz = count.getNumBits(); - MarinaTest.fatal(sz!=COUNTER_LENGTH, "wrong number of counter bits: "+sz+ - " expected: "+COUNTER_LENGTH); - return count.bitReverse().toLong(); - } - /** Fill the "North" Fifo ring */ - public void fillNorthProperStopper() { - BitVector data = new BitVector(37, "empty"); - BitVector addr = new BitVector(14, "empty"); - for(int i=0; i=olc ? 0 : 1; @@ -2140,7 +2136,7 @@ public class MarinaTest { if (marina.kesselsCounter) { // master clear on each iteration; otherwise we'd need to "run down" the olc marina.masterClear(); - marina.enableInstructionSend(true); + marina.southRing.enableInstructionSend(true); } } @@ -2158,7 +2154,7 @@ public class MarinaTest { int notZero = 1< 24.3ns for 62 counts => 390ps cycle time => 2.5Ghz - marina.fillSouthProperStopper(new Instruction[] { + marina.southRing.fill(new Instruction[] { new Instruction.Head(dock), setOlc(xx), FLAG_NOP, @@ -2513,7 +2508,7 @@ public class MarinaTest { new Instruction.Tail(dock), }, false, false); - marina.fillSouthProperStopper(new Instruction[] { + marina.southRing.fill(new Instruction[] { /* new Instruction.Set(dock,Predicate.FlagD, Instruction.Set.FlagFunction.ZERO.add(Predicate.NotFlagA), @@ -2581,12 +2576,12 @@ public class MarinaTest { marina.data.sink(); marina.stopAndResetCounters(); - marina.enableInstructionSend(true); - marina.fillSouthProperStopper(setOlc(1)); - marina.fillSouthProperStopper(new Instruction.Head(dock)); + marina.southRing.enableInstructionSend(true); + marina.southRing.fill(setOlc(1)); + marina.southRing.fill(new Instruction.Head(dock)); for(int i=0; i data) { - prln("Begin fillMany. stopper="+name+" numWords="+data.size()); + prln("Begin fillMany. numWords="+data.size()); adjustIndent(2); int cnt = 0; for (BitVector bv : data) { @@ -361,7 +367,7 @@ public class ProperStopper { idle(); // clear = 0 stop(); // block = 0 - if (traceDrain) prln("drain stopper="+name+" data="+new MarinaPacket(ans)); + if (traceDrain) prln("drain data="+new MarinaPacket(ans)); return ans; } -- 1.7.10.4