Download - ACM Digital Library

Evaluation of FPGA Resources for Built-In Self-Test of Programmable
Logic Blocks
Charles Stroud, Ping Chen, Srinivasa Konala,
and Miron Abramovici
Dept. of Electrical Engineering
University of Kentucky
AT&T Bell Laboratories
Murray Hill, NJ
Abstract
We present a new approach for FPGA testing that exploits
the reprogrammability of FPGAs to create Built-In Self-Test
(BIST) logic only during off-line test. As a result, BIST is
achieved without area or performance penalties to the system
function implemented by the FPGA, since the FPGA is
reconfigured for normal system operation. An analysis of
Look-Up Table (LUT) based FGPA architectures yields a
general expression for the number of test sessions and
establishes the bounds on FPGA logic resources required to
minimize the number of BIST configurations required to
completely test all of the programmable logic blocks of an
FPGA.
1. Introduction
In this paper, we introduce a new approach for FPGA testing
that exploits the reprogrammability of an FPGA to create the
BIST logic by configuring it only during off-line testing. In
this way, testability is achieved without any overhead, since
the BIST logic will “disappear” when the circuit is
reconfigured for its normal system operation. In contrast,
conventional BIST approaches introduce both area overhead
(typically between 10 and 30 percent) and delay penalties.
Our approach is applicable to any in-circuit reprogrammable
FPGA, such as SRAM-based FPGAs. Its only cost is the
additional memory for storing the data required to
reconfigure the FPGA; however, this memory is usually part
of the test machine or system maintenance processor
environment which controls the BIST process, and does not
involve resources of the device or the system under test.
Reconfiguring FPGAs for system-level testing has been used
to test the other circuitry in the system [1-3]; however, these
methods do not address the testing of the FPGAs themselves.
The FPGA manufacturing test is complicated by the need to
cover all possible modes of operation and many nonclassical fault models (faults affecting the programmable
interconnect network, delay faults, etc.). Currently, tests are
generated manually by configuring several application
circuits and exercising them with test vectors developed
specifically for each circuit. These circuits share the same set
of faults, so it is sufficient to detect a fault in only one circuit.
Fault simulation to determine the fault coverage for stuck-at
faults is very expensive, since all the application circuits
must be simulated. In addition, these tests require long
application times and expensive Automatic Test Equipment
(ATE). The FPGA manufacturing tests are not reusable for
board and system-level testing, which require additional
development effort.
The traditional approach to system-level testing of FPGAs
has been to develop off-line system diagnostic routines
which test the FPGAs in the system mode of operation. The
development of these diagnostic routines can be timeconsuming and costly, particularly when the system is
difficult to test. BIST has been particularly advantageous for
field testing of digital systems by providing high faultcoverage tests at the system operating frequency (which,
otherwise, is not usually achievable by system diagnostic
software), and by reducing diagnostic run-time and
diagnostic software development. Reductions in diagnostic
run-time result in reducing the mean time to repair and
increasing the system availability, while reductions in
diagnostic code development help to reduce system
development time and cost.
Our BIST approach1 for FPGAs is applicable to all levels of
testing (wafer, package, board, and system), and all tests are
performed at the normal operating frequency, thus providing
at-speed testing. The test controller (ATE, CPU, or
maintenance processor) supplies the configurations needed
to create the BIST logic, initiates the tests, and reads the test
results (pass/fail indication and diagnostic data). Our
strategy is to use pseudoexhaustive testing [4] in order to
provide maximal fault coverage independent of the intended
system function of the FPGAs. Eliminating the need for
adding BIST circuitry (or any design-for-test logic) to the
system logic in FPGAs reduces the design interval and
1. This material is based upon work supported by
the National Science Foundation under Grant No.
MIP-9409682.
increases the system functionality that can be implemented
in each FPGA. An additional advantage is the potential of
using a lower-cost ATE for device and package level test.
Since every FPGA is individually tested, our approach
provides in-system location of defective devices; such a
diagnostic resolution is not always achievable with system
diagnostics.
In this paper, we describe the testing strategy and analyze the
architectural resources needed to provide BIST for all the
programmable logic blocks (PLBs) in an FPGA. Although
testing the PLBs using the proposed BIST configurations
will also detect many of the faults in the programmable
interconnect network, it will not provide complete coverage
for these faults. Complete testing of the programmable
interconnect will be addressed in the next phase of this
project. Testing the PLBs will also test the portion of the
FPGA programming circuitry associated with the PLBs as
well as the FPGA programming interface. We use the
AT&T Optimized Reconfigurable Cell Array (ORCA) [5]
for the initial design and implementation of the BIST
approach, but we emphasize that our technique can be
applied to any SRAM-based FPGA, such as Xilinx [6] or
Altera Flex 8000 [7] series FPGAs.
The remainder of this paper is organized as follows. Section
2 presents an overview of the proposed BIST approach.
Section 3 analyzes the FPGA logic resources needed to
implement the BIST logic and to minimize the number of
BIST configurations required to test the FPGA. Section 4
summarizes the results obtained thus far in terms of the
number of BIST configurations developed for and their
application to the ORCA device. The paper concludes in
Section 5.
Table 1: Abbreviations
PLB
Programmable Logic Block
TPG
Test Pattern Generator
ORA
Output Response Analyzer
BUT
Block (PLB) Under Test
LUT
Look-Up Table
FF
Flip-Flop
ORCA
Optimized Reconfigurable Cell Array
NTS
Number of Test Sessions
NPLB
Number of PLBs in FPGA
NTPG
Number of PLBs used as TPGs
NORA
Number of PLBs used as ORAs
NBUT
Number of PLBs under test
2. Overview of the FPGA BIST Approach
Our FPGA BIST process is a sequence of test phases, where
every phase consists of the following steps: 1) configure the
circuit, 2) initiate the test, 3) generate test patterns, 4)
analyze the responses to produce a pass/fail indication, and
5) read the test results. In step 1, the test controller interacts
with the FPGA under test to (re)configure its logic by
retrieving the BIST configuration from the configuration
storage and loading it into the FPGA. Then the test controller
initiates the test (step 2) and reads the results (step 5) using
the FPGA's boundary-scan Test Access Port [8] or other
system specific means. (Practically all recently developed
FPGAs, such as ORCA [5], XC4000 [6] and Flex8000 [7],
feature boundary scan.) Steps 3 and 4 are concurrently done
by the BIST logic within the device, and do not involve I/O
pins. Thus the I/O pins of the FPGA are not tested during
BIST, and this requires additional tests during
manufacturing testing. In system testing, the I/O pins are
tested together with the board connectivity using boundary
scan tests.
Although the same basic approach is applied at all levels of
testing, there are some differences between manufacturing
testing done at the wafer and package levels, and
maintenance/field testing done at the board and system
levels. These differences are summarized in Table 2. One
difference results from the need to reconfigure an FPGA that
has passed the in-system test for its normal system function;
hence the normal device configuration must be stored on
disk along with the BIST configurations.
Table 2: Differences in FPGA testing levels
Testing Level
Test Controller
Configuration
Storage
Functional
Reconfiguration
Wafer/Package
ATE
ATE Memory
NO
Board/System
CPU or maintenance processor
Disk or other
mass storage
YES
To support the self-test done in steps 3 and 4, some of the
logic is configured as test pattern generators (TPGs) and
output response analyzers (ORAs). Our strategy relies on
pseudoexhaustive testing in which all subcircuits of the
device are tested with exhaustive patterns. This results in
maximal fault coverage without explicit fault model
assumptions and without fault simulation. Pseudoexhaustive
testing is guaranteed to detect any fault that changes the
function of the PLB without increasing its number of states;
this set includes all single and multiple stuck-at faults. Many
FPGAs contain RAM modules, whose exhaustive testing is
impractical. For these modules we use standard RAM test
sequences, which are known to be exhaustive for the fault
models specific to RAMs [9,10].
Figure 1 shows a typical structure of a PLB, composed of a
memory block, a flip-flop (FF) block, and a combinational
output logic block; for example, this structure is featured in
the ORCA programmable function unit [5], in the XC4000
configurable logic block [6], and in the Altera Flex8000
logic element [7]. The memory blocks can be configured as
RAMs or combinational look-up tables (LUTs). In most
cases, the cell has no feedback loops and the FFs can be
directly accessed by bypassing the LUT (as shown by the
dotted line). This simple structure, where the inputs and the
outputs of every subcircuit are easy to control and to observe,
simplifies the pseudoexhaustive testing of the cell.
Output
LUT/RAM
FFs
Logic
changed so that in the next test session previous BUTs
become TPGs or ORAs, and vice versa. Clearly, we need at
least two test sessions to test all PLBs. Since testing time is
a major component of the testing cost, a major goal of the
testing strategy is to minimize the number of test sessions. In
the next section, we will analyze the relations between some
architectural features of an FPGA and the number of test
sessions needed for a complete test.
3. Evaluation of FPGA Resources
The number of test sessions (NTS) is a function of the number
of PLBs in the FPGA (NPLB) as well as the number of BUTs
(NBUT). The general expression for NTS is given by:
N TS =
N PLB
-------------N BUT
Also, the following relation must hold for any FPGA
architecture in terms of the number of PLBs required to act
as TPGs (NTPG) and ORAs (NORA) during a testing session.
N BUT + N TPG + N ORA ≤ N PLB
Figure 1. Typical FPGA PLB structure
In general, the simplest method for output response analysis
- comparison with the expected response - is difficult to use
in most BIST applications because of the expense involved
either in storing the reference response or in generating it
from a copy of the circuit under test. In the FPGA BIST
approach, however, the circuits under test are identical PLBs
and all that is needed is to create the ORAs to compare their
outputs. Unlike the signature-based compression circuits
found in most BIST applications, comparator-based ORAs
do not suffer from the aliasing problem that occurs when
some faulty circuits produce the good circuit signature. As
long as the PLBs being compared by the same ORA do not
fail the same way at the same time, no aliasing will be
encountered with the comparison-based approach. However,
if these PLBs are fed by the same faulty TPG, the applied
tests will be incomplete, and a faulty PLB may escape
detection. To avoid this problem, we configure the logic so
that different TPGs feed the PLBs being compared by the
same ORA, and all TPGs are synchronized; that is, they
generate the same test pattern at the same time.
Therefore, the strategy is to configure a group of PLBs as
pseudoexhaustive TPGs and comparison-based ORAs, and
another group as blocks under test (BUTs). Every BUT will
be repeatedly reconfigured to test it completely in its various
modes of operation. We define a test session as a sequence
of test phases that test the BUTs in every configuration. Once
the BUTs have been tested, the roles of the PLBs are
(1a)
(1b)
During most of the configurations used to completely test the
BUTs, the TPGs work as binary counters to supply
exhaustive test patterns to the m-input BUTs (not counting
the clock input). Since a PLB has more inputs than outputs,
several PLBs are needed to construct a single m-bit counter.
As explained in the previous section, different TPGs must
feed the BUTs whose outputs are compared by the same
ORA. Thus the number of TPGs required is equal to C,
where C represents the number of PLB outputs that can be
compared by a single LUT. This results in a total number of
PLBs used for TPGs, NTPG, given by:
m
N TPG = C ⋅ ---f
(2)
where f is the number of flip-flops per PLB.
Figure 2 shows the structure of the FPGA as it would be
configured during a test session. An ORA consists of a LUT
that compares the corresponding outputs from C BUTs and a
flip-flop to record the first mismatch. The feedback from the
flip-flop output to one of LUT inputs disables further
comparisons after the first error has been recorded. In
general, several ORAs may be implemented in the same
PLB, depending on the number of independent LUTs in a
PLB, L. Here we consider LUTs to be independent if their
sets of inputs are disjoint in at least one PLB configuration.
Each one of the C TPGs drives a group of n BUTs. Each
BUT has m inputs and O outputs. The C × n × O outputs
from the BUTs are compared by O groups of n ORAs, where
each ORA monitors C outputs, and the ith group of ORAs
receives the ith output from n BUTs. Then the number of
PLBs required to be configured as ORA circuits, NORA, is
given by:
O⋅n
N ORA = ----------(3)
L
The values of C and n also determine the total number of
BUTs (NBUT) as follows:
N BUT = C ⋅ n
(4)
The values of C, O, L, and f are functions of the PLB
architecture for the given FPGA being tested. By
substituting the expressions for the numbers of PLBs used
during a test session for the implementation of TPGs, ORAs,
and BUTs (given by Equations 2 through 4) into Equations
1a and 1b, we obtain the following lower bound for NTS:
O
N PLB  C + ----

L
N TS ≥ -------------------------------------------------------
C N PLB –  C ⋅ m
----- 

f
(5)
The number of BUTs in each of the C groups, given by n, is
another one of the values of interest to be determined for a
given FPGA. The value of n used to derive Equation 5
represents the maximum value for the number of BUTs in
each of the C groups for that particular value of NTS and is
given by:
n max ≤

N PLB –  C ⋅ m
---- 

f
------------------------------------O
C + ---L
(6)
This maximum value may be difficult to implement
practically because of routing constraints. Therefore,
substituting the value of NBUT from Equation 4 into Equation
1a, we get lower limit on n for the same value of NTS.
n ≥ n min =
N PLB
-----------------N TS ⋅ C
However, the minimum value of n given by Equation 7 does
not consider the proper balance of BUTs, TPGs, and ORAs
that must be maintained as a function of the PLB
architecture. As a result, we consider the following relation,
which is obtained by eliminating NPLB from Equations 1a
and 1b:
N BUT + N TPG + N ORA ≤ N BUT ⋅ N TS
n ≥ n arch =
C⋅ m
----f
------------------------------------------O
C ⋅ ( N TS – 1 ) – ---L
ORA
to n BUTs
LUT
FF
O outputs
m inputs
TPG
BUT
BUT
m outputs
ORA
to n BUTs
C TPGs
m inputs
(9)
This minimum value of n is a function of the structure of the
PLB and is necessary to maintain the proper balance of TPG,
ORA, and BUT functions for this BIST approach. For
example, in the ORCA PLB, there are L=2 independent
LUTs, with each LUT having C+1=5 inputs; hence C=4.
Since each PLB has m=18 inputs, the maximum number of
flip-flops required for a TPG to generate exhaustive test
patterns, f, is also 18. Finally, there are O=5 outputs from
each PLB which must be compared by the ORAs, since the
BUT
m outputs
(8)
Substituting the expressions from Equations 2 through 4 into
Equation 8 and solving for n, we obtain the minimum value
of n which will provide the proper balance of BUT, TPG, and
ORA functions for a BIST session based on the PLB
architecture (which we refer to as narch):
O outputs
TPG
(7)
LUT
FF
BUT
C+1 inputs
C groups of n BUTs
Figure 2. FPGA structure for a test session
O groups of n ORAs
carry-out signal for the ripple mode can be observed at one
of the five outputs of the PLB. Then from Equation 9 we find
that n ≥ 14 in order to achieve the minimum number of test
sessions (NTS=2). Therefore, for n=14, we obtain the
minimum values NTPG=20, NORA=35, and NBUT=56 from
Equations 2 through 4, respectively. This requires a
minimum of 111 PLBs in an ORCA to be able to completely
test all PLBs with two test sessions. Only the smallest of the
ORCA series (the AT1C03 with 100 PLBs) fails to meet this
criteria and will require three test sessions to completely test
all its PLBs. These data are summarized in Table 3 and
compared to the Xilinx 4000 and Altera Flex 8000 series
FPGAs in terms of the resource parameters for each FPGA
and the minimum resources required for NTS=2 using
Equation 9. In the case of the Xilinx series 4000 FPGAs, the
smallest four FPGAs (4002: 64 PLBs, 4003: 100 PLBs,
4004: 144 PLBs, and 4005: 196 PLBs) will require three test
sessions. In the case of the Altera Flex 8000 series FPGA, the
smallest FPGA (8282: 208 PLBs) also requires three test
sessions.
sessions is a function of both narch and nmin. As a result,
nmin(final) is given by the maximum of the two minimum
values for n in Equations 7 and 9.
m
n min ( final )
C ⋅ ----N PLB
f
= max { -----------------, ------------------------------------------ }(10)
N TS ⋅ C
O
C ⋅ ( N TS – 1 ) – ---L
The minimum and maximum values of n obtained for some
ORCA, Xilinx, and Altera FPGAs are given in Table 4 along
with the corresponding values for NTS, NTPG, NORA, and
NBUT. Note that NTPG is a function of the PLB structure and
not a function of the total number of PLBs in the FPGA. For
those cases where the total number of PLBs used for TPG,
ORA, and BUT functions is less than the total number of
PLBs in the FPGA, the unused PLBs could be used to buffer
the TPG outputs which have high fan-out. On the other hand,
when all PLBs in the FPGA are required for BIST resources,
the number of test sessions may need to be increased if
limitations in the routing resources prevent successful
implementation of the BIST configurations.
The minimum value of n is of particular importance since it
will require less logic resources as well as routing resources
in the FPGA when compared to larger values of n. This will,
in turn, provide the best opportunity for successful
placement and routing of the BIST configurations in the
FPGA during actual implementation. Therefore, the final
minimum value of n which ensures that the proper balance of
BUTs, ORAs, and TPGs is maintained while also ensuring
that the FPGA can be tested in the desired number of test
4. Experimental Results
Based on a gate level model of the ORCA 1C series PLB, we
determined that nine BIST configurations are sufficient to
completely test a BUT [11] in every functional mode of
operation. The memory requirements and the configuration
download time depend on the size of the FPGA. For the
Table 3: BIST Resource requirements for FPGAs
Parameter
Resource
ORCA
Xilinx 4000
Altera 8000
C
comparisons/LUT
4
3
4
O
outputs/PLB
5
5
3
L
LUTs/PLB
2
2
1
m
FFs/TPG=inputs/PLB
18
12
10
f
FFs/PLB
4
2
1
Minimum Requirements
ORCA
Xilinx 4000
Altera 8000
narch (for NTS=2)
14
36
40
NTPG
20
18
40
NORA
35
72
120
NBUT
56
108
160
NPLB
111
198
320
largest 1C series ORCA (the ATT1C09), approximately 16
Kbytes of storage are needed per configuration, which
means about 144 Kbytes for all nine configurations. The
same nine configurations are applied to the BUTs tested in
each of the test sessions. The configuration download time
also depends on the type of interface between the
configuration storage media and the FPGA itself. Download
time for the ORCA 1C series FPGAs varies from 2 to 35
msec. while the execution time for the BIST sequence is
approximately 15 msec. at a 10 MHz clock rate. This would
correspond to approximately 1 second of testing time
required to completely test all of the PLBs in the FPGA.
Testing time and configuration memory storage can be
reduced for system-level testing by testing the FPGA only
for the specific modes of operation in which its PLBs are
used by the system function.
A more detailed discussion of the nine BIST configurations
can be found in [11]. For FPGAs which require only two test
sessions, a total of 18 configurations would be required to
completely test all PLBs in the FPGA. These 18
configurations compare favorably with the 32 configurations
currently used to test production ORCA devices [12].
However, it should be noted that the 32 configurations used
for manufacturing include complete testing of the
programmable interconnection network, testing of the
configuration memory and its read back circuitry, and testing
of the FPGA I/O buffers. Parametric testing and speed
sorting is performed with additional configurations of the
FPGA.
5. Conclusions
We have proposed a new BIST approach for the
programmable logic blocks in SRAM-based FPGAs. Our
approach takes advantage of the reprogrammability of
FPGAs by reconfiguring the FPGA to test itself only during
off-line testing. As a result, it completely eliminates the area
overhead and the performance penalty associated with
traditional BIST techniques. Because we no longer need
testability hardware in the design, all logic resources in the
FPGA are available for system functionality. In addition,
hardware design and diagnostic software development
intervals can be reduced since the FPGA BIST approach is
generic and is applicable to all of the SRAM-based FPGAs
in the system. Since the test sequences are generic in that
they are a function of the FPGA architecture and not a
function of what is programmed into the FPGA, this
technique can also be used at every level of testing, from
wafer- and package-level manufacturing tests to board- and
system-level field tests. The BIST configurations developed
for this approach also test the portion of the programming
interface of the FPGA which is associated with the PLBs.
The exception is the programming read-back circuitry,
which can be tested by simply reading back each
configuration after it has been programmed. The BIST
Table 4: BIST resource evaluation for various FPGA architectures
Series
NPLB
nmin
nmax
NTS
NTPG
NORA
(min)
NORA
(max)
NBUT
(min)
NBUT
(max)
ATT1C03
100
9
12
3
20
23
30
36
48
ATT1C05
144
18
19
2
20
45
48
72
76
ATT1C07
196
25
27
2
20
63
68
100
108
ATT1C09
256
32
46
2
20
80
115
128
184
XC4002
64
8
8
3
18
20
20
24
24
XC4003
100
12
14
3
18
30
35
36
42
XC4005
196
22
32
3
18
55
80
66
96
XC4008
324
54
55
2
18
135
138
162
165
EPF8282
208
18
24
3
40
54
72
72
96
EPF8452
336
42
42
2
40
126
126
168
168
EPF8820
672
84
90
2
40
252
270
336
360
EPF81188
1008
126
138
2
40
378
414
504
552
configurations also test some (but not all) of the
programmable
interconnection
network.
BIST
configurations for complete testing of the interconnection
network will be developed during the next phase of this
project.
Acknowledgments
This work was also supported in part by a grant from the
University of Kentucky Center for Robotics and
Manufacturing Systems. Finally, the authors gratefully
acknowledge the support, assistance, and encouragement of
Carolyn Spivak and Al Dunlop of AT&T Bell Laboratories.
References
[1] B. Fawcett, “Applications of Reconfigurable Logic,”
Third Annual Workshop on Field-Programmable Logic
and Applications, Oxford, Sept. 1993.
[2] B. New, “Boundary-Scan Emulator for XC3000,” XAPP
Applications Handbook, Xilinx, Oct. 1992.
[3] A. Russ and C. Stroud, “Non-Intrusive Built-In Self-Test
for Field Programmable Gate Array and Multi-Chip
Module Applications”, to be published in Proc. IEEE
Automatic Test Conf., 1995.
[4] E. J. McCluskey, “Verification Testing - A
Pseudoexhaustive Test Technique,” IEEE Trans. on
Computers, Vol. C-33, No. 6, pp. 541-546, June, 1984.
[5] Optimized Reconfigurable Cell Array (ORCA) 1C Series
Field-Programmable Gate Arrays, Data Sheet, AT&T
Microelectronics, May 1994.
[6] The Programmable Logic Data Book, Xilinx, Inc., 1993.
[7] Flex 8000 Programmable Logic Device Family, Data
Sheet, Altera Corp., May 1993.
[8] “Standard Test Access Port and Boundary-Scan
Architecture,” IEEE Standard P1149.1-1990, IEEE
Standards Board, May 1990.
[9] A.J. van de Goor, Testing Semiconductor Memories
Theory and Practice, John Wiley and Sons, 1991.
[10] M.S. Abadir and H.K. Reghbati, “Functional Testing of
Semiconductor Random Access Memories,” Computing
Surveys, Vol. 15, No. 3, pp. 118-139, September 1983.
[11] P. Chen, Built-In Self-Test Configurations for Field
Programmable
Gate
Array
Logic
Blocks,
M.S.E.E.Thesis, University of Kentucky, August, 1995.
[12] C. Spivak, private communications, October, 1995.