Improving Topological ATPG with Symbolic Techniques

advertisement
Improving Topological ATPG with Symbolic Techniques
F. Corno, P. Prinetto, M. Sonza Reorda
U. Gläser, H.T. Vierhaus
Politecnico di Torino
Dipartimento di Automatica e Informatica
Torino, Italy
GMD
SET
Sankt-Augustin, Germany
Abstract*
This paper presents a new approach to Automatic
Test Pattern Generation for sequential circuits. Traditional topological algorithms nowadays are able to
deal with very large circuits, but often fail when highly
sequential subnetworks are found. On the other hand,
symbolic techniques based on Binary Decision Diagrams proved themselves very efficient on small or
medium circuits, no matter their sequential complexity.
A state-of-the-art structural ATPG is extended by
identifying some critical areas in the circuit and resorting to symbolic techniques when such areas need to be
considered. Experimental results prove that the combined approach considerably enhances fault coverage
while reducing CPU time when compared to a purely
topological approach.
1. Introduction
Automated Test Pattern Generation (ATPG) for
digital circuits is a major research topic. As far as the
single stuck-at fault model is considered, efficient algorithms have been devised for combinational networks. Large sequential circuits, however, still constitute a problem. None of the methods proposed can fully
handle all the real-world circuits test engineers have to
deal with, since they either definitely fail or generate
sequences with very low fault coverage. Several types
of approaches have been suggested:
• topological: extension of the algorithms for
combinational circuits to sequential ones, by
adopting the Huffman Model [NiPa91]
* This work has been partially supported by Esprit Project 6575
“ATSEC” and by the Italian National Research Council “Progetto
Speciale Specifica ad alto Livello e Verifica Formale di Sistemi Digitali”.
Contact address: Paolo Prinetto, Dipartimento di Automatica e Informatica, Politecnico di Torino, Corso Duca degli Abruzzi 24, I-10129
Torino (Italy), e-mail Paolo.Prinetto@polito.it
[KSLe93]. Topological algorithms are often
adopted for scan-based architectures, where the
test generation task is eased by means of partial
or full scan;
• simulation-based: employment of the results
provided by a fault simulator [ACAg88]
[HIHH92]. Methods based on Genetic Algorithms [SSAb92] [RHSP94] [PRSR94] also belong to this group;
• symbolic: use of the knowledge of both the output and the next-state functions of the circuit
[CHSo93].
The most widely used ATPGs usually adopt topological techniques, which suffice for circuits of moderate size and complexity. However, when highly sequential circuits are considered, the backtracking activity inherent in the search space exploration reduces
the quality of tests considerably because of the increased number of aborted faults.
On the other hand, the last years have seen the development of new techniques for Boolean functions
representation and manipulation, based on Binary
Decision Diagrams (BDDs) [Brya86]. It is now possible to efficiently handle complex functions with a large
number of input variables, keeping the memory and
CPU time requirements acceptable [BRBr90]. Some
attempts were made to apply symbolic techniques to
test pattern generation, but their applicability seems to
be limited to some tens of flip flops [CHSo93] or to
supply approximate results [CCQu94a] [CCQu94b].
In this paper an approach is presented, which combines the ability of topological techniques to deal with
large circuits with the fast and exact answers that symbolic techniques provide when applied to small but
complex sub-circuits. Some highly sequential macros
are identified in the circuit, and their Boolean functions
are computed; macros are kept small enough to be
easily handled with BDDs.
The choice of the macros may be a critical problem
for reaching the maximum efficiency. When a topdown design methodology is adopted, then macros can
correspond to embedded Finite State Machines or random control logic, whose boundaries are clearly defined by the designer. On the other hand, if no highlevel information is available, a structural analysis is
performed on the circuit netlist to identify the portions
where flip-flops are more strongly nested in feedback
loops. However, the focus of this paper is on test pattern generation and not on the choice of the macros.
In our approach two ATPG kernels are used. The
topological one, acting as a master, tries to generate
test patterns as usual. However, when faced with a hard
task on a macro, it calls a symbolic procedure to compute an answer efficiently. The adopted topological
algorithm is FOGBUSTER, a state-of-the-art structural
ATPG [WGVi94]. FOGBUSTER is known to be faster
than HITEC [NiPa91] on the average.
Experimental results show that the number of backtracks of FOGBUSTER is greatly reduced, leading to a
consistent reduction in CPU time and to an increased
fault coverage due to the reduced number of aborted
faults.
This paper is structured as follows: Section 2 outlines the adopted topological algorithm, mainly derived
from the FOGBUSTER approach. Section 3 introduces
symbolic techniques, showing how elementary tasks
such as propagation, justification and state traversal
can be computed. Section 4 deals with the complex
tasks that symbolic procedures are able to compute. In
Section 5 some very preliminary experimental results
are presented, while Section 6 draws some conclusions.
2. FOGBUSTER test generation technique
In this section the different phases of FOGBUSTER
(FOrward propaGation Backward jUstification Sequential TEst geneRation) are described. The algorithm proceeds in three main phases of computation:
1. forward propagation phase
2. propagation justification phase
3. initialization phase.
In the first phase the fault is transported to at least
one primary output of the circuit. Efficient heuristics
for fault propagation are used in this phase, for instance unique sensitization [FuSh83] with detection of
dynamic dominators. In the second phase, the propagation path is justified, e.g., unjustified signals of the
first phase which are at the pseudo outputs of the circuit are justified. In the initialization phase the initial
state of the time frame of fault occurrence is confirmed,
e.g., a synchronizing sequence for this state is computed.
If a fault is hard to detect the computing time for
finding a test pattern for this fault is too large. To keep
the computing time low, the maximal number of backtracks for one fault can be limited by the user.
Therefore, after a test pattern for any fault is found,
fault simulation for all the not yet detected faults of the
test generation process is performed.
In Fig. 1 a simplified diagram of the FOGBUSTER
algorithm is shown. After selecting a fault and executing fault injection, the combinational FAN is started to
compute a combinational test pattern for this fault. In
this part of test generation, combinational redundancies
can directly be identified. If a combinational test pattern is generated, the fault effect may be visible at least
at one primary output. In this case the initialization
phase is directly started from here on. Otherwise the
fault effect must be visible at least at one pseudo output, e.g., at one storing element of the circuit, and one
or more time frames are needed to propagate this fault
effect to a primary output. Then the forward propagation phase has to be entered.
In the forward propagation phase a pattern sequence
is computed to make the fault effect visible at a primary
output of the circuit. For each time frame in the fault
propagation, the FAN-algorithm for a multi-fault
model is called. A multi-fault model is needed in the
FAN-algorithm because the good machine and the
faulty machine are possibly different at least at one
pseudo input and at the fault location. If there is no
path for fault propagation to a primary output for the
computed combinational pattern, e.g., the combinational pattern is redundant, a backtrack has to be performed to the combinational FAN-algorithm. If a pattern sequence propagating the fault effect to a primary
output is found, the propagation phase terminates, and
the propagation justification phase is started.
In the propagation justification phase, all bound
lines [FuSh83] of the sequential elements that are still
unjustified from the propagation phase are justified. If
justification is not possible, a backtrack to the first
phase, the propagation phase, is performed. Otherwise
after termination the initialization phase is started.
In the initialization phase a synchronizing sequence
to the initial state (the state required after the propagation justification process) with respect to fault location
is computed. This means that the good and the bad
machine both must justify a required state. On termination of this third phase, a test pattern sequence for
the selected fault is found. If there is no synchronizing
sequence for the initial state, a backtrack to the propagation justification phase or to the combinational FAN
algorithm (if no propagation was required after the
combinational FAN execution) is performed.
The initialization phase of the FOGBUSTERalgorithm is equal to the BACK-algorithm after
reaching the fault location. The main differences in
FOGBUSTER are the D-propagation through the time
frames and the propagation justification.
states can be computed by repeating the computation of the image of a set of states under the
state transition function, according to the equation: χs, i+1(y) = ∃x ∃s [χs, i(s) χδ(s, x, y)].
These equations can be efficiently computed when
all the functions are represented by their respective
BDD. The basic operations described above can thus be
used by the topological algorithm whenever deemed
useful.
4. Integrated Approach
3. Symbolic Techniques
Symbolic Techniques can be used to reason about
the behavior of the circuit, independently of its topology. In this case, the circuit is modeled as a Finite State
Machine, and is represented by the Boolean function δ
computing the next state y from the current state s and
the current input x, y = δ(s, x), and by the function λ
computing the output z starting from the same information, z = λ(s, x). Such functions are extracted from
the circuit netlist, and completely describe its input/output behavior.
The adopted technique is quite standard, and resorts
to the adoption of characteristic functions to represent
sets of inputs, sets of states, and state transition functions [BCMD90]. Characteristic functions are Boolean
functions, therefore they can be represented by BDDs
and efficiently operated on by specialized Boolean
operators.
The characteristic function χδ of the state transition
function y = δ(s, x) is a compact representation of all
the triples (s, x, y) satisfying function δ: the characteristic function χδ(s, x, y) takes the value 1 for all the
triples (s′, x′, y′) such that y′ = δ(s′, x′).
Using such a representation, it is extremely easy to
extract the information items that are needed during
ATPG:
• Propagation: given a set of input constraints and
state constraints, compute the corresponding
permitted output values. If the sets of allowed
inputs and states are modeled by their characteristic functions, χx(x) and χs(s), respectively, then
the characteristic function of the output set of
values is χy(y) = ∃x ∃s [χx(x) χs(s) χδ(s, x, y)].
• Justification: the same idea applies when trying
to compute input constraint starting from output
knowledge: χx(x) = ∃y ∃s [χy(y) χs(s) χδ(s, x, y)].
• State traversal: knowing which states are accessible to a circuit is essential to avoid trying to
justify an invalid state. The set of reachable
The following assumptions are made:
• the circuit is a synchronous sequential one, and
test pattern generation starts from the reset state
• some macro structures are identified in the circuit, which will be handled by symbolic algorithms
• the topological ATPG acts as a master, generating test patterns in the usual way. Whenever
FOGBUSTER reaches a macro boundary, it can
ask the symbolic ATPG library for some piece of
information
• the fault to be tested for is always located outside
the macro block, so that symbolic techniques
need to deal with the behavior of the fault-free
machine, only.
The remainder of this section analyzes the possible
pieces of information that are useful to FOGBUSTER
and convenient to compute by symbolic means. The
following four procedures have been recognized as
convenient:
1. extraction of invalid state and output configurations of a sequential macro, to be used as constraints by FOGBUSTER during the preprocessing phase:
− this procedure computes the state configurations and output configurations that may
never appear in a sequential macro if the circuit is started from the reset state;
− some constraints on the inputs of the macro,
deduced by a structural analysis, may also be
specified;
− the computed forbidden state configurations
are used to limit FOGBUSTER search space;
2. evaluation of output values of combinational
macros:
− the task of evaluating a macro is defined as
the computation of output values corresponding to a given input combination. The only
difficulties are the correct interpretation of X
and U logic values;
3. justification of a set of output values across
combinational macros:
− this procedure computes the input configurations necessary to justify a given logic value
of some outputs of the macro, subject to some
input constraints;
− inputs to the procedure are input and output
constraints, and an output goal, i.e., a logical
value that must be justified on an output wire;
− if the imposed constraints are compatible,
then all the satisfying assignments that justify
the requested goal are computed;
4. determination of necessary conditions for the
propagation of a D/D’ across a combinational
macro:
− forward propagation of a D/D’ through a
macro is complex since there are potentially
many possible input combinations which fit
the requirements;
− the procedure computes necessary conditions
only, i.e., propagation conditions that must be
fulfilled by any propagating cube;
− FOGBUSTER limits its search to assignments
satisfying the computed necessary conditions.
5. Experimental results
To validate the effectiveness of the above approach,
a prototype implementation has been developed and
some experiments were run on a sample of ISCAS’89
benchmarks on a Sun Sparc 10. Circuit names ending
with an “o” refer to optimized, less redundant, versions
of the circuits. As an initial evaluation, only procedure
1 (extraction of invalid state and output configurations)
has been implemented.
Tab. 1 reports test pattern generation results when
the basic FOGBUSTER algorithm is run, while data
collected by running the integrated structural-symbolic
approach are gathered in Tab. 2. In these tables,
“Backtracks” is the number of backtracks made by
FOGBUSTER, “Redundant” is the number of faults
proven untestable, and “Aborted” is the number of
faults for which the backtrack limit was reached. Results of the ATPG are measured by the test pattern
length and its efficiency, i.e., the number of faults either tested or tagged as untestable. CPU times for test
pattern generation (column “TPG”) and fault simulation (column “FS”) are also reported.
By comparing the two tables, one can argue that:
• the adoption of symbolic techniques is able to
greatly reduce the number of aborted faults, virtually enhancing to 100% the fault efficiency;
• the reduced backtracking activity positively reflects on CPU times.
This sample of experimental data is able to prove
the feasibility of the approach, since we were able to
improve the results of the highly sophisticated
FOGBUSTER test pattern generator both in terms of
fault coverage and CPU time.
6. Conclusions
This paper presents a new approach to test pattern
generation for sequential circuits, integrating topological search algorithms with symbolic manipulations
based on Binary Decision Diagrams. The rationale
behind the integration is that topological techniques are
able to deal with large circuits, provided their sequential depth is reduced, while symbolic techniques can
cope with highly sequential circuits of small and medium size.
In the integrated approach we propose, some critical
areas of a circuits are identified, being hard to test with
the topological approach: in those areas, symbolic
manipulations are used to justify and propagate logic
values and to prune the search space by computing
invalid configurations.
Experimental evidence proves that the integrated
approach is superior to the purely topological one both
in terms of fault coverage and CPU times. Current
work aims at implementing and integrating the remaining symbolic procedures, and at addressing large circuits by clever selection of the macros.
Acknowledgments
The authors wish to thank Alessandro Bocchino for
development and implementation of the symbolic manipulation procedures.
References
[AAVi93] P. Agrawal, V.D. Agrawal, J. Villoldo,
“Sequential Circuit Test Generation on a Distributed System,” Proc. 30th Design Automation
Conference, 1993, pp. 107-111
[ACAg88] V.D. Agrawal, K.-T. Cheng, P. Agrawal,
“CONTEST: A Concurrent Test Generator for
Sequential Circuits,” Proc. 25th Design Automation Conference, 1988, pp. 84-89
[CCQu94a] G. Cabodi, P. Camurati, S. Quer: “Detecting
hard faults with combined approximate forward /
[CCQu94b]
[BBKo89]
[CHSo93]
[FuSh83]
[HHIH92]
[KSLe93]
[NiPa91]
[NTPa92]
[RHSP94]
[PRSR94]
[SSAb92]
[WGVi94]
backward symbolic techniques,” Proc. International Symposium on Circuits and Systems,
1994, pp. 1/299–1/302
G. Cabodi, P. Camurati, S. Quer: “Full Symbolic
ATPG for large Circuits,” Proc. International
Test Conference, 1994, pp. 980-988
F. Brglez, D. Bryant, K. Kozminski,
“Combinational profiles of sequential benchmark
circuits,” Proc. Int. Symp. on Circuits And Systems, 1989, pp. 1929-1934
H. Cho, G.D. Hatchel, F. Somenzi, “Redundancy
Identification/Removal and Test Generation for
Sequential Circuits Using Implicit State Enumeration,” IEEE Transactions on ComputerAided Design, Vol. CAD-12, No. 7, pp. 935-945,
July 1993
H. Fujiwara, T. Shimono, “On the Acceleration
of Test Generation Algorithms,” IEEE Trans. on
Computers, Vol. C-32, No. 12, December, 1983,
pp. 1137-1144
K. Hatayama, K. Hikone, M. Ikeda, T. Hayashi,
“Sequential Test Generation based on RealValued Logic Simulation,” Proc. International
Test Conference, 1992, pp. 41-48
T.P. Kelsey, K.K. Saluja, S.Y. Lee, “An Efficient Algorithm for Sequential Circuit Test Generation,” IEEE Transactions on Computer-Aided
Design, Vol. 42, No. 11, pp. 1361-1371, November 1993
T. Niermann, J.H. Patel, “HITEC: A Test Generator Package for Sequential Circuits,” Proc.
European Design Automation Conference, 1991,
pp. 214-218
T.M. Niermann, W.-T. Cheng, J.H. Patel,
“PROOFS: A Fast, Memory-Efficient Sequential
Circuit Fault Simulator,” IEEE Transactions on
Computer-Aided Design, Vol. 11, No. 2, pp.
198-207, February 1992
E.M. Rudnick, J.G. Holm, D.G. Saab, J.H. Patel,
“Application of Simple Genetic Algorithms to
Sequential Circuit Test Generation,” Proc.
European Design & Test Conf., 1994, pp. 40-45
P. Prinetto, M. Rebaudengo, M. Sonza Reorda:
“An Automatic Test Pattern Generator for Large
Sequential Circuits based on Genetic Algorithms,” Proc. International Test Conference,
1994, pp. 240-249
D.G. Saab, Y.G. Saab, J. Abraham, “CRIS: A
Test Cultivation Program for Sequential VLSI
Circuits,” Proc. Int. Conf. on Computer Aided
Design, 1992, pp. 216-219
R. Wolber, U. Glaeser, H. T. Vierhaus,
“Testability Analysis for Test Generation in Synchronous Sequential Circuits,” Proc. Intl. Conf.
on Computer Design, 1994
redundant fault
select next fault
apply FAN to
combinational logic
redundant
result?
success
fault at
output?
no
redundant
forward
propagation
phase
yes
result?
success
propagation
justification
phase
redundant
redundant
result?
s ucces s
result?
initialization
phase
success
test found
Figure 1: FOGBUSTER algorithm
Circuit
s27
s208
s298
s298o
s344
s349
s382o
s386
s386o
s400o
s420
s444o
s510
s641
s713
s832o
s953o
Total
Backtracks
2
1218
14926
11082
691
1015
786266
2098
2226
1394124
11135
1178905
6056
68
17
1151823
476940
5038592
Redundant
0
124
44
16
16
20
4
75
24
29
445
18
1
152
242
15
7
1232
Aborted
0
0
12
1
0
0
33
1
0
150
3
116
0
0
0
58
26
400
Test
pattern
length
17
236
385
169
100
123
732
273
242
195
244
241
452
221
230
406
387
4653
Fault
efficiency
[%]
100.0
100.0
95.8
99.5
100.0
100.0
88.1
99.7
100.0
44.0
99.3
59.7
100.0
100.0
100.0
90.3
97.2
92.56
TPG [s]
FS [s]
0
27
263
37
7
10
8168
65
18
13473
212
10373
150
3
3
4430
3894
41133
0
2
3
0
1
1
8
3
1
5
10
3
7
3
5
4
9
65
Fault
efficiency
[%]
100.0
100.0
100.0
100.0
100.0
100.0
88.5
100.0
100.0
94.6
99.3
90.4
100.0
100.0
100.0
89.3
97.6
97.63
TPG [s]
FS [s]
4
29
51
6
11
13
4608
15
10
1964
199
3431
118
15
15
4441
3932
18862
0
2
2
0
1
1
8
3
1
9
8
8
6
3
4
5
11
72
Table 1: FOGBUSTER results
Circuit
s27
s208
s298
s298o
s344
s349
s382o
s386
s386o
s400o
s420
s444o
s510
s641
s713
s832o
s953o
Total
Backtracks
2
1216
1185
887
129
176
371976
737
2028
185000
11115
341349
5502
68
17
1182281
793585
2897253
Redundant
0
124
60
17
16
20
5
76
24
17
445
16
1
152
242
15
16
1246
Aborted
0
0
0
0
0
0
28
0
0
13
3
26
0
0
0
64
22
156
Test
pattern
length
17
236
413
172
100
123
729
273
208
1535
244
803
431
221
230
396
393
6524
Table 2: results for the Integrated Approach
Download