public class ChainTest
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
static int |
DEFAULT_KHZ_STEP
Default TCK frequency increment for Schmoo plots, in kHz
|
static int |
LENGTH_MULTIPLIER
Number of times
measureLength(java.lang.String, int) should shift zeros into
chain to be sure it is full of zeros, when chain length is not known for
certain |
boolean |
readEnable
Whether to assert the scan chain read line during chain testing.
|
boolean |
writeEnable
Whether to assert the scan chain write line during chain testing.
|
Constructor and Description |
---|
ChainTest(ChainControl control)
Create a scan chain tester.
|
ChainTest(ChainControl control,
PowerChannel vddSupply)
Create a scan chain tester for a particular experimental setup.
|
Modifier and Type | Method and Description |
---|---|
void |
bringup(boolean testLengths)
Convienence method tests general scan chain functionality during bringup
of a chip or system.
|
int |
getKhzHigh()
Returns highest frequency included in Schmoo plot
|
int |
getKhzLow()
Returns lowest frequency included in Schmoo plot
|
int |
getKhzStep()
Returns frequency step in Schmoo plot
|
int |
getNumTests()
Number of iterations used in testing a scan chain.
|
static BitVector |
getRandomBits(int numBits)
Returns an bit vector with random true/false values
|
float |
getVddHigh()
Returns high Vdd value in Schmoo plot, in Volts
|
float |
getVddLow()
Returns low Vdd value in Schmoo plot, in Volts
|
float |
getVddStep()
Returns Vdd step size in Schmoo plot, in Volts
|
int |
measureLength(java.lang.String chainRoot,
int severity)
Measure the number of scan chain elements in a root scan chain.
|
void |
schmooPlot(java.lang.String chainRoot,
java.lang.String failFile,
java.lang.String passFile)
Saves a Schmoo Plot to
failFile and passFile . |
void |
schmooPlot(java.lang.String chainRoot,
java.lang.String failFile,
java.lang.String passFile,
boolean pulseReset)
Saves a Schmoo Plot to
failFile and passFile . |
void |
schmooPlotShadow(java.lang.String chainRoot,
java.lang.String failFile,
java.lang.String passFile,
boolean pulseReset)
|
void |
setKhzRange(int khzLow,
int khzHigh,
int khzStep)
Set range of JTAG TCK frequencies covered by Schmoo plot
|
void |
setNumTests(int numTests)
Sets number of iterations used in testing a scan chain
|
void |
setVddRange(float vddLow,
float vddHigh,
float vddStep)
Set Vdd range for Schmoo plot (values only kept to nearest 0.001 V)
|
int |
testAllChains(int errTestSeverity)
Test all scan chains in the system.
|
int |
testAllChains(java.lang.String chipName,
int errTestSeverity)
Test all scan chains within a given chip by reading and writing random
sequences.
|
boolean |
testLengths(int severity)
Compares lengths of all scan chains in the system to their claimed
values.
|
boolean |
testOneChain(java.lang.String chainRoot,
int errTestSeverity)
Test a single root scan chain by shifting in and out up to
numTests random bit sequences. |
boolean |
testOneChainShadow(java.lang.String chainRoot,
int errTestSeverity)
Test a single root scan chain by writing and reading up to
numTests random bit sequences to/from the shadow registers
of a RWS (readable/writeable shadow register) scan chain. |
public boolean readEnable
testOneChainShadow()
and
schmooPlotShadow()
.)public boolean writeEnable
testOneChainShadow(java.lang.String, int)
and schmooPlotShadow(java.lang.String, java.lang.String, java.lang.String, boolean)
.)public static final int DEFAULT_KHZ_STEP
public static final int LENGTH_MULTIPLIER
measureLength(java.lang.String, int)
should shift zeros into
chain to be sure it is full of zeros, when chain length is not known for
certainpublic ChainTest(ChainControl control, PowerChannel vddSupply)
control
- Object providing scan chain programmingvddSupply
- Object providing control of chip VddschmooPlot(java.lang.String, java.lang.String, java.lang.String)
public ChainTest(ChainControl control)
control
- Object providing scan chain programmingpublic int measureLength(java.lang.String chainRoot, int severity)
chainRoot
- path to root scan chain, starting at the chip nodeseverity
- action when length differs from expected lengthInfrastructure.SEVERITY_NOMESSAGE
,
Infrastructure.SEVERITY_WARNING
,
Infrastructure.SEVERITY_NONFATAL
,
Infrastructure.SEVERITY_FATAL
public boolean testLengths(int severity)
severity
- action when length differs from expected lengthInfrastructure.SEVERITY_NOMESSAGE
,
Infrastructure.SEVERITY_WARNING
,
Infrastructure.SEVERITY_NONFATAL
,
Infrastructure.SEVERITY_FATAL
public boolean testOneChain(java.lang.String chainRoot, int errTestSeverity)
numTests
random bit sequences. If incorrect bits are
shifted out or another shift error occurs, returns immediately.chainRoot
- Path to root scan chain, starting at chip (e.g.,
"miniHeater.eScan")errTestSeverity
- action when consistency check failsInfrastructure.SEVERITY_NOMESSAGE
,
Infrastructure.SEVERITY_WARNING
,
Infrastructure.SEVERITY_NONFATAL
,
Infrastructure.SEVERITY_FATAL
public boolean testOneChainShadow(java.lang.String chainRoot, int errTestSeverity)
numTests
random bit sequences to/from the shadow registers
of a RWS (readable/writeable shadow register) scan chain. If an error is
found, returns immediately.
WARNING: Do not use on scan chains that can put the chip in undesirable states, such as the Heater chip power scan chains. Also, incorrect results may result when master clear is on.
Ignores state of readEnable
and writeEnable
member variables.
chainRoot
- Path to root scan chain, starting at chip (e.g.,
"miniHeater.eScan")errTestSeverity
- action when consistency check failsInfrastructure.SEVERITY_NOMESSAGE
,
Infrastructure.SEVERITY_WARNING
,
Infrastructure.SEVERITY_NONFATAL
,
Infrastructure.SEVERITY_FATAL
public int testAllChains(java.lang.String chipName, int errTestSeverity)
chipName
- of the chip (e.g., "miniHeater")errTestSeverity
- action when data register bit consistency check failstestOneChain(java.lang.String, int)
,
Infrastructure.SEVERITY_NOMESSAGE
,
Infrastructure.SEVERITY_WARNING
,
Infrastructure.SEVERITY_NONFATAL
,
Infrastructure.SEVERITY_FATAL
public int testAllChains(int errTestSeverity)
errTestSeverity
- action when consistency check failstestOneChain(java.lang.String, int)
,
Infrastructure.SEVERITY_NOMESSAGE
,
Infrastructure.SEVERITY_WARNING
,
Infrastructure.SEVERITY_NONFATAL
,
Infrastructure.SEVERITY_FATAL
public void schmooPlot(java.lang.String chainRoot, java.lang.String failFile, java.lang.String passFile)
failFile
and passFile
.
Method testOneChain(String, int)
is used to determine if the
chain passes at each voltage and frequency specified.
Currently the JTAG tester is left at the default Vdd value, even though the chip voltage is changed. This is required for correct JTAG tester functioning, and does not noticeably pull up the chip voltage.
chainRoot
- Path to root scan chain to test (e.g., "miniHeater.eScan")failFile
- File containing voltage, frequency pairs that failedpassFile
- File containing voltage, frequency pairs that passedsetKhzRange(int, int, int)
,
setVddRange(float, float, float)
public void schmooPlot(java.lang.String chainRoot, java.lang.String failFile, java.lang.String passFile, boolean pulseReset)
failFile
and passFile
.
Method testOneChain(String, int)
is used to determine if the
chain passes at each voltage and frequency specified.
Currently the JTAG tester is left at the default Vdd value, even though the chip voltage is changed. This is required for correct JTAG tester functioning, and does not noticeably pull up the chip voltage.
chainRoot
- Path to root scan chain to test (e.g., "miniHeater.eScan")failFile
- File containing voltage, frequency pairs that failedpassFile
- File containing voltage, frequency pairs that passedpulseReset
- Reset jtag tester (using TRST) before each passsetKhzRange(int, int, int)
,
setVddRange(float, float, float)
public void schmooPlotShadow(java.lang.String chainRoot, java.lang.String failFile, java.lang.String passFile, boolean pulseReset)
schmooPlot(java.lang.String, java.lang.String, java.lang.String)
, but uses testOneChainShadow(java.lang.String, int)
instead
of testOneChain(java.lang.String, int)
. See warnings at testOneChainShadow(java.lang.String, int)
!chainRoot
- Path to root scan chain to test (e.g., "miniHeater.eScan")failFile
- File containing voltage, frequency pairs that failedpassFile
- File containing voltage, frequency pairs that passedpulseReset
- Reset jtag tester (using TRST) before each passsetKhzRange(int, int, int)
,
setVddRange(float, float, float)
public void bringup(boolean testLengths)
testLengths
- whether to test the lengths (can be slow)public int getKhzHigh()
public int getKhzLow()
public int getKhzStep()
public int getNumTests()
testOneChain(java.lang.String, int)
,
testAllChains(java.lang.String, int)
public float getVddHigh()
public float getVddLow()
public float getVddStep()
public void setKhzRange(int khzLow, int khzHigh, int khzStep)
khzLow
- Low frequency in Schmoo plot, in kHzkhzHigh
- High frequency in Schmoo plot, in kHzkhzStep
- Frequency step size in Schmoo plot, in kHzpublic void setNumTests(int numTests)
numTests
- Number of iterations used in testing a scan chaintestOneChain(java.lang.String, int)
,
testAllChains(java.lang.String, int)
public void setVddRange(float vddLow, float vddHigh, float vddStep)
vddLow
- Low Vdd value in Schmoo plot, in VoltsvddHigh
- High Vdd value in Schmoo plot, in VoltsvddStep
- Vdd step size in Schmoo plot, in Voltspublic static BitVector getRandomBits(int numBits)
numBits
- Number of bits to return