Realization-Independent Testing of IP-Based Systems
Hyungwon Kim and John P. Hayes
Department of Electrical Engineering and Computer Science
University of Michigan, Ann Arbor, MI 48109-2122 USA
{hyungwon, jhayes}@eecs.umich.edu
Introduction
Many recent system-on-a-chip (SOC) ICs incorporate pre-designed and reusable
circuits, variously referred to as intellectual property (IP) circuits
or cores. Such circuits are frequently supplied by third-party vendors
and are extremely hard to test when embedded in an SOC because their functions
are specified only in high-level terms. This is done either to protect the
circuits' IP content or else to allow system designers to synthesize their
own low-level (gate-level) implementations [2]. Conventional
ATPG methods are realization-specific, so they cannot generate tests for
unimplemented or incompletely specified IP-based systems. When the IP circuits
are implemented by the vendor, the system designer must rely on test sets
provided by the vendor [5]. These precomputed tests
usually require high-cost boundary scan to apply them to the IP circuits
in an SOC, they are difficult to modify for (re)synthesized IP circuits,
and they can make at-speed testing impossible [1].
To address these
problems, we are developing a new ATPG methodology for IP-based designs,
which aims to generate tests that are realization-independent in
the sense that, subject to some minor constraints, the tests are guaranteed
to cover all specified faults in all implementations of the target designs.
The tests are derived from high-level, functional specifications and cover
high-level fault models that are more comprehensive than the standard single-stuck
line (SSL) model; they also do not require boundary scan. Here we outline
a realization-independent test generation algorithm of this kind called
RIBTEC, which handles block-structured circuits and represents a step toward
solving the SOC testing problem. We also present some preliminary experimental
results using RIBTEC, which are quite promising.
Realization-Independent Tests
First we introduce a high-level fault model based
on non-exhaustive "universal" tests, and describe a practical
way to apply it to functional blocks embedded in large circuits. The universal
test set (UTS) of a logic function z consists of all minimal
true and maximal false expanded vectors of z [3].
For example, consider block2 of the three-block circuit in Fig. 1a.
Input vector abcd = 0001 is false because z1(0001)
= 0; it is maximal because its expanded form abb'cc'd = 001011 is
not less than any other expanded false vector, so the UTSz1
includes 0001. The UTS for block2 consists of UTSz1 and
UTSz2; see Fig. 1b. A block's UTS detects all multiple
stuck-line (MSL) faults in what we call balanced inversion parity
(BIP) realizations of the block [1]. A BIP realization
such as that of Fig. 1c, is defined by the property that all paths
from a unate variable to an output have the same inversion parity; this
is an extension of the old unate-gate network concept [3,
4]. Almost all practical circuits automatically satisfy
the BIP condition [1], or else can easily be modified
to do so, hence the restrictions it imposes are negligible.
In the past, universal
tests have been considered impractical and largely ignored for two reasons.
First, although a UTS can be small for a unate function, it grows rapidly
with the number of nonunate variables. In the worst case, a UTS includes
all input vectors. For example, the UTS of an N-bit adder, which
has no unate variables, contains all 2(2N+1) input vectors.
Second, if all tests in the UTS for an embedded block cannot be applied
from the external inputs, full fault coverage may not be achieved. For example,
the three boldface tests of UTSz1 in Fig. 1b cannot
be applied to block2, because block1 cannot generate bc = 01, and
block3 prevents some responses to these tests from propagating to the external
output z.
We have devised a technique called realization-independent
block testing for cores (RIBTEC) that can resolve the preceding
problems. Many circuits such as datapaths consist of blocks that are at
least partially unate or are relatively small. RIBTEC constructs compact
test sets from the UTSs for these blocks using only their functions and
a block-level structural description of the overall circuit. The RIBTEC
test set for an N-bit adder consisting of 3 blocks (propagate/generate,
carry, and sum) given by Fig. 2 contains as few as 2N + 4 test vectors,
but covers many adder styles such as ripple-carry, carry-lookahead (CLA),
and carry-select (CS), in all their BIP implementations [1].
When its UTS cannot be applied to an embedded block, RIBTEC computes a modified
UTS called a RIB test set (RTS), which detects all detectable
MSL faults in that particular embedding. For UTSz1 in
Fig. 1b, RIBTEC computes the RTS given by Fig. 1d, in which
the 3 inapplicable tests in UTSz1 are replaced by the
2 new tests in boldface. Identifying all inapplicable vectors to compute
the RTS is time-consuming, so RIBTEC incorporates a fast algorithm to compute
replacements directly from the inapplicable tests in the UTS. We define
a realization independent block (RIB) fault as any fault condition
that causes a block to generate an erroneous output when a RIB test is applied.
By detecting all RIB faults, we are guaranteed to cover all detectable MSL
faults in each block of the circuit under test.
Experimental Results
We have implemented an ATPG program called RIBTEC that employs the forgoing
RTS generation algorithm and RIB fault model. RIBTEC computes primary input
vectors that apply an RTS to every (embedded) block and propagate the block's
responses to the circuit's primary outputs. The program uses a circuit model
specified in behavioral Verilog code.
So far, we have applied RIBTEC to a few combinational
benchmark circuits of moderate size. For example, Fig. 3 shows a high-level
specification of the ISCAS-85 benchmark c880. This is an 8-bit ALU with
control logic, and is depicted here as a multi-block system consisting of
an IP-style core (shaded) surrounded by user-defined logic. RIBTEC generates
196 tests for the c880 which provide 100% coverage of its RIB faults. We
obtained similar results for a variant of the much larger c7552 benchmark
(a 34-bit ALU), and several other datapath circuits including adders and
magnitude comparators; see Fig. 4. These results are compared with test
sets generated by a conventional ATPG tool represented by Atalanta, which
was targeted at SSL faults in specific gate-level implementations of the
same circuits. The RIB fault coverage listed in Fig. 4 shows that RIBTEC
achieves a very high degree of realization independence (100% RIB fault
coverage) with test sets slightly larger than Atalanta's. The conventional
ATPG tool, on the other hand, while providing 100% coverage of SSL faults
in the target implementations, has very poor realization independence.
In summary, RIBTEC represents a novel ATPG methodology
that ensures exceptionally high realization independence with relatively
small test sets, and appears well-suited to testing embedded IP circuits.
Although we have only demonstrated RIBTEC for combinational datapath circuits,
the approach can be extended to more complex IP-type testing problems. We
are currently refining the functional fault model, developing block partitioning
techniques for less structured circuits, and extending the test generation
algorithm to sequential ATPG.
Acknowledgment:
This research was supported by the National Science Foundation under Grant
No. MIP-9503463.
References
- H. Kim and J. P. Hayes,
"High-Coverage ATPG for Datapath Circuits with Unimplemented Blocks,"
Submitted for publication, Feb. 1998.
- B. T. Murray and J.
P. Hayes, "Testing ICs: Getting to the Core of the Problem,"
IEEE Computer, vol. 29, pp. 32-38, Nov. 1996.
- S. M. Reddy, "Complete
Test Sets for Logic Functions," IEEE Trans. CAD, vol. C-22,
pp. 1016-1020, Nov. 1973.
- U. Sparmann et al.,
"Minimal Delay Test Set for Unate Gate Networks, " Proc. Asian
Test Symp., pp. 155-163, 1996.
- N. A. Touba and B. Pouya,
"Testing Embedded Cores Using Partial Isolation Rings," Proc.
VLSI Test Symp., pp. 10-16, 1997.
|