You are on page 1of 8

276 IEEE TRANSACTIONS ON VERY LARGE SCALE INTEGRATION (VLSI) SYSTEMS, VOL. 6, NO.

2, JUNE 1998

Testing Configurable LUT-Based FPGA’s


Wei Kang Huang, Fred J. Meyer, Member, IEEE, Xiao-Tao Chen, and Fabrizio Lombardi, Member, IEEE

Abstract— We present a new technique for testing field The number of primary outputs of a CLB.
programmable gate arrays (FPGA’s) based on look-up tables The number of columns in the grid of CLB’s.
(LUT’s). We consider a generalized structure for the basic FPGA The number of rows in the grid of CLB’s.
logic element (cell); it includes devices such as LUT’s, sequential
elements (flip-flops), multiplexers and control circuitry. We use The number of CLB’s
a hybrid fault model for these devices. The model is based on a The number of I/O blocks.
physical as well as a behavioral characterization. This permits For a given test method and FPGA family, the
detection of all single faults (either stuck-at or functional) and number of configurations needed to test a single
some multiple faults using repeated FPGA reprogramming. We CLB.
show that different arrangements of disjoint one-dimensional
(1-D) cell arrays with cascaded horizontal connections and The part of due to the combinational par-
common vertical input lines provide a good logic testing regimen. tition of the CLB.
The testing time is independent of the number of cells in the The part of due to the sequential partition
array (C-testability). We define new conditions for C-testability of the CLB.
of programmable/reconfigurable arrays. These conditions do For a given method, the total phases needed for
not suffer from limited I/O pins. Cell configuration affects the
controllability/observability of the iterative array. We apply the specified FPGA family FPGA.
the approach to various Xilinx FPGA families and compare For a given test method and FPGA family, the
it to prior work. number of test patterns needed to test a single
Index Terms— C-testability, field programmable gate array, CLB.
programmability, reconfigurability, testing. The part of due to the combinational partition
of the CLB.
The part of due to the sequential partition.
I. NOTATION AND DEFINITIONS For a given test method, for the specified
Horizontal The internal inputs (outputs) of an iterative array. FPGA family FPGA (plus any extra clock cycles
These propagate dependency between the CLB’s needed to get the CLB response to chip I/O).
in the array. For a given FPGA, the number of sessions needed
Vertical The external inputs of an iterative array. These by the BIST method [7].
can be directly specified in the test patterns and For a given FPGA, the number of sessions needed
require I/O blocks. by the naive method [5].
Phase Each testing phase is a reprogramming of the The regeneration period of a given iterative array.
FPGA followed by test vector application. Since (The number of CLB’s traversed before the input,
reprogramming is slow, the number of phases is output, and CLB configurations begin to repeat.)
a good measure of testing time. The number of vertical (external) inputs to each
Session The application of every CLB test configuration to CLB in a given iterative array.
those CLB’s that are under test. Multiple sessions The number of iterative array vertical inputs that
are required if not all CLB’s can be under test differ for each CLB in one period. In the degen-
simultaneously. erate case of period 1,
C-testable An FPGA is C-testable with a given testing
method if the number of programmings is II. INTRODUCTION
independent of the circuit size. In particular, for
an iterative array, it is independent of the length
of the array.
The number of primary inputs to a CLB.
F IELD programmable gate arrays (FPGA’s) are widely
used for rapid prototyping and manufacturing of com-
plex digital systems, such as microprocessors and high-speed
telecommunication chips [1]. FPGA’s are commercially avail-
able from many vendors. Our prototypical FPGA is a two-
Manuscript received March 15, 1997; revised July 1, 1997. This work was dimensional (2-D) grid of configurable logic blocks (CLB’s).
supported in part by the State of Texas Advanced Research Program. The CLB’s can be programmed to implement combinational
W. K. Huang is with the Department of Electronic Engineering, Fudan
University, Shanghai, China. as well as sequential logic functions [1] and each CLB
F. J. Meyer and F. Lombardi are with the Department of Computer Science, is identical before programming. CLB’s are separated by
Texas A&M University, College Station TX 77843 USA. a programmable interconnection network; the interconnect
X.-T. Chen is with FPGA Software Core Group, Lucent Technologies,
Allentown, PA 18103 USA. consists of either programmable connector and/or switching
Publisher Item Identifier S 1063-8210(98)02949-7. blocks [2], or a series of horizontal/vertical routing tracks
1063–8210/98$10.00  1998 IEEE
HUANG et al.: TESTING CONFIGURABLE LUT-BASED FPGA’S 277

and segments with programmable devices. Customization is


accomplished by configuring the interconnect and the CLB’s
by loading them with appropriate data from an external storage
device. The FPGA also includes input/output blocks (IOB’s),
which provide the interface between the package pins and the
internal logic.
The numbers of CLB’s and IOB’s vary widely depending on
the particular chip and manufacturer [2]. FPGA’s are versatile
and in widespread use, due to their programmable nature and
their ease of reconfiguration [3]. Internal static configuration
(memory) elements determine the logic functions and the
interconnections. The SRAM in memory-based FPGA’s can
be used to configure functions via look-up tables (LUT’s). Fig. 1. One programming phase with the naive testing method.
Also, they often have a mode where the configuration SRAM
is usable as memory.
We focus on CLB testing for SRAM-based FPGA’s that
implement functions via LUT’s.

III. BACKGROUND
Testing FPGA’s is addressed in the literature such as [4]–[7].
These works and this paper deal with manufacturing test. Other
tests in the field, such as verifying correctly loaded configu-
ration data, are typically handled by architectural features for
reprogrammable FPGA’s [2]. Reference [4] discusses testing
of row-based (segmented channel) FPGA’s. The approach
sequentially tests every cell using a modified scan procedure, Fig. 2. Interior of a Xilinx XC5200 CLB.
providing 100% fault coverage of single stuck-at faults. It
requires many tests and does not fully exploit the regularity of
the FPGA to reduce test time. The methodology in [8] for in the figure has three inputs and two outputs. Three IOB’s
testing uncommitted segmented channel FPGA’s for single are consumed in order to provide the cells under test with
stuck-at faults is based on connecting the cells of each row their input vectors. The cells under test have no connections
as a one-dimensional (1-D) unilateral array, such that the between them. Their output response is directly observed at the
FPGA could be tested as a set of disjoint arrays. This yields IOB’s. In each programming phase, only a few CLB’s can be
considerable reduction in both vectors and test circuitry. tested in parallel. This is basically restricted by the number of
Simultaneous testing of disjoint arrays helps achieve constant IOB’s and the number of output lines of each CLB. In Fig. 1,
test set size (C-testability), so that test cost will be independent only three CLB’s can be under test, because, after three IOB’s
of chip size [9]. are used for CLB inputs, only seven IOB’s remain to observe
In [7], the FPGA is configured to conduct direct output output response.
comparisons of pairs of logic cells using full cell control-
lability. Test generation and output response comparison are
handled internally using some of the logic resources in a built- IV. PROPOSED FAULT MODEL
in self-test (BIST) arrangement. This requires at least one extra Fig. 2 shows a portion of a Xilinx XC5200 CLB. A full CLB
“session,” i.e., a doubling of chip programmings so that the consists of four stacked copies of the figure (with the carry in
cells previously used for test pattern generation and for output (CI) and carry out (CO) signals rippled through)—plus a little
comparisons can become cells under test. Fault simulation extra logic. The portion in Fig. 2 has a single LUT with four
established that 100% fault coverage can be accomplished inputs, so it has 24 configuration bits to specify its function.
for single stuck-at faults. In [10], the logic resources are Of the three multiplexers, M1 is a conventional multiplexer.
arranged as an iterative logic array (ILA) [9]. This allows M2 and M3 are programmable multiplexers; each needs only a
better scalability than the previous BIST arrangement [7]; single configuration bit to specify which input it passes. There
however, it also requires another additional session—i.e., a is also a D flip-flop.
tripling of chip programmings. Our generalized internal CLB structure permits these de-
A simple testing arrangement (referred to as “naive”) was vices: LUT’s, programmable (configurable) multiplexers, con-
mentioned in [5]. It connects together all input lines to ventional multiplexers, and flip-flops. Some conventional logic
the CLB’s (cells) under test from the IOB’s, and uses the usually does not interfere with test generation.
remaining IOB’s for direct observability of the output lines We assume the interconnect and the IOB’s have already
of each cell under test. Fig. 1 shows a single programming been tested; the interested reader should refer to [11] and [12]
phase with the three leftmost CLB’s under test. Each CLB for a detailed treatment. In our proposed testing strategy, we
278 IEEE TRANSACTIONS ON VERY LARGE SCALE INTEGRATION (VLSI) SYSTEMS, VOL. 6, NO. 2, JUNE 1998

divide CLB’s into independent sets (linear arrays). For our multiple patterns are required. Furthermore, each LUT output
fault model, within each linear array, we assume at most one must be observable at a primary CLB output. So we require
faulty CLB; otherwise, fault masking might occur. For the a sensitized path from the LUT output to a primary CLB
single faulty CLB, the nature of the fault could take any form. output. By definition of the combinational partition, this can
For simplicity of illustration, in our investigation, we limited be achieved by configuring the multiplexers (or other devices)
a CLB to a single faulty device. The nature of a device fault in the partition.
varies with the device. We use a functional test for the multiplexers. Since a
We model single device faults both physically (e.g., stuck- multiplexer selects from among all inputs, each data input
at) and functionally [13]. This hybrid fault model is adaptable must be active in at least one phase. Further, the functional test
to emerging FPGA technology and to different products as consists of applying logic 1 to the selected input while holding
they become commercially available [2]. The fault model was all others at logic 0, and a second test pattern with these logic
shown suitable to FPGA’s in [5] and confirmed by industrial values reversed. The multiplexer output must be observable
experiments. In particular, by device as follows. from at least one primary CLB output. If a multiplexer is
• For a LUT, a fault can occur in any one of the: memory not simultaneously controllable/observable, additional phases
matrix, decoders, and input and output lines. A faulty could be required. We need at least phases to test a
memory matrix makes some memory cells incapable of multiplexer with inputs. A multiplexer can be tested with a
storing the correct logic value (the LUT has a single bit LUT (if connected); a possible way to accomplish this consists
output, so this value is either 0 or 1) [2]. Any number of of choosing a memory matrix for the LUT that satisfies the
memory cells in the LUT could be faulty. If the fault is multiplexer(s) testability conditions. In this way, test phases
in the decoder, the erroneous address leads to reading the can be overlapped (reduced).
contents of the wrong cell, i.e., a one-bit address fault. The
third possible LUT fault is on the I/O lines, with respect
A. Testing the Sequential Partition
to which we allow any single stuck-at fault. The one-bit
decoder address fault can be collapsed to the stuck-at fault The sequential partition includes the D flip-flops as well
of a LUT input line. So this fault type is detected when as multiplexers and control circuits emanating from them or
the decoders are tested. A stuck-at fault on a LUT output only observable through them. During test generation, we seek
line is covered by the tests for the LUT memory matrix. to overlap testing of programmable multiplexers with that of
• For a multiplexer, we use a functional fault model, flip-flops.
because the internal logic structure varies from FPGA In some FPGA’s, flip-flops are more complicated than the
to FPGA [2]. Testing confirms the multiplexer’s ability D type. In particular, the Xilinx XC4000 family [2] has D flip-
to select each input. flops plus added logic that can be programmed to add set/reset
• For the D flip-flops, we use a functional fault model. A capability. The S/R controllers are configurable to allow a set
fault can cause a flip-flop to receive no data, to be unable function, a reset function, or neither. For the XC4000, this
to be triggered by the correct clock edge, or to be unable requires three separate programming phases; however, testing
to be set or reset. of the S/R controllers can be overlapped with testing the
Our testing objectives are as follows: flip-flops.
1) Testing the D Flip-Flops: We functionally test the D
• a 100% fault coverage under a single faulty device model
flip-flops. We test the input and hold function with the data
with neither delay nor area overhead;
sequence 010 (or 101) at D. Separate phases are required
• ease of test pattern generation, because patterns are
to test both rising and falling edge trigger mechanisms, if
generated for a CLB, not the whole FPGA;
applicable. We can test the set (reset) function by applying
• efficient implementation of the testing process as mea-
the set (reset) signal after a flip-flop is in the “0” (“1”) state.
sured by the amount of memory required to store the test
The set/reset disable functions must also be tested if present,
instructions (configuration bits and test patterns);
leading to another phase. To test the clock enable function, we
• the number of programming phases must be as small as
use the five-vector sequence given in Fig. 3. Some functional
possible, because reprogramming time is much greater
tests can be overlapped to reduce the number of phases. We
than test pattern application time [3].
can possibly also overlap phases with those for multiplexers,
depending on the sequential partition’s structure.
V. TESTING A CLB
We generate test patterns in two steps according to the CLB
partitioning. VI. PROPOSED TEST STRATEGY
Consider initially a CLB made of a single LUT. We can Fig. 4 shows a linear iterative array. There is a cascaded
test the LUT memory matrix by reading all the memory bits (horizontal) input reflecting the dependence of the cells in the
in two phases. The programmed memory matrix contents in iterative array, and test vector is obtained from the IOB’s
the second phase are complements of the first. and applied to this input. Other (vertical) inputs to the cells
The scenario is different for testing stuck-at faults at the are not shown, but are also obtained directly from the IOB’s.
LUT inputs. The LUT matrix contents must be arranged such The CLB’s in the array are programmed to implement
that the boolean difference is one for the input to be tested; functions: , etc. The period of the array, is the
HUANG et al.: TESTING CONFIGURABLE LUT-BASED FPGA’S 279

• For testing the CLB sequential partition, we program a


1-D (sequential) array and use the pipeline technique of
[8]. To reduce the number of required IOB’s, as many
as possible vertical inputs are made common (i.e., they
will have identical logic values when test vectors are
applied). This is beneficial because, in a sequential array,
the requirements of controllability and observability are
far more stringent than for a combinational array of the
same size [8], [9]. Let the number of vertical inputs
with different logic values in the test process for the
pipeline technique be . So, IOB’s IOB’s)
Fig. 3. Testing the enable function. are required for the primary horizontal inputs (outputs).
IOB’s are used as primary vertical inputs for the
vertical inputs of the CLB’s with different logic values
during the test process and IOB’s are used as
primary common vertical inputs for those vertical inputs
that do not need to be distinguished. The total required
IOB’s is then when
.
The issue of different possible arrangements for the CLB
inputs in each 1-D array must be considered with respect to
Fig. 4. Iterative array with period three. the number of IOB’s and the number of programming phases.
In [14], we give different testing arrangements that depend
on the values of and and on whether the array is
number of cells we must traverse in order to repeat the combinational or sequential.
cascaded input. We do not allow all test patterns; the test The implication of FPGA programmability is that the test
generation process must ensure the periodicity is satisfied patterns for a CLB can be applied in different phases. Also,
as it searches the input space. In Fig. 4 it must ensure that in each phase different CLB input(s)/output(s) can be selected
. The programmed functions— —could as “horizontal.” So the C-testable process is not static as in
all be different, but we will constrain them to be identical—so, [8], [9]; for example, the regeneration period can be different
if we have then various cells see inputs and in different phases. The definition of C-testability remains
Speaking in terms of single-pattern (combinational) unaltered—i.e., the number of phases is independent of the
testing, we only need to concatenate and to the array size.
input vector (and schedule the corresponding vertical CLB
inputs) and we will have every CLB experience test vector
VII. EVALUATION OF XILINX FPGA’s
The test set can then be compacted by eliminating unnecessary
patterns. We applied our array-based testing method to three FPGA
For successful testing, faulty outputs must also propagate families from Xilinx [2]—the XC3000, XC4000, and XC5200.
through the array. Again, the test pattern generation procedure We use the XC5200 for examples. Further details are in [14].
must ensure that excited faults propagate [9]. We measure testing complexity with the following:
Our proposed approach depends not only on the number • the number of programming phases for testing a CLB is
of CLB inputs and outputs (compared with the number of where denotes the
IOB’s), but also on the nature of the array under test (either number of programming phases for testing the combina-
combinational or sequential). The novelty of the approach tional (sequential) partition;
comes from using different types of array configurations to test • the number of patterns for testing the whole FPGA is
the CLB’s. Initially, each CLB is divided into two partitions: where denotes the number
a combinational partition (which includes those cell outputs of patterns for the combinational (sequential) partitions.
(and their fan-in nodes) that are combinational functions of For the XC4000, we omitted testing some logic in this
the cell inputs) and a sequential partition (which includes the study; specifically, logic to bypass the sequential outputs,
remaining devices). We use the following strategy. RAM functionality of the LUT configuration memory, and
• For testing the combinational partition of each CLB along some embedded logic to aid carry arithmetic.
an FPGA row, we program a 1-D (combinational) array. To test the combinational (sequential) logic module of a
Each LUT is loaded with values such that the iterative CLB, and and
arrays form a C-testable system (constant test set size). Hence, a CLB in an XC4000 FPGA requires a total of
Let there be independent iterative arrays with tests and phases.
horizontal inputs, horizontal outputs, and vertical In each phase for testing the CLB sequential partition, we
inputs. Then, we need IOB’s for need additional clock cycles to deliver the response to
controllability/observability when the IOB’s [8]. and hence, the total
280 IEEE TRANSACTIONS ON VERY LARGE SCALE INTEGRATION (VLSI) SYSTEMS, VOL. 6, NO. 2, JUNE 1998

TABLE I
XC5200 TESTING

tional partition consists of the LUT and the multiplexers


and while the sequential partition consists of the D
flip-flop and the multiplexer The combinational parti-
tion has six inputs ( – and ) and three outputs
( and ), while the sequential partition has five
inputs and the two inputs to and one
output. The input and output of an LC are not
independent within a CLB. and are common
inputs to all four LC’s. ’s inputs are not independent.
Fig. 5. Block diagram of an XC5200 CLB. Table I shows the tested functions and number of test
patterns required for each phase. Of eight phases, only two
number of test patterns for the CLB sequential partitions is are needed for the sequential partition.
The total number of patterns to test the whole In each phase the inputs – of each LC are held
FPGA is the total number of phases is identical. So only four signals are needed to furnish these
inputs for an entire CLB. Also, we never use more than one
For the XC3000, we can test the two partitions using output from each LC (four per CLB). The XC5200 family is
and phases; however, some data paths rich in I/O blocks, so four outputs are easily observed.
are shared between the partitions, so some phases can be We now describe the configurations for each phase.
combined, yielding a reduced total of [5]. The • Phase 1: This phase tests ’s ability to select in
total number of tests is Again, the number of required each LC. So, for the horizontal array connections, we
phases for testing the whole FPGA is the same as that for cascade each to the in the same LC of the
testing a single CLB, so The configured next CLB. This propagates any excited faults. For MUX
arrays are sequential in 12 of the required 19 phases. For the functional test, we only need two patterns per MUX input,
combinational arrays, the number of vectors required in each as mentioned earlier. In this case, however, these patterns
phase is the same as for a single CLB. Using the sequential are not achievable in LC0/2, because the MUX inputs
arrays in [8], we need additional cycles equal to the number are dependent. So we test ’s ability to distinguish
of CLB’s in an iterative array. Therefore, from separate from its ability to distinguish from
the “extra logic” (dotted line input in Fig. 5).
A. Example: The XC5200 FPGA Family We program the LC0/2 LUT’s to implement XOR and the
An XC5200 CLB has four independent four-input LUT’s, 14 LC1/3 LUT’s for XNOR. This makes it easy to get either
multiplexers, and four D flip-flops (Fig. 5). This is a stack of 0 or 1 at any LUT output, so can be made opposite to
four independent logic cells (LC’s). Each LC in Fig. 2 contains . Also, with – identical in each LC, the LUT outputs
one four-input LUT, three multiplexers, and one D flip-flop alternate between LCs; so, since controls the MUX in the
for a total of five independent inputs ( – and ) and extra logic, the extra logic will produce or its complement.
three outputs ( and ). Also, it has a input and For the first two patterns, we let the LC0–4 LUT’s output (0,
output; the of an LC connects to the of the next 1, 0, 1), which tests in LC1/3 and tests distinguishing
LC. In an LC, the LUT output can be configured as a CLB from the extra logic in LC0/2. For the other two patterns, we
output and/or drive the flip-flop D input. The dotted lines in let the LUT’s output (1, 0, 1, 0), which tests in LC0/2 for
Fig. 5 show the “extra logic” mentioned earlier, which is not distinguishing from
symmetrical; in the extra logic, controls a MUX so that • Phase 2: This phase tests ’s ability to select
two LC’s can realize a five-input function. LC2/3 are identical Again, we cannot test everything simultaneously. So, we
to LC0/1 in Fig. 5. test LC0/2 separately from LC1/3. We let the LUT’s
We partition each LC into a combinational partition and output (0, 1, 0, 1) to test LC1/3. Two patterns are needed.
a sequential partition, as shown in Fig. 2. The combina- Complementing the LUT outputs for the remaining two
HUANG et al.: TESTING CONFIGURABLE LUT-BASED FPGA’S 281

patterns tests LC0/2. At the same time, we notice that we TABLE II


have tested ’s ability to select in every LC. PHASES AND TEST PATTERNS BY METHOD

When each LC is tested, in that LC. In the case


of LC1–3, when tested, comes from for LC0–2. So,
to propagate faulty outputs, we connect the horizontal outputs
LC0–3 to the horizontal inputs LC0 LC1
and LC2 respectively.
• Phase 3: This phase tests ’s ability to select the ‘extra TABLE III
logic’ in LC0/2. We let the LUT’s output (0, 1, 0, 1). For NUMBER OF TEST SESSIONS IN BIST APPROACH
LC0/2, then, This means we can connect
as horizontal output to and excited faults will
propagate. For the two patterns that test So
we concatenate the patterns experienced by the CLB’s
in the array to get four patterns; however, eliminating
redundant patterns leaves only two. In the process of sequential test phases for the response to appear at
testing we partially tested the MUX in the extra the array output.
logic. We now let the LUT’s output (1, 0, 1, 0), and
apply two more test patterns to finish testing the extra
logic (stuck-ats and MUX function). VIII. COMPARISON OF TESTING APPROACHES
• Phase 4: has only been tested for its ability to select
so we now test it for selecting In this case,
A. Test Sessions Required
we program all LUT’s for the “0” function. Also, to
observe we program to select Each LC The proposed array-based technique can be compared with
then implements We can now program the other methods, such as the naive approach of [5] and the
horizontal connections so that propagates to We BIST-based approach of [7], with respect to the number of
make an exception for LC3 and connect (instead programming phases. For fairness, we use the same fault
of to LC3 This allows us to also test for a model (from Section IV) for each method. For simplicity,
stuck-at fault that does not affect LC3 (e.g., a for each approach we assume the same test configu-
stuck-open). rations we obtained for the array-based approach. In actuality,
• Phases 5 and 6: We now test for stuck-at faults in this could be noticeably fewer for the naive approach and
the memory matrix. By programming the LUT’s to im- somewhat fewer for the BIST approach, because CLB output
plement XOR/XNOR functions, it is easy to propagate observability is superior. Note that all of these methods allow
any excited faults by connecting horizontal output to 100% coverage of the modeled faults.
(Again, but the concatenated test patterns As shown in Table II, the naive approach needs test phases
are redundant.) Due to the XOR/XNOR functions, we proportional to which is itself proportional to
also detect – stuck-at faults—together with their [14]. For the BIST approach [7], denotes the number
corresponding addressing faults. We are also detecting of test “sessions.” In each session, different CLB’s are under
node stuck faults. We need two phases, because we test. Comparing the formulae for and is
need to program each memory cell for both 0 and 1. equivalent in nature to must be at least two.
There are 16 memory cells in each LUT and we need to It is typically three or more [7], but we note that is
access each in both phases for a total of 32 test patterns; good for the Xilinx families studied, especially the XC3000.
however, six of these have already been performed (two Table III gives for these Xilinx families. Not all the
each in phases 2–4). members of the Xilinx families studied herein were considered
• Phase 7: In this sequential test phase we test ’s ability for the BIST approach [7]. The values of in Table III
would be increased if the BIST-ILA configuration of [10]
to select For complete control of we make
were used. For the array-based method, all CLB’s are under
select and program all LUT’s for XOR. For the
test simultaneously, so the equivalent to and is 1
horizontal connection, we connect to We test most
in Table II.
flip-flop functions in this phase. We also detect stuck
faults.
• Phase 8: In this sequential test phase we test ’s ability B. Multiple Fault Detection
to select the LUT. Again, we control by programming A further point of comparison is the fault bound of an
to select and all LUT’s for XOR. Since follows approach—i.e., the maximum number of faults such that test
the LUT output, we propagate errors by horizontally invalidation (fault masking) cannot occur. We give as a
connecting to We also test flip-flop reset in this range. The lower bound for is under worst case conditions.
phase. The upper bound can be achieved if the faulty CLB locations
By Table I, we require patterns to test are favorable. We assume that test invalidation always occurs
the whole FPGA, because cycles are required for each of if the CLB locations permit it. is given as follows.
282 IEEE TRANSACTIONS ON VERY LARGE SCALE INTEGRATION (VLSI) SYSTEMS, VOL. 6, NO. 2, JUNE 1998

TABLE IV
CLB ARCHITECTURAL COMPARISON

• Naive Approach. Every CLB is tested independently, TABLE V


hence QUALITATIVE COMPARISON OF XILINX FPGA FAMILIES
• BIST Approach. In each session, the CLB’s are config-
ured into disjoint groups: the test pattern generators, pairs
of CLB’s under test, and response comparators for each
test pair. We conclude that (For the
upper bound, we assumed that was barely
achievable.)
• Array-Based Approach. We assume test invalidation oc-
curs in a 1-D array if there is more than one faulty
CLB. Since we configure the arrays along the rows of similar woes. Also, XC3000 sequential outputs feed back to
the FPGA, its LUT’s. That feedback must be tested sequentially, because
the XC3000 flip-flops are always enabled.
IX. ARCHITECTURES AND COMPARATIVE ANALYSIS
We compare the Xilinx FPGA’s in the series 3000, 4000, X. CONCLUSIONS
and 5200 with respect to their CLB structures and IOB We presented a new approach for testing LUT-based
limitations. We compare each CLB architecture by consider- FPGA’s by utilizing their reprogrammability. Under a hybrid
ing programmability and controllability/observability and the (functional and/or stuck-at) single device fault model, we
required programming phases. Further details are in [14]. can test an FPGA by configuring the CLB’s as 1-D arrays:
the approach’s novelty compared to previous work is that
A. Comparison of CLB Devices and Features we use different array structures for different testing needs.
Table IV gives the numbers of D flip-flops, LUT’s, and This array-based technique takes into account the limited
programmable and conventional multiplexers—together with controllability/observability due to limited chip I/O. In testing
the test patterns and programming phases needed by the array- with our approach we do not consider the actual application
based method. It also gives the configuration memory size configurations; the whole FPGA is fully tested, confirming its
due to the flip-flops and programmable multiplexers. The programmability for all applications, and results in significant
difference between the XC3000 and XC4000 families is not advantages, such as a unique testing regimen independent
large. The XC4000 has an extra 8-bit LUT connected in series of how many applications there are and their specifics. It is
with the other two LUT’s. This partially affects controllability suitable for manufacturing test and to serve as a universal
and observability; however, some of the required tests for power-on self-test. Our approach has no area/delay penalty cf.
the additional LUT can still be combined with the tests for design for testability approaches.
the other two LUT’s. We consider the R/S control elements We analyzed the array-based technique with respect to the
equivalent to two MUX’s each, so the XC4000 CLB has more numbers of chip reprogrammings and test patterns needed. We
programmable MUX’s. Also, six MUX’s have four inputs. demonstrated its applicability to three Xilinx FPGA families.
Since the number of programming phases to test a MUX We draw the following general conclusions.
depends linearly on the number of MUX input lines [5], these • For our method, the number of chip programmings
need more phases (and test vectors) for the XC4000 compared to fully test all logic blocks (CLB’s) is the same as
to the XC3000. that to test a single CLB with perfect controllabil-
Two main XC5200 features contribute to its suitability to ity/observability. With CLB’s, given that there
the array-based testing approach. First, it can be treated as are I/O blocks, the number of clock cycles
four parallel simple logic cells (LC’s) with little hassle. Like to apply the test vectors is Since chip
the XC4000 LUT’s, internal signals are not independent (due programming time is typically at least equivalent to
to MUX and the extra logic). But these devices have 10 000 cycles, our method’s testing time is essentially
adequate controllability, so testing the dependent logic only independent of FPGA size.
requires extra test patterns, not phases. • With our approach, all CLB’s can be under test simulta-
The second fortunate XC5200 feature is its simple sequen- neously. This is possible with neither the naive approach
tial structure. This leads to two sequential phases, cf. 12 [5] nor the BIST approach [7]. Table V compares Xilinx
(13) for the XC3000 (XC4000). The XC4000 has several families and test methods. We use “ ” and “ ” to denote
programmable MUX’s that are in the sequential partition, in superiority and inferiority, respectively, while “ ” is
addition to the programmable R/S logic. The XC3000 has neutral. So “ ” means fewer tests, fewer phases, more
HUANG et al.: TESTING CONFIGURABLE LUT-BASED FPGA’S 283

IOB’s cf. CLB outputs, and better CLB observability [13] J. Gailaiy, Y. Crouzet, and M. Vergniault, “Physical versus logic
compared to other families. For a test method, “ ” means faults: Impact on their testability,” IEEE Trans. Comput., vol. C-20,
pp. 527–531, June 1980.
faster testing (fewer phases) for that family than with [14] W. K. Huang, [Online]. Available FTP: //ftp.cs.tamu.edu/pub/fmeyer/
other methods. reports/test/abstracts.html.
• Our method uses only three different array layouts.
I/O limitations were never a problem, despite studying
FPGA’s of various sizes and with various architectural
features. Wei Kang Huang was born in Shanghai, China, in 1941 and graduated from
the Department of Physics, Fudan University, Shanghai, China, in 1965.
• We confirmed that the CLB architecture has a major From 1985 to 1987, he was a Visiting Scholar at the University of Arizona,
impact on array test complexity. In particular, LUT’s Tucson, and at the University of Colorado, Boulder. During the period from
connected in series or programmable multiplexers with 1994 to 1996, he was a Postdoctoral Research Associate at the Department of
Computer Science, Texas A&M University, College Station, where he pursued
many inputs are two characteristics that lead to more research in testing and fault tolerance of FPGA’s. Currently, he is a Professor
chip programmings. As seen with the Xilinx XC5200, in the Department of Electronic Engineering, Fudan University. He is a Group
a large CLB can still be very efficiently tested due Leader in the computer-aided design/computer-aided testing (CAD/CAT) area.
His research interests include test generation and simulation, VLSI design,
to the regularity of its internal organization and the design for testability, and fault tolerance.
simplicity of its sequential partition. For the naive and
BIST approaches, a small number of I/O blocks adversely
impacts testing time. Our approach is largely independent
of I/O blocks, but can benefit only slightly from having Fred J. Meyer (M’95) received the B.Sc. (Hons.) degree in computer systems
many CLB outputs. engineering and the Ph.D. degree from the University of Massachusetts,
Amherst, in 1984 and 1991, respectively.
He is a Research Associate in the Department of Computer Science at
ACKNOWLEDGMENT Texas A&M University, College Station. He was previously with the United
States Air Force. His research interests are in distributed computer systems
The authors would like to thank the reviewers for providing and algorithms, reliable and secure communication protocols, reliable system
very detailed comments. design and validation, and IC yield enhancement and assessment.

REFERENCES
[1] S. Brown, R. J. Francis, J. Rose, and Z. G. Vranesic, Field Pro- Xiao-Tao Chen was born in Shanghai, China, on April 28, 1964. He received
grammable Gate Arrays. Boston, MA: Kluwer Academic, 1992. the B.S. and M.S. degrees in electronics engineering from Fudan University,
[2] Programmable Gate Array Data Book, Xilinx, Inc., San Jose, CA, 1991. Shanghai, China, and the Ph.D. degree in computer science from Texas A&M
[3] B. K. Fawcett, “Taking advantage of reconfigurable logic,” in Proc. 2nd University, College Station, in 1985, 1991, and 1997, respectively.
ACM Workshop on FPGA’s, Berkeley, CA, 1994. From 1985 to 1988, he was involved in data communication, and from
[4] K. El-Ayat, R. Chan, C. L. Chan, and T. Speers, “Array architecture for 1991 to 1994, he was a faculty member at Fudan University. Since 1989,
ATPG with 100% fault coverage,” in Proc. IEEE Workshop on DFT in he has been working on computer-aided testing (ATPG and DFT), design
VLSI Systems, Hidden Valley, CA, 1991, pp. 213–226. verification, computer architecture, and algorithms. He is currently with
[5] W. K. Huang and F. Lombardi, “A general technique for testing
Lucent Technologies, Allentown, PA, working on ORCA FPGA design and
FPGA’s,” in Proc. IEEE VLSI Test Symp., Princeton, NJ, May 1996,
development.
pp. 450–455.
[6] W. K. Huang, F. J. Meyer, and F. Lombardi, “Array-based testing
of FPGAs: Architecture and complexity,” in Proc. IEEE Conf. on
Innovative Syst. Silicon, Austin, TX, 1996, pp. 249–258.
[7] C. Stroud, P. Chen, S. Konala, and M. Abramovici, “BIST of logic
blocks in FPGA’s,” in Proc. IEEE VLSI Test Symp., Princeton, NJ, May Fabrizio Lombardi (M’82) received the B.Sc. (Hons.) degree in electrical
1996, pp. 387–392. engineering from the University of Essex, U.K., in 1977. He received the
[8] T. Liu, W. K. Huang, and F. Lombardi, “Testing of uncustomized Master’s degree in microwave and modern optics, the Diploma in microwave
segmented channel FPGA’s,” in Proc. ACM Symp. FPGA’s, 1995, pp. engineering, and the Ph.D. degree from the University College London, U.K.,
125–131. in 1978, 1978, and 1982, respectively.
[9] A. D. Friedman, “Easily testable iterative arrays,” IEEE Trans. Comput., In 1977, he joined the Microwave Research Unit at the University College
vol. C–22, pp. 1061–1064, 1973. London. Previously, he was with the University of Colorado, Boulder, and
[10] C. Stroud, E. Lee, S. Kanala, and M. Abramovici, “Using ILA testing Texas Tech University, Lubbock. He is currently a Full Professor in the
for BIST in FPGA’s,” in Proc. IEEE Int. Test Conf., 1996, pp. 68–75. Department of Computer Science at Texas A&M University, College Station,
[11] T. Liu, F. Lombardi, and J. Salinas, “Diagnosis of interconnects and where his research interests are in fault-tolerant computing, testing and design
FPIC’s using a structured walking–1 approach,” in Proc. IEEE VLSI of digital systems, and parallel and distributed computer systems. Current
Test Symp., 1995, pp. 256–261. topics under investigation include design and test of programmable digital
[12] C. Feng, W. K. Huang and F. Lombardi, “A new diagnosis approach for systems (such as FPGA and FPIC), defect tolerance for IC manufacturing,
short faults in interconnects,” in Proc. IEEE Fault-Tol. Comput. Symp., mapping for parallel processing applications, testing of arrays, and protocol
Pasadena, CA, June 1995, pp. 331–339. design and verification.

You might also like