From: rkao Date: Sun, 23 Nov 2008 21:34:03 +0000 (+0000) Subject: testFlagC passes, but instruction encoder needs fixing X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=87f446920035251d0aef96da4902bbb7918233fb;p=fleet.git testFlagC passes, but instruction encoder needs fixing --- diff --git a/electric/marinaL.jelib b/electric/marinaL.jelib index dee4f82..b7cc2df 100755 --- a/electric/marinaL.jelib +++ b/electric/marinaL.jelib @@ -37,7 +37,7 @@ IstageGroupsL:southFifo;1{lay}|southFif@0||2520|-2736|||D5G4; X # Cell marina;1{sch} -Cmarina;1{sch}||schematic|1226940444999|1227470246738|I +Cmarina;1{sch}||schematic|1226940444999|1227477166187|I Ngeneric:Facet-Center|art@0||0|0||||AV NOff-Page|conn@0||-49|-1|||| NOff-Page|conn@1||70|-2|||| @@ -112,7 +112,7 @@ IfifoL:tokenFIFO;1{ic}|tokenFIF@0||24|1|||D5G4; IorangeTSMC090nm:wire90;1{ic}|wire90@0||12|6|||D0G4;|ATTR_L(D5G1;PUD)D291.79999999999995|ATTR_LEWIRE(P)I1|ATTR_layer(D5G1;NPY-1;)I1|ATTR_width(D5G1;NPY-2;)I3 IorangeTSMC090nm:wire90;1{ic}|wire90@1||33|6|||D0G4;|ATTR_L(D5G1;PUD)D291.79999999999995|ATTR_LEWIRE(P)I1|ATTR_layer(D5G1;NPY-1;)I1|ATTR_width(D5G1;NPY-2;)I3 IorangeTSMC090nm:wire90;1{ic}|wire90@2||-9|6|||D0G4;|ATTR_L(D5G1;PUD)D291.79999999999995|ATTR_LEWIRE(P)I1|ATTR_layer(D5G1;NPY-1;)I1|ATTR_width(D5G1;NPY-2;)I3 -Awire|a[14]|D5G2;||900|pin@52||-9|-3|pin@53||-9|-11 +Awire|ain[14]|D5G2;||900|pin@52||-9|-3|pin@53||-9|-11 Abus|cl[T,F],clS[T,F],rd[T,F],mc|D5G2;|-0.5|IJ2700|dataPath@0|cl[T,F],clS[T,F],rd[T,F],mc|0|8|pin@62||0|18 Awire|ddo[D]|D5G2;||900|pin@20||51|3|pin@21||51|0 Abus|ddo[T,D]|D5G2;|-0.5|IJ900|pin@17||10|3|pin@18||10|0 @@ -121,7 +121,7 @@ Abus|din[1:37,T],ain[1:14]|D5G2;|-0.5|IJ900|pin@50||25|-15|pin@51||25|-20 Awire|doo[D]|D5G2;||900|pin@25||67|6|pin@30||67|3 Abus|doo[T,D]|D5G2;|-0.5|IJ900|pin@22||-11|3|pin@27||-11|1 Awire|doo[T]|D5G2;||900|pin@78||32|1|pin@79||32|-3 -Abus|dout[1:37,T],aou[1:14]|D5G2;|-0.5|IJ900|pin@80||40|-9|pin@81||40|-12 +Abus|dout[1:37,T],douta[1:14]|D5G2;|-0.5|IJ900|pin@80||40|-9|pin@81||40|-12 Abus|iout[1:36],aout[T]|D5G2;|-0.5|IJ2700|pin@60||-14|-6|pin@61||-14|-2 Abus|iout[1:37],aout[T,1:14]|D5G2;|-0.5|IJ900|pin@58||-27|-6|pin@59||-27|-12 Abus|net@6||-0.5|IJ1800|pin@60||-14|-6|dataPath@0|in[1:36,T]|-2|-6 diff --git a/testCode/com/sun/vlsi/chips/marina/test/Marina.java b/testCode/com/sun/vlsi/chips/marina/test/Marina.java index bd96a5e..43f1b5f 100644 --- a/testCode/com/sun/vlsi/chips/marina/test/Marina.java +++ b/testCode/com/sun/vlsi/chips/marina/test/Marina.java @@ -32,12 +32,17 @@ public class Marina { "southFif@0.tapPropS@0.tapStage@1"; private static final String TOK_FIFO_PATH = "tokenFIF@0"; private static final String TOK_PRED_PATH = "dataPath@0.ringSkip@0.moveLit@1.scanKhx5@0.scanCell@5"; + private static final String INSTRUCTION_COUNTER_PATH = "southFif@0.tapPropS@0"; + private static final String DATA_COUNTER_PATH = "northFif@0.fillDrai@0"; + private static final int COUNTER_LENGTH = 34; private static final int INSTRUCTION_SEND_NDX = MarinaTest.NEW ? 1 : 1; private static final int INSTRUCTION_RECIRCULATE_NDX = 0; private static final int A_FLAG_NDX = MarinaTest.NEW ? 0 : 0; private static final int B_FLAG_NDX = MarinaTest.NEW ? 1 : 1; + public static final int SOUTH_RING_CAPACITY = 11; + // ILC appears in scan chain as "count[1:6], zLo, i, dLo" public class Ilc { // value is bit reversed and complemented @@ -87,6 +92,11 @@ public class Marina { private void shiftControl(boolean readEnable, boolean writeEnable) { cc.shift(CONTROL_CHAIN, readEnable, writeEnable); } + + /** Shift the data scan chain */ + private void shiftData(boolean readEnable, boolean writeEnable) { + cc.shift(DATA_CHAIN, readEnable, writeEnable); + } public Marina(ChainControl cc, ChipModel model, Indenter indenter) { this.cc = cc; @@ -97,11 +107,6 @@ public class Marina { DATA_CHAIN, REPORT_CHAIN, cc, model, indenter); -// tokOut = new ProperStopper("tokOut", -// CONTROL_CHAIN, -// DATA_CHAIN, -// REPORT_CHAIN, -// cc, model, indenter); instrIn = new InstructionStopper("southFif@0.tapPropS@0.properSt@0", CONTROL_CHAIN, DATA_CHAIN, @@ -166,6 +171,28 @@ public class Marina { public BitVector getDRegister() { throw new RuntimeException("please implement this!"); } + /** return value of instruction counter. Instruction counter is in south ring + * after the proper stopper. Caution: instruction counter is written by all scans, + * regardless of readEnable or writeEnable! */ + public long getInstructionCounter() { + shiftData(true, false); + BitVector count = cc.getOutBits(REPORT_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 is in north ring + * after the proper stopper. Caution: data counter is written by all scans, + * regardless of readEnable or writeEnable! */ + public long getDataCounter() { + shiftData(true, false); + BitVector count = cc.getOutBits(REPORT_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, boolean tokenhood, BitVector address) { int len = 37+1+14; diff --git a/testCode/com/sun/vlsi/chips/marina/test/MarinaTest.java b/testCode/com/sun/vlsi/chips/marina/test/MarinaTest.java index a766cb5..8d34685 100644 --- a/testCode/com/sun/vlsi/chips/marina/test/MarinaTest.java +++ b/testCode/com/sun/vlsi/chips/marina/test/MarinaTest.java @@ -1242,9 +1242,9 @@ public class MarinaTest { // FIXME: temporary modification to make // troublshooting easier; this will be removed - for(int i=0; i out = marina.instrIn.drainMany(); + for (int i=0; i