ATPG Cadence Support

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 6

Problem statement:

How to test the faults between Primary Input (PI) to flop (DFF) and flop (DFF) to Primary
Output(PO)?
How is test coverage analysis done for a PI and a PO during static and delay test?

Solution:
During static test:
Create_logic_tests have a default Measure_PO function which can be observed in the
report_vectors TBDpatt file.

Figure 1: Measure_PO event in static test

During dynamic test:


By default, the following types of faults are not testable (untestable)
- Input to latch faults (PI to DFF)
- Latch to output faults (DFF to PO)
- Input to Ouput faults (PI to PO)
- Interdomain fault (faults between different domains)

Accordingly, ATPG reports the following untestable faults:


• Unio = seq or control not specified to target fault (PI to PO Path)
• Unil = seq or control not specified to target fault (PI to LATCH Path)
• Unlo = seq or control not specified to target fault (LATCH to PO Path)
• Uner = seq or control not specified to target fault (interdomain LATCH to LATCH)

By default, faults from PI and/or to PO are untestable during dynamic test. There may be
cases when you need user-supplied test sequences to detect transition/delay/path faults.
In these cases, if you need to detect transition faults on PIs and POs, the user-
supplied test sequences would be needed as well. So, it requires a test sequence to
detect the faults or an option should be used to detect the faults.
To make transitions/delay/path faults testable, we use the following options:

1) PI to latch/DFF:
Usage of allowedpitransitions: -allowedpitransitions <integer>
Example: -allowedpitransitions 9999
• The 'allowedpitransitions' option indicates the number of PIs that can transition
during the dynamic pattern.
• Integer is the number of PIs that you want the test generator to be able to use for
transitions. The default is an infinite number of PIs.
• In a physical run, you’ll usually want to limit this to the number of non-clock high-
speed tester IO pins.
• In practice, this option is usually just used for baby parts or portions of a design
that are taken out of context of the full chip, such that the inputs are no longer
driven by flops and look like they’re driven by PIs instead. For that case, just setting
the number >= to the number of PIs (or a sufficiently large number like 9999)
should get what they want. It is tolerated if you specify a number higher than the
number of PIs.

Untestable faults Analysis:


Using "allowedpitransitions=<integer>" results in decrease in the number of Unil faults.

Figure 2: Fault analysis using allowedpitransitions


This fault analysis can be obtained using the following command:

report_faults -faultstatus all -faulttype dynamic -testmode <> -experiment <>

Example: report_faults -faultstatus all -faulttype dynamic -testmode


FULLSCAN_OSC_REFMODE_core0 -experiment dtmf_chip_atpg

Limitations
Setup constraints are not supported when allowedpitransitions is specified
for create_logic_delay_tests or when a user-specified test sequence contains a PI stim
between the release and capture pulses.
2) latch/DFF to PO:
Usage of -dynpomeasure: -dynpomeasure {yes|no}
Provides the create_logic_delay_tests or create_path_delay_tests with Measure_PO
function as they do not have a default to measure PO.
Example: -dynpomeasure yes
• It measures Transition Faults at PO.'dynpomeasure' is intended to be used for
faults which can only be observed at POs and not captured at a preceding latch.
It is not to be used with the 'dynseqfilter' option or a 'clockconstraints' file or a
testsequence. So, user need to choose whether to capture and observe faults at
POs.
• The 'dynpomeasure' option defaults to 'no'.
• The only exception to this is parts which have no clocks and no latches, in which
case the 'dynpomeasure' option defaults to 'yes'.

Untestable fault analysis:

Figure 3: Fault analysis using dynpomeasure and allowedpitransitions

Using -dynpomeasure yes helps to remove all the Unlo faults and using with
allowedpitranstions helps to remove Unil and Unio faults, only the Ucn faults remain.

3) Interdomain faults:
The default behavior of create_logic_delay_tests is to test intradomain (within domain)
faults from latch to latch. Meaning a launch latch and capture latch using the same clock
for release and capture. This is specified by the option "dynseqfilter" set to "intra".

Usage of -dynseqfilter: -dynseqfilter <value>


This indicates the type of clocking schemes allowed in the dynamic section of a
testsequence when dynamic TG is run.

<Value> can be { any | intra | inter | losintra | losinter | clockconstraint }


Types of Test Sequences Delay TG may generate
'any' - clocks and PIs may be used to Launch or Capture transitions
'intra' - launch and capture with same clock
'inter' - launch and capture with different clocks
'clockconstraint' - launch and capture based on the schemes defined in the
clkconstraint file (default when a clockconstraint file is specified)
'losintra' - launch off shift then capture with same clock in functional state
'losinter' - launch off shift then capture with different clock in functional state

Example: -dynseqfilter intra


-dynseqfilter inter

dynseqfilter should be specified if there is no clockconstraints or testsequence input. The


specified value is used to guide the test generator in creating test sequence templates. If
clockconstraints is specified, they will be used by default.

When dynseqfilter is used as intra, which is the default behavior of the


create_logic_delay_tests, test generator creates patterns between single clock domain
and do not generate patterns for between different clock domains. UNer falus in fault
report. Therefore, Unra faults are tested on intradomain paths.

On the other hand, when dynseqfilter is used as inter, patterns are generated by test
generator for the paths between different clock domains and do not generate patterns for
single clock domains. Therefore, these faults are become untestable. Therefore, Uner
faults are marked off on interdomain paths.

Example command line:


Recommended for SDC Timed Flow with dynseqfilter
For SDC timed flows, the following command line is recommended when you do not have
a test sequence and do not want to specify specific clocks and timings. The test generator
will select from any available clocks in the testmode but will follow the direction from
dynseqfilter on how the clock are to be applied.
options clockconstraints and testsequence are not used with dynseqfilter.
create_logic_delay_tests -testmode FULLSCAN_TIMED -experiment
tg1 -dynseqfilter inter -activecompaction yes

Create LOS vectors


If you need to create Launch off Shift vectors without a test sequence and you want the same
clock used for launch and capture, use the following command line:
create_logic_delay tests -testmode FULLSCAN -experiment tg1 \
-clockconstraints myconst -dynseqfilter losintra
If you need to create Launch off Shift vectors without a test sequence and you want to use
different clocks for launch and capture, use the following command line:
create_logic_delay tests -testmode FULLSCAN -experiment tg1 \
-clockconstraints myconst -dynseqfilter losinter
If you need to create Launch off Shift vectors and you have your own LOS test sequence use the
following command line:
create_logic_delay tests -testmode FULLSCAN -experiment tg1 \
-clockconstraints myconst -testsequence los_sequence

Figure 4: Fault analysis using dynseqfilter

4) PI to PO:

Using both the options helps to resolve this issue


-dynpomeasure yes
-allowedpitransitions 9999
Example:
create_logic_delay_tests -dynpomeasure yes
-allowedpitransitions 9999 -experiment new -testmode
FULLSCAN_OSC_REFMODE_core0
create_path_delay_tests -dynpomeasure yes
-allowedpitransitions 9999 -dynseqfilter intra -experiment new
-testmode FULLSCAN_OSC_REFMODE_core0 -pathfile
./faults_debug_untestable.txt

usage of both allowedpitransitions and dynpomeasure


Figure 5: Fault analysis using dynpomeasure and allowedpitransitions

Summary:
Table 1: Summary of untestable path types
Path faults Untestable Fault Option to be used to
categories make faults testable
PI to DFF path faults Unil -allowedpitransitions 9999
LATCH to PO Path Unlo - dynpomeasure yes
interdomain LATCH to LATCH Uner -dynseqfilter inter
intradomain LATCH to LATCH Unra -dynseqfilter intra
PI to PO Unio, Unil, Unlo - dynpomeasure yes
-allowedpitransitions 9999

• Measure_PO event is present for static and not for dynamic automatically.
• Options in Table 1 are used to cover the faults between PI and PO.
• These options will work for dynamic test (transition test, delay tests and path tests).
• Faults can be analyzed using report_faults command.
• Measure_PO event can be checked in TBDpatt file using report_vectors command.

You might also like