LoC_LoS_appnote
LoC_LoS_appnote
DFT
At-speed ATPG testing using
FastScan and TestKompress
1.0 Introduction
As the manufacturing technology for ICs allow smaller and smaller geometries, there are
more speed related defects occurring. The defects can be caused by manufacturing
process anomalies, material impurities and any kind of dirt. For the fastest chips, even
the smallest delay defects affect the rated frequency at which a chip can operate. For
these reasons, at-speed testing has become critical for fast VLSI chips. It is important to
note that these speed related defects are not just limited to the high-end multi- gigahertz
type of designs like microprocessors. These timing related defects also need to be
checked in slower frequency designs.
The purpose of a delay test is to verify that a design operates correctly at a specified
clock rate. A delay test can be created to check for either a transition delay or a path
delay. There are many things to consider when a design is to include at-speed testing.
Some of these include: timing of scan chains, shift clocks, scan control, power
consumption, and tester capabilities. Because these topics are covered well in many
publications, this application note will not try to explain all the details of at-speed, or
delay testing, but rather will explain more about the newer enhancements made to
FastScan and TestKompress to help address the testing of ICs for speed related defects.
Figure 1 shows a general flow of the steps you might take to create an at-speed pattern set
using FastScan or TestKompress. The step for defining capture procedures is optional.
Create Patterns
Analyze Coverage
Figure 1. Flow
Your process may be different, and it may involve re-iterating through some of the steps
based on your design and coverage goals. This application note is laid out by section
topics that correspond to this general flow.
Sections 4.0 and 5.0 explain characteristics of the at-speed fault types to help you decide
which fault type(s) and patterns to use. Timing for at-speed test issues is covered in
section 6.0. Sections 7.0 and 8.0 explain more about the capture procedures and the
support of using on-chip PLLs for your at-speed clocking. This is followed by more
examples in section 9.0 with more details on transition fault issues. In addition, there is
an appendix at the very end for those interested in creating pattern sets that contain
coverage for multiple fault models.
To test for speed related defects in manufactured parts, it is essential to create high
coverage test patterns using the transition and/or path delay fault models. Virtually
everyone uses the stuck-at fault model for their logic testing measure. But with speed
related defects becoming a common problem, more people are using fault models that test
for speed related defects as well. Stuck-at and at-speed fault models catch many types of
defects like bridges, opens, doping, etc.
Transition faults model gross delays on gate terminals (or nodes), so each terminal can be
tested for slow-to-rise or slow-to-fall behavior. The defects these represent may include
things like partially conducting transistors or interconnections.
If you examine Figure 2, you’ll see that for a simple AND gate, there are 6 potential
transition faults. Those are slow-to-rise and slow-to-fall for each of the 3 terminals.
Because these tests determine the speed at which a device can operate (or fail), this
requires a two cycle test. First, all the conditions for the test are set. In this example, A
and B are 0 and 1 respectively. Then a change is launched on A, which should cause a
change on Y within a pre-determined time. At that point a circuit response capture is
performed and the value on Y is measured. Y might not be stuck at a 0 value, but if Y is
still a 0 when the measurement is taken (the capture point), the device is considered
faulty. The ATPG tool automatically chooses the launch and capture scan cells.
The path delay fault model is another speed-related model and it is somewhat similar to
the transition fault. The difference is that for path delay, a test is generated for testing the
combined delay through a specific path that is defined by the user. Path delay patterns
also use two at-speed cycles for the launch and capture events. See Figure 3 for an
example of a robust path delay test.
SETUP > Add Pin Constraint scan_en c0 // force for launch and capture
SETUP > Set Output Masks on // don’t observe primary outputs
SETUP > Add Nofaults <x, y, z> // ignore non-functional logic
// like boundary scan, etc.
…
ATPG > Set Simulation Mode Combinational –Depth 2 // depth is design dependent
ATPG > Set Fault Type Path_delay
ATPG > Load Paths <filename> // specify the path file
ATPG > Add Faults –All
ATPG > Create Patterns
The main difference in the two at-speed fault models is that for path delay, the paths to
test are defined by the user (usually after using a static timing analysis tool). When using
transition faults, FastScan or TestKompress can choose any path to use that includes the
gate terminal to be tested. Once the two test pattern types are generated, they look
virtually the same to the tester.
For at-speed tests using transition faults, the ATPG engine default is to try to generate a
clock sequential pattern that launches in some cycle after shift is completed. This is
commonly referred to as a broadside pattern and the timing diagram may look something
like the one in Figure 5 where SE stands for scan enable.
...
SE
SHIFT SHIFT Dead SHIFT
cycle
Figure 5. Broadside
Failing that, the ATPG engine tries to generate a pattern that uses the last shift as the
launch event. This uses the combinational ATPG engine, and produces what looks like a
basic pattern with an extra force PI before the last shift. This pattern type is commonly
called a launch off shift transition pattern and its basic timing is shown in Figure 6.
Capture
Launch
...
CLK
...
SE
SHIFT SHIFT LAST Capture SHIFT
SHIFT
The both broadside and launch off shift can improve fault coverage. However, launch off
shift requires that the scan enable for MUX scan designs must be globally routed to allow
changing from shift to capture mode at-speed. Therefore, launch off shift has significant
impact on scan enable timing and it has to be timed and routed similar to a clock.
Because a lot of designs can’t support the restrictions required by launch off shift, it is
often desirable to suppress the attempt to create a launch off last shift pattern if the clock
sequential engine fails to generate a broadside pattern. An option called - no_shift_launch,
can be issued with the Set Fault Type Transition command to prevent any ATPG attempts
to create launch off last shift patterns.
The Set Fault Type command for FastScan and TestKompress has the syntax shown
below:
Figure 7 shows an example of how you could use this new option at the command line or
in a dofile with a few other commands to generate broadside transition patterns.
SETUP > Add Pin Constraint scan_en c0 // force for launch and capture
SETUP > Set Output Masks on // don’t observe primary outputs
SETUP > Set Transition Holdpi on // freeze primary input values
SETUP > Add Nofaults <x, y, z> // ignore non-functional logic
// like boundary scan, etc.
…
ATPG > Set Fault Type Transition -no_shift_launch // Prohibit launch off last shift
ATPG > Set Simulation Mode Combinational –Depth 2 // Depth is design dependent
ATPG > Create Patterns
If you want to create transition patterns with launch off last shift, you could use a
sequence of commands like those shown in Figure 8.
Now that we’ve explained the different fault models and broadside versus launch off
shift, let’s go into more detail on how the timing works for these at-speed tests. The
timing information that is used with the patterns is supplied by the user in a test
procedure file. This file describes the scan circuitry operation within a design and is
created by the user or by DFTAdvisor after it inserts scan circuitry into a design. So the
test procedure file contains cycle-based procedures and timing definitions that tell the
ATPG tool how to operate the scan structures within a design. For detailed information
on test procedure files, consult chapter 9 of the Design-For-Test Common Resources
Manual. The examples in this application note will not show all the different types of
procedures, like setup, shift, and load/unload.
Within the test procedure file, timeplates are used to define tester cycles and specify
where all event edges are placed in each cycle. As was shown in Figure 5 for broadside
testing, there are two main cycle types; a slow cycle for shifting (or load/unload) and fast
cycles for the launch and capture cycles. If we now look at an example that includes
some timing, it would look something like Figure 9. This diagram shows 400
nanosecond periods for the slow shift cycles defined in a timeplate called tp_slow and 40
nanosecond periods for the fast launch and capture cycles defined in a timeplate called
tp_fast. Parts of the test procedure file for this example are shown in Figure 10.
400 ns 400 ns 40 ns 40 ns
tp_slow tp_slow
tp_fast
tp_fast
As you can see from this example, there is a 40 nanosecond time between the launch and
capture clocks. If you want to create this same timing between launch and capture events
but all your clock cycles have the same period, you can achieve this by skewing the clock
pulses within their cycle periods if your tester can provide this capability. Figure 11
shows how this timing might look and is followed by an example test procedure file in
Figure 12 that includes timeplate definitions called tp_late and tp_early.
capture
100 ns 100 ns 40 ns 100 ns
By moving the clock pulse later in the period for the load_unload and shift cycles and
earlier in the period for the capture cycle, the 40 nanosecond time between the launch and
capture clocks is achieved. For brevity reasons, the contents of the test procedure file
examples shown in figures 10 and 12 are not complete. Normally, they would also
include more items like shift and setup procedures.
In order to create at-speed test patterns for designs with complicated clocking schemes, it
is sometimes necessary to allow the designer to specify the actual launch and capture
clocking sequences or procedures. For example, in an LSSD type design with master and
slave clocks, the number and order, or sequence of clocks, might need to be done in a
specific way.
The new Set Capture Procedure command introduces the concept of multiple named
capture procedures in the test procedure file used with FastScan and TestKompress. The
old behavior is still supported in that the user can have one un-named capture procedure
that still conforms to the same rules as it always had. This un-named procedure is the
default capture procedure. The user is now allowed to specify additional named capture
procedures, each having a unique name. The sequences of events in these additional
named capture procedures are passed on to the DRC and the ATPG kernel and influence
how the ATPG engine generates patterns. It is important to know that named capture
procedures can be used for stuck-at, path delay, and broadside transition patterns, but
launch off shift transition patterns are not supported.
By default, all capture procedures defined in the test procedure file are allowed to be used
by ATPG except the capture procedures that fail to pass DRC checking. When all named
capture procedures are disabled by the command, ATPG is run as if there is no capture
procedure defined in the test procedure file or if a general (un-named) capture procedure
is present, it is used.
The Set Capture Procedure command for FastScan and TestKompress has the syntax
shown below:
Figure 13 shows an example of how you could use this command at the command line or
as part of a dofile.
A great way to use the named capture procedures is for the support of on-chip or internal
clocks. These are clocks generated on-chip by a PLL or other clock generating circuitry
In addition to the new named capture procedures, a new definition called “mode” is
added to the test procedure file syntax for named capture procedures. There are two mode
blocks available, one called “internal” and one called “external”. They must be used
together. If mode definitions are used, all cycles in a procedure must be defined within
The internal mode is used to describe what happens on the internal side of the on-chip
PLL control logic, while the external mode is used to describe what happens on the
external side of the on-chip PLL. Figure 14 shows how this may look. The internal
mode uses the internal clocks (/pll/clk1 & /pll/clk2) and signals while the external mode
uses the external clocks (system_clk) and signals (begin_ac & scan_en). If any external
clocks or signals go to both the PLL and to other internal chip circuitry (scan_en), their
behavior needs to be specified in both modes and needs to match. The number of cycles
used and the timeplates used can be different between the two modes, as long as the total
period of both modes is the same. Also, the non-clock events should be in the exact same
order and happen at the same time within the total period. This is for things like force_pi,
measure_po, and other signal forces. Other requirements include:
• If used, a measure_po statement can only appear in the last cycle of the external or
internal mode.
• If no measure_po statement is used, a warning is issued that the primary outputs will
not be observed.
• The external mode cannot pulse any internal clocks or force any internal control
signals.
• A force_pi statement needs to exist in the first cycle of both modes and be before the
first pulse of a clock.
• If an external clock only goes to the PLL and not to any other internal circuitry, a C2
DRC violation will not be issued.
The “pulse_capture_clock” statement is not used in the named capture procedure, instead
the specific clocks used are explicitly pulsed by name. In addition to the other statements
supported by the default capture procedure, the “condition” statement is allowed at the
beginning of the named capture procedure to specify what internal conditions need to be
met at certain scan cells in order to enable this clock sequence. Also, a new
“observe_method” statement has been added to allow a specific observe method to be
defined for each named capture procedure.
Finally, an optional type can be added to the cycle definition. The only type defined now
is the “slow” type. A slow cycle is one in which detection of at-speed faults cannot be
credited. This is important for accurate fault coverage simulation numbers.
The updated DRC takes all of the allowed waveforms into consideration during state
stability analysis. This reduces the pessimism of DRC, and among other things allows
sequential ATPG to be used on designs where scan is controlled by an 1149.1 test access
port (Boundary Scan). DRC analysis is responsible for breaking each test procedure into
a sequence of cycles that map onto the ATPG’s natural event order (force pi, measure po,
pulse clock). It is an error to use both named capture procedures and clock procedures in
a single ATPG session.
Random pattern ATPG will cycle through all of the capture procedures defined unless the
user issues the Set Capture Procedure command to specify a certain procedure(s).
Because all the clocks specified in the capture procedures are not applied in at-speed
cycles, at-speed fault simulation was implemented to collect fault coverage information
accurately. During at-speed fault simulation, at-speed related faults should not be
To define the internal signals and clocks for use in ATPG, a –internal switch has been
added to the Add Clocks and Add Primary Inputs commands. These are used for clocks
and signals that come out of the PLL or clock generating circuitry and are not available at
the real IO interface of the design.
The enhanced syntax for these two commands now looks like this:
For example, when creating ATPG patterns for the example used in section 8.0, you
would issue this command to define the internal clocks:
Then the two PLL clocks are available to the ATPG engine for pattern creation.
By default, FastScan and TestKompress work with the primary input clocks when
creating test patterns. If named capture procedures are used with internal clocks and
signals, then those are used for pattern creation and simulation purposes. If you save
patterns in the ASCII format, it saves the information using these internal clocks and
signals.
In order to get pattern sets that can run on tester equipment, you need to save patterns that
only contain the true primary inputs to the chip. These are the clocks and signals used in
the external mode of the named capture procedures, not the internal mode. To
accomplish this, an optional –mode_external switch has been added to the Save Patterns
command. When you use this –mode_external switch when issuing your regular Save
Patterns command with your desired pattern format, FastScan or TestKompress uses the
information from the named capture procedures to map the internal signals and clocks
back to the external signals and clocks which are available as IO on the device.
If the Save Patterns command is used without the –mode_external switch, the saved
patterns will contain the internal signals and clocks by default.
In a full scan design, the vast majority of transition faults are between scan cells (or cell
to cell) in the design. There are also some faults between the PI to cells and cells to the
PO. Targeting these latter faults can be more complicated, mostly because running these
test patterns on the tester can be challenging. For example, the tester performance or
timing resolution at regular IO pins may not be as good as that for clock pins. This
section shows a mux-DFF type scan design example and covers some of the issues
regarding creating transition patterns for the faults in these three areas.
Figure 17 shows an example chip. There are two clocks in this mux-DFF design, so that
increases the possible number of launch and capture combinations in creating transition
patterns. For example, depending on how the design is actually put together, there might
be faults that require these launch and capture combinations : C1-C1, C2-C2, C1-C2, and
C2-C1. The clocks may be either external or are created by some on-chip clock generator
circuitry or PLL.
Section 6.0 showed the basic waveforms and partial test procedure files for creating
broadside and launch off shift transition patterns. For this example, named capture
procedures are used to specify the timing and sequence of events. This example also
focuses on broadside patterns and shows only some of the possible named capture
procedures that might be used in this kind of design. For cell to cell broadside transition
faults that are launched by clock C1 and captured by clock C2, examine Figure 18 for a
If you want to try to create transition patterns for faults between the scan cells and the
primary outputs, make sure your tester can accurately measure the PO pins with adequate
resolution. In this scenario, it looks a lot like Figure 18, but there is no capture clock. If
you examine Figures 20 and 21, you’ll see the timing diagram and additional capture
procedure that is required for these cell to PO patterns. Of course, you’ll need a separate
named capture procedure for each clock in the design that can cause a launch event. The
timeplates referred to in this example are from Figure 19.
To create effective transition patterns for faults between the PI and scan cells, you also
may have restrictions due to tester performance and tolerance. One way to create these
patterns can be found in the example timing diagram in Figure 22 and the corresponding
procedure file in Figure 23.
As before, you would need other named capture procedures for capturing with other
clocks in the design. This example shows the very basic PI to cell situation where you
first setup the initial PI values with a force, then in the next cycle force changed values on
the PI and quickly capture them into the scan cells with a capture clock.
If you plan to use multiple fault models in your flow for test pattern generation, you
should know that you can fault grade one pattern type against different fault models. For
example, if you want to create path delay, transition, and stuck-at patterns, the
recommended approach is to do so in the order shown in Figure 24.
As you can see, the general flow is to first generate your critical path patterns and save
them to disk. Then fault grade those path delay patterns for transition fault coverage and
generate additional transition fault patterns for the remaining faults and save those to
disk. Follow a similar sequence to fault grade the transition and path delay patterns for
stuck-at fault coverage and then create the additional stuck-at patterns for the remaining
stuck faults and save them.
As an example, here is part of a FastScan dofile that shows one way to accomplish the
pattern creation flow as shown in Figure 24:
//-----------------------------------------------
// example dofile for fault model hierarchy
//-----------------------------------------------
// setup commands for defining things like clocks,
// constraints, and scan chains
set system mode atpg