DigitalTesting 01
DigitalTesting 01
Digital Testing
Testing a Device
The circuit diagram in Figure 1-1 shows how a device is connected to the test
system for testing. This also applies to clusters, because they are tested the same
way. The testhead contains drivers and receivers that connect to the device under
test through the fixture.
To simplify the figure, the drivers are shown as amplifiers, D1 through D4, and the
receivers are shown as exclusive-OR gates, R1 and R2. The drivers drive signals to
the device under test, and the receivers receive signals from the device under test.
Figure 1-1 System circuits access the device through the fixture
Device Under Test
Fixture Probe
Actual
Receive
D1 States Receivers
Pass/Fail
R1
D2
Drive
States Pass/Fail
D3 R2
0 = Pass
Expected 1 = Fail
D4 Receive
Drivers States
The receivers are comparators that receive each actual state and compare it to an
expected state to determine whether the device has passed or failed the test. The
states to be driven to the device (the drive states) and the states that are expected
to be received (the expected receive states) are combined in the test into
bit-patterns are referred to as vectors. Each time a vector is to be applied, the
system sets up the drivers to drive the required states and the receivers to expect
the required states. The system then applies the vector by first strobing the drivers
and then, a short time later, strobing the receivers.
For more details, see:
• Applying Vectors
• Timing in Vectors
• Cyclic Redundancy Checks (CRCs)
• Overdriving
Applying Vectors
Following is a partial set of vectors that could be used to test the device shown in
Figure 1-2 on page 1-4. In this example, the vectors are named Vector 1,
Vector 2, and so on through Vector n; the states in each vector are listed
horizontally. The first four columns represent the sequence of states to be driven to
the device. The last two columns represent the states the system expects to receive
from the device in response to the driven states.
D1 D2 D3 D4 R1 R2
Vector 1: 1 0 1 1 1 0
Vector 2: 0 0 1 0 1 1
. . . . . .
. . . . . .
Vector n: 1 1 1 1 0 0
To test the device, the vectors are applied to it in sequence. In its simplest form, a
vector consists of a set of bits (1s and 0s). Each vector has two parts: a pattern of
bits to send in parallel to the device, and the pattern of bits it expects to receive in
response from the device. In the example, the first four bits are sent via drivers D1
through D4, and the fifth and sixth bits are received by receivers R1 and R2.
Timing in Vectors
Figure 1-2 on page 1-4 shows the timing for each vector. The first vector starts at
time t0; the drivers are strobed and the bits are sent, in parallel, to the inputs of the
device. After a short delay to allow the device to settle, the receivers are strobed, at
time t1, to receive the actual responses from the device and compare them to the
expected responses contained in the vector in the device test. The next vector then
starts at time t2.
The delay between driving and receiving is referred to as the receive delay. The
length of the vector, that is the time between driving one vector and the next, is
referred to as the vector cycle time. At the end of the vector, the next vector starts.
Both the vector cycle time and the receive delay are programmable.
Once the drivers are strobed, they maintain their states until the next vector starts.
After the receive delay, the receivers return pass/fail information to the controller.
If a failure occurs, what happens next depends on the statements in the testplan.
Vector 1 Vector 2
Receive Delay
t0 t1 t2 t3
Overdriving
The drive states are sent to a device by a technique referred to as overdriving; it is
sometimes called backdriving or pulsing, but all three terms refer to the same
process. Overdriving enables you to do an in-circuit test on the device: that is, to
isolate the device electrically from the effects of upstream devices so that you can
test the device without removing it from the circuit.
Overdriving implies driving each input pin of a device with a high current, narrow
pulse. The purpose of using a high current pulse is to overcome the states on the
outputs of any other devices that are connected to the input pin being driven. This
effectively isolates that input pin from the devices that normally drive it; the state
of that pin is determined only by the driving pulse, regardless of the states of any
overdriven outputs connected to that pin. While the pulse is applied, the overdriven
outputs must sink (or source) the high current. The purpose of using narrow pulses
is to help prevent pins from being overdriven too long and subsequently damaged
by heat.
Overdriving upstream devices can be used with node library testing as well as with
device testing.
As well as using very narrow pulses to protect overdriven devices, each test also has
a built-in timeout that prevents the test from running too long to prevent damage
to the upstream device. The timeout for each test is calculated individually, based
on the actual topology of the PC board being tested. During the board test
generation process, the Keysight SAFEGUARD safety analysis routines use the data
in the board file and the safety data for each device in the library, to set a time that
each device test can run without damaging any overdriven devices (refer to
Safeguard Protection on page 1-14).
One disadvantage of overdriving is that supplying large currents tends to degrade
high-speed signals. Therefore, do not overdrive pin cards that are designed for
higher-speed applications. If required, on Mux systems, different combinations of
cards can be installed to meet individual requirements.
The following summarizes the differences between the two types of tests, and the
reasons for making them.
• In-circuit test
Device test of a digital component on the printed circuit board. This test is
written such that it can be used across multiple boards.
Preconditioning
When a test for a device or cluster is generated, surrounding devices must be
disabled or conditioned if they would otherwise interfere with that test. To
determine how to precondition these devices, the program generators look for
preconditioning data in the library tests for those devices. The individual devices in
a cluster can be preconditioned, provided their in-circuit library tests contain
preconditioning information, but the cluster itself cannot be preconditioned.
A 1 2 F 1 H I
U1 U2 4 1 2
2 U3
EN
3
B
Fixture Probes
C 1 U4 2 G
D 1 U5 3
EN
2
E
Table 1-1 contains summaries of each of the tests that could be performed. The test
system is set to combinational mode to generate these tests.
Test Description
U1 in-circuit device test
pin-oriented — U1.1, U1.2
no effect on other devices
U2 in-circuit device test
pin-oriented — U2.1, U2.2, U2.3, U2.4
overdrive — U1.2, U4.2
safeguard — U1, U4
disable — U5
U3 in-circuit device test
pin-oriented — U3.1, U3.2
upstream disable — U2, U5
safeguard — U2, U5
U4 in-circuit device test
pin-oriented — U4.1, U4.2
no effect on other devices
U5 in-circuit device test
pin-oriented — U5.1, U5.2, U5.3
disable — U2
Test Description
Node library node library test
node-oriented — F, B, C, H
overdrive — U1.2
safeguard — U1
disable — U5
Board node library test
node-oriented — A, B, C, D, E, I
Statement Description
compile Compiles the VCL program. If you specify the library option, the object
(compiled) code is placed in a file in a digital library. If you do not specify
library, then executable object code is produced, and placed in a file under
the board test directory. Also use the debug and map options if test data is
required for debugging purposes.
d igital Selects digital mode, which clears the workstation workspace and turns on
VCL syntax checking. This mode is used only for writing and editing digital device
and node library tests. After compiling, the tests are run by the BT-Basic test
statement.
load board Use this statement to load the board data from the board test files into the system
memory before running any tests.
safeguard Selects safeguard mode. Clears the workspace and turns on SAFEGUARD
syntax checking.
Statement Description
acknowledge all failures, These statements specify that, if a device test fails, the failures are
acknowledge d igital failures reported. acknowledge all failures applies to all types of
tests; acknowledge digital failures applies only to
digital (VCL) tests. In either case, if a digital test fails, the test
halts and program control returns to the testplan (see the halt
statement).
cps, sps, dps These three statements, respectively, connect DUT power
supplies, set up the required voltages, and turn off the power
supplies and disconnect them.
ignore all failures, These statements, respectively, turn off acknowledge all
ignore d igital failures failures and acknowledge digital failures (if on) so
that, if a failure occurs, error reporting does not occur. As before,
if a failure occurs during a digital test, the test halts and program
control returns to the testplan (also see the halt statement).
Statement Description
powered Prepares the test system to test devices and circuits with power
applied to the board under test. The unpowered statement is
used mostly for passive testing of analog components.
safeguard <type> Establishes the SAFEGUARD protection level (none, cool,
digital or all) to be used during a digital test.
Statement Description
learn on/off Sets a learn flag before running a test. The program learns the CRCs
for any digital test that contains VCL compress statements, and stores
the result (for future testing) with the object code for the test. (Also used to
learn some analog tests.)
test Loads the object code for a VCL test into memory and starts the test.
test cont Continues executing a digital test that was halted or paused. You cannot
continue a test that stopped because of an error.
You can use the debug software to look at the expected and actual state changes
on the input and output pins. You can also temporarily change many of the test's
parameters, such as the vector timing, and, as long as you do not exit debug, rerun
the test without recompiling it.
As well as using debug, you can use the halt and pause statements in the VCL test,
and the test cont statement in the testplan, as aids in debugging the test. Also,
the sync parameter can be used in the test to synchronize an oscilloscope so that
you can observe waveforms, rise times, etc. Other BT-Basic statements that are
helpful in debugging include ignore digital failures, and safeguard none or
safeguard cool; however, care should be exercised if safeguarding is turned off
because of the possibility of damaging the board under test (see Safeguard
Protection on page 1-14).
When debugging, if you make any permanent changes to a digital test, that test
must be re-compiled. You can recompile the test or you can allow the i3070
In-Circuit Test Software to do the compiling. You can run the recompiled test (test
statement) without loading the complete board data again (load board statement)
as long as no changes were made to the board topology data. If there are any
topology changes, then you must reload the board data.
Safeguard Protection
If testing is not properly controlled, it can place abnormal stress on the devices that
are immediately upstream of the device under test — that is, devices connected to
the inputs of the device under test that must be overdriven. Devices that are
overdriven are subject to potential damage from overheating. Keysight
SAFEGUARD safety analysis protects your PC boards from such damage.
This section covers:
• What is SAFEGUARD?
• SAFEGUARD Analysis and Implementation
• SAFEGUARD Files
• SAFEGUARD Statements
What is SAFEGUARD?
The safety protection is an automatic feature of digital testing on the i3070
In-Circuit Test System. It establishes time limits for tests, thus guarding against
accidental damage to you PC board, caused by overstressing overdriven devices.
The time limit is referred to as a timeout; it automatically stops the test if the time
limit is reached. Rather than dictating some arbitrary limit on the time that tests can
run, the SAFEGUARD safety analysis routines calculate a separate time for each
digital test.
Test Timeout
To calculate a realistic timeout for each test, the safety routines consider the
physical characteristics of each device being overdriven and the topology of the PC
board. From this data, they calculate a safe time that the test can run (i.e., without
damaging overdriven devices). The safety routines also calculate an estimated
normal time that the test is expected to run. The normal time (plus a small margin
for error) then becomes the timeout, unless it is longer than the safe time, in which
case the test is inhibited from running. When a test is inhibited, you can run it if you
first specify safeguard cool or safeguard none.
Inhibited tests can be run if you execute safeguard none or safeguard cool; the
latter enforces cooldown delays between tests. However, if you execute either
statement, it is your responsibility as the test developer to ensure that the tests
do not damage devices on the board.
There are two timeout timers in the test system: the safeguard timer just described,
and a watchdog timer. The safeguard timer starts any time a digital test is run,
unless safeguard none or cool was specified. The watchdog timer is set to
approximately one and a half times the safeguard timer. It always starts when a
digital test is run, regardless of the safeguard status.
See:
• Inhibited Tests
• Dealing with Inhibited Tests
Inhibited Tests
The safety analysis calculates the timeout for each test, based on the device, or
cluster of devices, being tested, and on the surrounding devices. If the test is too
long to safely overdrive upstream devices, it is inhibited, in which case you may
need to alter the test.
There are several other reasons why a test can be inhibited. If the test affects
non-digital devices, such as FETs and transistors which potentially could be
damaged, again SAFEGUARD inhibits the test. (Items identified as nondigital in the
test itself do not cause the test to be inhibited.) Also, a test is inhibited if it would
cause unsafe levels of current to be driven through a device pin.
SAFEGUARD Files
The SAFEGUARD files contain the safety data used by the compiler to calculate safe
test times for digital tests, to inhibit digital tests, and to determine the appropriate
delays to place between digital tests. The SAFEGUARD data consists of
package-dependent parameters that describe the susceptibility of a particular
package and device class to damage from overdriving.
Each of the library directories that contain in-circuit, digital device tests has a
SAFEGUARD source file, called safeguard, together with its compiled object file
(safeguard.o). This file must contain the SAFEGUARD data for every device test in
that directory. The test generators look for that data for each device; if the data for
any device is not there, then the board file is not compiled.
The SAFEGUARD file also applies to the digital part of a mixed test.
ram
safeguard
digital
test_1
analog
test_2
Figure 1-4 shows a custom library directory, my_lib, with a SAFEGUARD file
safeguard (the object files have been omitted, to simplify the figure). The library
contains two in-circuit digital tests (test_1 and test_2), and a mixed test (ram) with
a digital part and an analog part. File safeguard contains the following entries for
the two in-circuit tests and the digital part of the mixed test:
use parameters "default" for "test_1"
use parameters "default" for "test_2"
use parameters "default" for "ram"
These statements associate the default SAFEGUARD parameters with the three
tests (see An Example Safeguard File). Notice that the in-circuit tests are referenced
by their file names, but the mixed test is referenced by its directory name, ram.
The data gathered for all of the devices in the board test are placed in a file by the
program generators and saved as safeguard under the board test directory. The
compiled version of this file (safeguard.o) is used by the safety analysis routines to
calculate the timeout and cooldown delays for each test.
particular block, then that parameter's default values are automatically assumed in
that block.
The parameter blocks are associated with specific device tests by the use
parameters statements (e.g., use parameters default for test_1). As indicated
above, every device test in each library directory must be referenced in that
directory's SAFEGUARD file. A use parameters statement can appear anywhere in
the file, except that it cannot be located in a parameter block and it cannot precede
the block it references.
In the standard libraries, each block of safeguard parameters resides in its own file
under directory $AgilentICT_ROOT/standard/safeguard. For example, the
parameters for standard TTL are in file
$AgilentICT_ROOT/standard/safeguard/standard_ttl. Each safeguard file in the
standard libraries then uses include statements to reference the standard blocks.
For example, file $AgilentICT_ROOT/library/ttl/safeguard contains the
statement to include the standard TTL block:
include "standard_ttl"
Example 1-1
! Safeguard file for custom library "my_lib"
! The first parameter block has the default values for all
parameters;
! because default values are assumed, the same block could be
written as:
! parameters "default"
! end parameters
parameters "default"
backdrive current of 0.720 for "0", 0.720 for "1"
bondwire 2540 by 25.4
heat source 50 by 10, 1 per output
operating temperature 40
overdrive power 2.88, 2.88 dissipated by heat source
package ceramic
thermal resistance 60
end parameters
! devices associated with the "default" parameters
use parameters "default" for "test_1"
use parameters "default" for "test_2"
use parameters "default" for "ram"
parameters "standard TTL"
backdrive current of 0.100 for "0", 0.275 for "1"
bondwire 2540 by 25.4
heat source 50 by 10, 2 per output
operating temperature 40
overdrive power 0.97, 0.60 dissipated by heat source
package ceramic
thermal resistance 60
end parameters
! devices associated with the "standard TTL" parameters
use parameters "standard TTL" for "7400"
use parameters "standard TTL" for "7404"
use parameters "standard TTL" for "7408"
use parameters "standard TTL" for "7410"
SAFEGUARD Statements
The SAFEGUARD statements are used in safeguard files to define the damage
parameters for classes of devices, as shown in the example file listed above. If a
parameter is not defined in a specific block, then that parameter is automatically
assumed to have its default value in that block.
The safeguard mode must be selected (execute the BT-Basic statement
safeguard) to write or edit the safeguard statements; syntax checking is on while
the mode is selected. Similarly to the other modes in the system, the safeguard
mode is associated with the source file when it is saved.
Option Description
safeguard none Turns off safeguarding and allows all inhibited tests to run. Do not use this
unless there is no reasonable alternative.
safeguard cool * Allows digital tests to run, but cooldown delays between tests are enforced.
safeguard d igital Tests that are inhibited because of non-digital devices are allowed to run.
safeguard all Prevents inhibited tests from running (the default in testplans that have no
safeguard <type> statements).
* Inhibited tests can be run if you execute safeguard none or safeguard cool; the
latter enforces cooldown delays between tests. However, if you execute either
statement, it is your responsibility as the test developer to ensure that the tests
do not damage devices on the board.
Statement Description
backdrive current Specifies the amount of current that flows through a power (or ground) pin
when one of the device's output pins is overdriven.
bond wire Specifies the size (i.e., length and diameter) of the device's bond wires.
end parameters Marks the end of a parameters block.
heat source Describes that portion of a digital device that is heated by overdriving.
include Enables you to merge object code from another file into the SAFEGUARD
object file when it is compiled.
model Specifies the name of the standard on which the SAFEGUARD analysis
routines are based.
operating Specifies the operating temperature of the digital device under test.
temperature
overdrive power Specifies the worst case power absorbed by an output pin when it is
overdriven.
package Specifies the package material (plastic or ceramic) of the device.
parameters Marks the start of a parameter block, which contains the SAFEGUARD
characteristics of a family of devices.
thermal resistance Specifies the thermal junction-to-case resistance of the device.
use parameters Associates a specific device test or mixed test with a specific parameter
block.
Using PMC
• The PMC channels have to be manually wired to the proper locations (see
Wiring Specifications).
• The ASRU Revision N Card must be declared in the board config file.
• There is no automatic test or fixture generation for this feature.
• The PMC_ON flag in sub Set_Custom_Options in the testplan must be set to true
to enable the PMC (see Example 1-2).
• In the testplan, also uncomment the statements in sub Setup_Power_Supplies
and sub Disconnect_Power_On_Board to use the PMC (see Example 1-3; a
sample implementation is shown in Example 1-4).
• Testplans generated prior to 08.00p software release – BT-Basic commands
for configuring and controlling PMC channels have to be manually added to
the testplan; and also the commands to initiate action upon detection of a
power failure.
sub Disconnect_Power_On_Board
dps
...
if PMC_On then
! Turn off PMC for all or selected channels here
! spmc <Channel Id> off
! spmc off
end if
subend
if PMC_On then
! Turn off PMC for all or selected channels here
spmc off ! turn off all PMC
! spmc <Channel Id> off
end if
Wiring Specifications
Table 1-7 shows the channel to MINT pin mapping on the ASRU Revision N Card.
Table 1-8 shows the brc designations for the PMC pins (side facing the operator).
Pins
Module 173–174 175–176 177–178
Module 3 1 2 3
Module 2 4 5 6
Module 1 7 8 9
Module 0 10 11 12
Module brc
Module 3 213173 to 213178
Module 2 201173 to 201178
Module 1 123101 to 123106
Module 0 111101 to 111106