From: Adam Megacz Date: Mon, 10 Nov 2008 22:56:29 +0000 (+0000) Subject: add test 3005 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=ccead271052aaca386b696dbc21f09268ca0c62f;p=fleet.git add test 3005 --- diff --git a/testCode/com/sun/vlsi/chips/marina/test/MarinaTest.java b/testCode/com/sun/vlsi/chips/marina/test/MarinaTest.java index 0a1d43f..da418e1 100644 --- a/testCode/com/sun/vlsi/chips/marina/test/MarinaTest.java +++ b/testCode/com/sun/vlsi/chips/marina/test/MarinaTest.java @@ -453,6 +453,61 @@ public class MarinaTest { prln("End testFlagZ"); } + private void testPredicationOnAB(IsolatedInDock inDock) { + prln("Begin testPredicationOnAB"); + adjustIndent(2); + + List toks; + + prln("Setting OLC=63"); + inDock.instrIn.fill(new Instruction.Set(DOCK,false,Predicate.IgnoreOLC,SetDest.OuterLoopCounter, 63)); + + for(boolean flag_a : new boolean[] { false, true }) { + for(boolean flag_b : new boolean[] { false, true }) { + prln("Setting flags, a="+flag_a+" b="+flag_b); + inDock.instrIn.fill(new Instruction.Set(DOCK,false,Predicate.IgnoreOLC, + flag_a ? Instruction.Set.FlagFunction.ONE : Instruction.Set.FlagFunction.ZERO, + flag_b ? Instruction.Set.FlagFunction.ONE : Instruction.Set.FlagFunction.ZERO + )); + getCtrsFlags(inDock); + + adjustIndent(2); + for(Predicate predicate : new Predicate[] { + Predicate.Default, + Predicate.FlagA, + Predicate.FlagB, + Predicate.NotFlagA, + Predicate.NotFlagB, + }) { + + prln("Attempting send token with a="+flag_a+", b="+flag_b+", predicate="+predicate.getClass().getName()); + adjustIndent(2); + inDock.instrIn.fill(new Instruction.Set(DOCK,false,Predicate.IgnoreOLC,SetDest.InnerLoopCounter, 1)); + inDock.instrIn.fill(new Instruction.Move(DOCK, + false, /* requeueing */ + predicate, /* predicate */ + false, /* torpedoable */ + null, /* path */ + false, /* tokenIn */ + false, /* dataIn */ + false, /* latchData */ + false, /* latchPath */ + false, /* dataOut */ + true /* tokenOut */ + )); + adjustIndent(-2); + toks = inDock.tokOut.drainMany(); + int expected = predicate.evaluate(flag_a, flag_b, false, false) ? 1 : 0; + fatal(toks.size()!=expected, "Expected "+expected+" token to emerge but got: "+ + toks.size()+" token(s)"); + } + adjustIndent(-2); + } + } + adjustIndent(-2); + prln("End testPredicationOnAB"); + } + private void getCtrsFlags(IsolatedInDock inDock) { int olc = inDock.getOLC(); prln("OLC="+olc); @@ -742,6 +797,7 @@ public class MarinaTest { case 3002: testRequeueStage0((IsolatedInDock)design); break; case 3003: testRequeueStage0to1((IsolatedInDock)design); break; case 3004: testFlagZ((IsolatedInDock)design); break; + case 3005: testPredicationOnAB((IsolatedInDock)design); break; default: fatal(true, "Test number: "+testNum+" doesn't exist.");