X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fcom%2Fsun%2Fvlsi%2Fchips%2Fmarina%2Ftest%2FMarinaTest.java;h=01b394dd4a472c3749cc919488babb6f76c4c452;hb=880b4654b1774ff8bdbc331bdff19bbbc6200a61;hp=b712057c308906499a556bd7edf03a337fedc284;hpb=cbafca81451a452015ea365b3546c3bc0ac7bdbd;p=fleet.git diff --git a/src/com/sun/vlsi/chips/marina/test/MarinaTest.java b/src/com/sun/vlsi/chips/marina/test/MarinaTest.java index b712057..01b394d 100644 --- a/src/com/sun/vlsi/chips/marina/test/MarinaTest.java +++ b/src/com/sun/vlsi/chips/marina/test/MarinaTest.java @@ -3,26 +3,7 @@ package com.sun.vlsi.chips.marina.test; import java.util.ArrayList; import java.util.List; -import com.sun.async.test.BitVector; -import com.sun.async.test.ChainControl; -import com.sun.async.test.ChainG; -import com.sun.async.test.ChainTest; -import com.sun.async.test.ChipModel; -import com.sun.async.test.HP34401A; -import com.sun.async.test.Infrastructure; -import com.sun.async.test.JtagSubchainTesterModel; -import com.sun.async.test.JtagTester; -import com.sun.async.test.ManualPowerChannel; -import com.sun.async.test.NanosimModel; -import com.sun.async.test.NanosimLogicSettable; -import com.sun.async.test.HsimModel; -import com.sun.async.test.VerilogModel; -import com.sun.async.test.Netscan4; -import com.sun.async.test.PowerChannel; -import com.sun.async.test.Pst3202Channel; -import com.sun.async.test.SiliconChip; -import com.sun.async.test.SimulationModel; -import com.sun.async.test.VoltageReadable; +import com.sun.electric.tool.simulation.test.*; import com.sun.vlsi.chips.marina.test.Marina.Ilc; import com.sun.vlsi.chips.marina.test.CmdArgs; import com.sun.vlsi.chips.marina.test.CmdArgs.Mode; @@ -34,7 +15,6 @@ import edu.berkeley.fleet.api.Instruction.Set.SetDest; import edu.berkeley.fleet.api.Instruction.Set.SetSource; import edu.berkeley.fleet.marina.MarinaFleet; import edu.berkeley.fleet.marina.MarinaPath; -import com.sun.async.test.*; import java.io.*; @@ -120,6 +100,8 @@ public class MarinaTest { private PowerChannel corePowerSupply, padsPowerSupply; private VoltageReadable coreVoltmeter, voltmeterForCurrent; + + private ChainTest ctD, ctR, ctC, ct; private ChainControl ccD, ccR, ccC, cc; @@ -172,38 +154,11 @@ public class MarinaTest { return; } } - private void setUpSuppliesAndMeters(Station station) { - // set up power supplies and meters - if (!sim()) { - prln("Testing station: "+station); - Infrastructure.gpibControllers = new int[] {0}; - switch (cmdArgs.station) { - case ONE: - corePowerSupply = new Pst3202Channel("ch1", "HPST3202", 1); - padsPowerSupply = new Pst3202Channel("ch2", "HPST3202", 2); - break; - case TWO: - corePowerSupply = new Pst3202Channel("ch1", "HPST3202B", 1); - padsPowerSupply = new Pst3202Channel("ch2", "HPST3202B", 2); - break; - default: - fatal(true, "Unrecognized station: "+cmdArgs.station); - } - corePowerSupply.setCurrent((float)1.7); - corePowerSupply.setVoltageWait((float)1.0); - - padsPowerSupply.setCurrent((float)0.100); - padsPowerSupply.setVoltageWait((float)1.8); - - coreVoltmeter = new HP34401A(station.coreVoltmeter); - voltmeterForCurrent = new HP34401A(station.currentVoltmenter); - } - } - + private MarinaTest(String[] args) throws Exception { cmdArgs = new CmdArgs(args); reportTask(cmdArgs); - if (cmdArgs.mode==Mode.TEST_SILICON) doSilicon(); else doSim(); + doSim(); } static PowerChannel vdd18; @@ -315,6 +270,7 @@ public class MarinaTest { ccs.addChain(Marina.DATA_CHAIN, cc); ccs.addChain(Marina.REPORT_CHAIN, cc); ccs.addChain(Marina.CONTROL_CHAIN, cc); + ccs.addChain(Marina.DUKE_CHAIN, cc); marina = new Marina(ccs, model, !cmdArgs.jtagShift, indenter); marina.mc0=mc0; @@ -355,25 +311,6 @@ public class MarinaTest { if (model instanceof SimulationModel) ((SimulationModel)model).finish(); } - private void doSilicon() throws Exception { - model = new SiliconChip(); - String ip = cmdArgs.station.ipAddr; - JtagTester tester = new Netscan4(ip, cmdArgs.station.jtagChannel); - tester.printInfo = false; - int khz = 1000; - ChainControl cc = new ChainControl("???", tester, 1.8f, khz); - cc.noTestSeverity = Infrastructure.SEVERITY_NOMESSAGE; - ChainControls ccs = new ChainControls(); - ccs.addChain(Marina.DATA_CHAIN, cc); - ccs.addChain(Marina.REPORT_CHAIN, cc); - ccs.addChain(Marina.CONTROL_CHAIN, cc); - marina = new Marina(ccs, model, false, indenter); - PowerChannel pc = new ManualPowerChannel("pc", false); - ChainTest ct = new ChainTest(cc, pc); - ct.testAllChains("marina", Infrastructure.SEVERITY_WARNING); - doOneTest(cmdArgs.testNum); - setUpSuppliesAndMeters(cmdArgs.station); - } /** In the absence of looping, the longest path through Infinity is 4 column delays */ private void waitUntilQuiescent() { @@ -1006,9 +943,14 @@ public class MarinaTest { CLEAR_FLAG.add(Predicate.FlagA), CLEAR_FLAG.add(Predicate.FlagB)); + private static final Instruction FLAG_NOP_IF_FLAG_A = + new Instruction.Set(dock, Predicate.FlagA, + CLEAR_FLAG.add(Predicate.FlagA), + CLEAR_FLAG.add(Predicate.FlagB)); + private static final Instruction NOP = new Instruction.Move(dock, - Predicate.IgnoreFlagD, /* predicate */ + Predicate.IgnoreFlagD, /* predicate */ false, /* torpedoable */ null, /* path */ false, /* tokenIn */ @@ -1045,6 +987,19 @@ public class MarinaTest { false /* tokenOut */ ); + private static final Instruction SEND_DATA_IF_A_SET_AND_D_NOT_SET = + new Instruction.Move(dock, + Predicate.FlagA, /* predicate */ + false, /* torpedoable */ + null_path, /* path */ + false, /* tokenIn */ + false, /* dataIn */ + false, /* latchData */ + false, /* latchPath */ + true, /* dataOut */ + false /* tokenOut */ + ); + private static final Instruction SEND_DATA_IF_D_SET = new Instruction.Move(dock, Predicate.FlagD, /* predicate */