00678888

download 00678888

of 8

Transcript of 00678888

  • 8/7/2019 00678888

    1/8

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

    Testing Configurable LUT-Based FPGAsWei Kang Huang, Fred J. Meyer, Member, IEEE, Xiao-Tao Chen, and Fabrizio Lombardi, Member, IEEE

    Abstract We present a new technique for testing field

    programmable gate arrays (FPGAs) based on look-up tables(LUTs). We consider a generalized structure for the basic FPGAlogic element (cell); it includes devices such as LUTs, sequentialelements (flip-flops), multiplexers and control circuitry. We usea hybrid fault model for these devices. The model is based on aphysical as well as a behavioral characterization. This permitsdetection of all single faults (either stuck-at or functional) andsome multiple faults using repeated FPGA reprogramming. Weshow that different arrangements of disjoint one-dimensional(1-D) cell arrays with cascaded horizontal connections andcommon vertical input lines provide a good logic testing regimen.The testing time is independent of the number of cells in thearray (C-testability). We define new conditions for C-testabilityof programmable/reconfigurable arrays. These conditions donot suffer from limited I/O pins. Cell configuration affects the

    controllability/observability of the iterative array. We applythe approach to various Xilinx FPGA families and compareit to prior work.

    Index Terms C-testability, field programmable gate array,programmability, reconfigurability, testing.

    I. NOTATION AND DEFINITIONS

    Horizontal The internal inputs (outputs) of an iterative array.

    These propagate dependency between the CLBs

    in the array.

    Vertical The external inputs of an iterative array. These

    can be directly specified in the test patterns and

    require I/O blocks.Phase Each testing phase is a reprogramming of the

    FPGA followed by test vector application. Since

    reprogramming is slow, the number of phases is

    a good measure of testing time.Session The application of every CLB test configuration to

    those CLBs that are under test. Multiple sessions

    are required if not all CLBs can be under test

    simultaneously.

    C-testable An FPGA is C-testable with a given testing

    method if the number of programmings is

    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.

    Manuscript received March 15, 1997; revised July 1, 1997. This work wassupported in part by the State of Texas Advanced Research Program.

    W. K. Huang is with the Department of Electronic Engineering, FudanUniversity, Shanghai, China.

    F. J. Meyer and F. Lombardi are with the Department of Computer Science,Texas A&M University, College Station TX 77843 USA.

    X.-T. Chen is with FPGA Software Core Group, Lucent Technologies,Allentown, PA 18103 USA.

    Publisher Item Identifier S 1063-8210(98)02949-7.

    The number of primary outputs of a CLB.

    The number of columns in the grid of CLBs.The number of rows in the grid of CLBs.

    The number of CLBs

    The number of I/O blocks.

    For a given test method and FPGA family, the

    number of configurations needed to test a single

    CLB.

    The part of due to the combinational par-

    tition of the CLB.

    The part of due to the sequential partition

    of the CLB.

    For a given method, the total phases needed for

    the specified FPGA family FPGA.

    For a given test method and FPGA family, the

    number of test patterns needed to test a single

    CLB.

    The part of due to the combinational partition

    of the CLB.

    The part of due to the sequential partition.

    For a given test method, for the specified

    FPGA family FPGA (plus any extra clock cycles

    needed to get the CLB response to chip I/O).

    For a given FPGA, the number of sessions needed

    by the BIST method [7].

    For a given FPGA, the number of sessions needed

    by the naive method [5].The regeneration period of a given iterative array.

    (The number of CLBs traversed before the input,

    output, and CLB configurations begin to repeat.)

    The number of vertical (external) inputs to each

    CLB in a given iterative array.

    The number of iterative array vertical inputs that

    differ for each CLB in one period. In the degen-

    erate case of period 1,

    II. INTRODUCTION

    F

    IELD programmable gate arrays (FPGAs) are widely

    used for rapid prototyping and manufacturing of com-plex digital systems, such as microprocessors and high-speed

    telecommunication chips [1]. FPGAs are commercially avail-

    able from many vendors. Our prototypical FPGA is a two-

    dimensional (2-D) grid of configurable logic blocks (CLBs).

    The CLBs can be programmed to implement combinational

    as well as sequential logic functions [1] and each CLB

    is identical before programming. CLBs are separated by

    a programmable interconnection network; the interconnect

    consists of either programmable connector and/or switching

    blocks [2], or a series of horizontal/vertical routing tracks

    10638210/98$10.00 1998 IEEE

  • 8/7/2019 00678888

    2/8

    HUANG et al.: TESTING CONFIGURABLE LUT-BASED FPGAS 277

    and segments with programmable devices. Customization is

    accomplished by configuring the interconnect and the CLBs

    by loading them with appropriate data from an external storage

    device. The FPGA also includes input/output blocks (IOBs),

    which provide the interface between the package pins and the

    internal logic.

    The numbers of CLBs and IOBs vary widely depending on

    the particular chip and manufacturer [2]. FPGAs 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 FPGAs can

    be used to configure functions via look-up tables (LUTs).

    Also, they often have a mode where the configuration SRAM

    is usable as memory.

    We focus on CLB testing for SRAM-based FPGAs that

    implement functions via LUTs.

    III. BACKGROUND

    Testing FPGAs 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 FPGAs [2]. Reference [4] discusses testing

    of row-based (segmented channel) FPGAs. The approach

    sequentially tests every cell using a modified scan procedure,

    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

    testing uncommitted segmented channel FPGAs for single

    stuck-at faults is based on connecting the cells of each row

    as a one-dimensional (1-D) unilateral array, such that the

    FPGA could be tested as a set of disjoint arrays. This yieldsconsiderable reduction in both vectors and test circuitry.

    Simultaneous testing of disjoint arrays helps achieve constant

    test set size (C-testability), so that test cost will be independent

    of chip size [9].

    In [7], the FPGA is configured to conduct direct output

    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-

    in self-test (BIST) arrangement. This requires at least one extra

    session, i.e., a doubling of chip programmings so that the

    cells previously used for test pattern generation and for output

    comparisons can become cells under test. Fault simulation

    established that 100% fault coverage can be accomplishedfor single stuck-at faults. In [10], the logic resources are

    arranged as an iterative logic array (ILA) [9]. This allows

    better scalability than the previous BIST arrangement [7];

    however, it also requires another additional sessioni.e., a

    tripling of chip programmings.

    A simple testing arrangement (referred to as naive) was

    mentioned in [5]. It connects together all input lines to

    the CLBs (cells) under test from the IOBs, and uses the

    remaining IOBs for direct observability of the output lines

    of each cell under test. Fig. 1 shows a single programming

    phase with the three leftmost CLBs under test. Each CLB

    Fig. 1. One programming phase with the naive testing method.

    Fig. 2. Interior of a Xilinx XC5200 CLB.

    in the figure has three inputs and two outputs. Three IOBs

    are consumed in order to provide the cells under test with

    their input vectors. The cells under test have no connections

    between them. Their output response is directly observed at the

    IOBs. In each programming phase, only a few CLBs can betested in parallel. This is basically restricted by the number of

    IOBs and the number of output lines of each CLB. In Fig. 1,

    only three CLBs can be under test, because, after three IOBs

    are used for CLB inputs, only seven IOBs remain to observe

    output response.

    IV. PROPOSED FAULT MODEL

    Fig. 2 shows a portion of a Xilinx XC5200 CLB. A full CLB

    consists of four stacked copies of the figure (with the carry in

    (CI) and carry out (CO) signals rippled through)plus a little

    extra logic. The portion in Fig. 2 has a single LUT with four

    inputs, so it has 24 configuration bits to specify its function.Of the three multiplexers, M1 is a conventional multiplexer.

    M2 and M3 are programmable multiplexers; each needs only a

    single configuration bit to specify which input it passes. There

    is also a D flip-flop.

    Our generalized internal CLB structure permits these de-

    vices: LUTs, programmable (configurable) multiplexers, con-

    ventional multiplexers, and flip-flops. Some conventional logic

    usually does not interfere with test generation.

    We assume the interconnect and the IOBs have already

    been tested; the interested reader should refer to [11] and [12]

    for a detailed treatment. In our proposed testing strategy, we

  • 8/7/2019 00678888

    3/8

    278 IEEE TRANSACTIONS ON VERY LARGE SCALE INTEGRATION (VLSI) SYSTEMS, VOL. 6, NO. 2, JUNE 1998

    divide CLBs into independent sets (linear arrays). For our

    fault model, within each linear array, we assume at most one

    faulty CLB; otherwise, fault masking might occur. For the

    single faulty CLB, the nature of the fault could take any form.

    For simplicity of illustration, in our investigation, we limited

    a CLB to a single faulty device. The nature of a device fault

    varies with the device.

    We model single device faults both physically (e.g., stuck-

    at) and functionally [13]. This hybrid fault model is adaptable

    to emerging FPGA technology and to different products as

    they become commercially available [2]. The fault model was

    shown suitable to FPGAs in [5] and confirmed by industrial

    experiments. In particular, by device as follows.

    For a LUT, a fault can occur in any one of the: memory

    matrix, decoders, and input and output lines. A faulty

    memory matrix makes some memory cells incapable of

    storing the correct logic value (the LUT has a single bit

    output, so this value is either 0 or 1) [2]. Any number of

    memory cells in the LUT could be faulty. If the fault is

    in the decoder, the erroneous address leads to reading the

    contents of the wrong cell, i.e., a one-bit address fault. Thethird possible LUT fault is on the I/O lines, with respect

    to which we allow any single stuck-at fault. The one-bit

    decoder address fault can be collapsed to the stuck-at fault

    of a LUT input line. So this fault type is detected when

    the decoders are tested. A stuck-at fault on a LUT output

    line is covered by the tests for the LUT memory matrix.

    For a multiplexer, we use a functional fault model,

    because the internal logic structure varies from FPGA

    to FPGA [2]. Testing confirms the multiplexers ability

    to select each input.

    For the D flip-flops, we use a functional fault model. A

    fault can cause a flip-flop to receive no data, to be unable

    to be triggered by the correct clock edge, or to be unableto be set or reset.

    Our testing objectives are as follows:

    a 100% fault coverage under a single faulty device model

    with neither delay nor area overhead;

    ease of test pattern generation, because patterns are

    generated for a CLB, not the whole FPGA;

    efficient implementation of the testing process as mea-

    sured by the amount of memory required to store the test

    instructions (configuration bits and test patterns);

    the number of programming phases must be as small as

    possible, because reprogramming time is much greater

    than test pattern application time [3].

    V. TESTING A CLB

    We generate test patterns in two steps according to the CLB

    partitioning.

    Consider initially a CLB made of a single LUT. We can

    test the LUT memory matrix by reading all the memory bits

    in two phases. The programmed memory matrix contents in

    the second phase are complements of the first.

    The scenario is different for testing stuck-at faults at the

    LUT inputs. The LUT matrix contents must be arranged such

    that the boolean difference is one for the input to be tested;

    multiple patterns are required. Furthermore, each LUT output

    must be observable at a primary CLB output. So we require

    a sensitized path from the LUT output to a primary CLB

    output. By definition of the combinational partition, this can

    be achieved by configuring the multiplexers (or other devices)

    in the partition.

    We use a functional test for the multiplexers. Since a

    multiplexer selects from among all inputs, each data input

    must be active in at least one phase. Further, the functional test

    consists of applying logic 1 to the selected input while holding

    all others at logic 0, and a second test pattern with these logic

    values reversed. The multiplexer output must be observable

    from at least one primary CLB output. If a multiplexer is

    not simultaneously controllable/observable, additional phases

    could be required. We need at least phases to test a

    multiplexer with inputs. A multiplexer can be tested with a

    LUT (if connected); a possible way to accomplish this consists

    of choosing a memory matrix for the LUT that satisfies the

    multiplexer(s) testability conditions. In this way, test phases

    can be overlapped (reduced).

    A. Testing the Sequential Partition

    The sequential partition includes the D flip-flops as well

    as multiplexers and control circuits emanating from them or

    only observable through them. During test generation, we seek

    to overlap testing of programmable multiplexers with that of

    flip-flops.

    In some FPGAs, flip-flops are more complicated than the

    D type. In particular, the Xilinx XC4000 family [2] has D flip-

    flops plus added logic that can be programmed to add set/reset

    capability. The S/R controllers are configurable to allow a set

    function, a reset function, or neither. For the XC4000, this

    requires three separate programming phases; however, testingof the S/R controllers can be overlapped with testing the

    flip-flops.

    1) Testing the D Flip-Flops: We functionally test the D

    flip-flops. We test the input and hold function with the data

    sequence 010 (or 101) at D. Separate phases are required

    to test both rising and falling edge trigger mechanisms, if

    applicable. We can test the set (reset) function by applying

    the set (reset) signal after a flip-flop is in the 0 (1) state.

    The set/reset disable functions must also be tested if present,

    leading to another phase. To test the clock enable function, we

    use the five-vector sequence given in Fig. 3. Some functional

    tests can be overlapped to reduce the number of phases. We

    can possibly also overlap phases with those for multiplexers,depending on the sequential partitions structure.

    VI. PROPOSED TEST STRATEGY

    Fig. 4 shows a linear iterative array. There is a cascaded

    (horizontal) input reflecting the dependence of the cells in the

    iterative array, and test vector is obtained from the IOBs

    and applied to this input. Other (vertical) inputs to the cells

    are not shown, but are also obtained directly from the IOBs.

    The CLBs in the array are programmed to implement

    functions: , etc. The period of the array, is the

  • 8/7/2019 00678888

    4/8

    HUANG et al.: TESTING CONFIGURABLE LUT-BASED FPGAS 279

    Fig. 3. Testing the enable function.

    Fig. 4. Iterative array with period three.

    number of cells we must traverse in order to repeat the

    cascaded input. We do not allow all test patterns; the test

    generation process must ensure the periodicity is satisfied

    as it searches the input space. In Fig. 4 it must ensure that

    . The programmed functions could

    all be different, but we will constrain them to be identicalso,

    if we have then various cells see inputs and

    Speaking in terms of single-pattern (combinational)

    testing, we only need to concatenate and to the

    input vector (and schedule the corresponding vertical CLBinputs) and we will have every CLB experience test vector

    The test set can then be compacted by eliminating unnecessary

    patterns.

    For successful testing, faulty outputs must also propagate

    through the array. Again, the test pattern generation procedure

    must ensure that excited faults propagate [9].

    Our proposed approach depends not only on the number

    of CLB inputs and outputs (compared with the number of

    IOBs), but also on the nature of the array under test (either

    combinational or sequential). The novelty of the approach

    comes from using different types of array configurations to test

    the CLBs. Initially, each CLB is divided into two partitions:

    a combinational partition (which includes those cell outputs(and their fan-in nodes) that are combinational functions of

    the cell inputs) and a sequential partition (which includes the

    remaining devices). We use the following strategy.

    For testing the combinational partition of each CLB along

    an FPGA row, we program a 1-D (combinational) array.

    Each LUT is loaded with values such that the iterative

    arrays form a C-testable system (constant test set size).

    Let there be independent iterative arrays with

    horizontal inputs, horizontal outputs, and vertical

    inputs. Then, we need IOBs for

    controllability/observability when

    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 IOBs, as many

    as possible vertical inputs are made common (i.e., they

    will have identical logic values when test vectors areapplied). 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, IOBs IOBs)

    are required for the primary horizontal inputs (outputs).

    IOBs are used as primary vertical inputs for the

    vertical inputs of the CLBs with different logic values

    during the test process and IOBs are used as

    primary common vertical inputs for those vertical inputs

    that do not need to be distinguished. The total required

    IOBs is then when

    .

    The issue of different possible arrangements for the CLB

    inputs in each 1-D array must be considered with respect tothe number of IOBs 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

    combinational or sequential.

    The implication of FPGA programmability is that the test

    patterns for a CLB can be applied in different phases. Also,

    in each phase different CLB input(s)/output(s) can be selected

    as horizontal. So the C-testable process is not static as in

    [8], [9]; for example, the regeneration period can be different

    in different phases. The definition of C-testability remains

    unalteredi.e., the number of phases is independent of the

    array size.

    VII. EVALUATION OF XILINX FPGAs

    We applied our array-based testing method to three FPGA

    families from Xilinx [2]the XC3000, XC4000, and XC5200.

    We use the XC5200 for examples. Further details are in [14].

    We measure testing complexity with the following:

    the number of programming phases for testing a CLB is

    where denotes the

    number of programming phases for testing the combina-

    tional (sequential) partition;

    the number of patterns for testing the whole FPGA is

    where denotes the number

    of patterns for the combinational (sequential) partitions.For the XC4000, we omitted testing some logic in this

    study; specifically, logic to bypass the sequential outputs,

    RAM functionality of the LUT configuration memory, and

    some embedded logic to aid carry arithmetic.

    To test the combinational (sequential) logic module of a

    CLB, and and

    Hence, a CLB in an XC4000 FPGA requires a total of

    tests and phases.

    In each phase for testing the CLB sequential partition, we

    need additional clock cycles to deliver the response to

    the IOBs [8]. and hence, the total

  • 8/7/2019 00678888

    5/8

  • 8/7/2019 00678888

    6/8

  • 8/7/2019 00678888

    7/8

    282 IEEE TRANSACTIONS ON VERY LARGE SCALE INTEGRATION (VLSI) SYSTEMS, VOL. 6, NO. 2, JUNE 1998

    TABLE IVCLB ARCHITECTURAL COMPARISON

    Naive Approach. Every CLB is tested independently,

    hence BIST Approach. In each session, the CLBs are config-

    ured into disjoint groups: the test pattern generators, pairs

    of CLBs 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

    the FPGA,

    IX. ARCHITECTURES AND COMPARATIVE ANALYSIS

    We compare the Xilinx FPGAs in the series 3000, 4000,

    and 5200 with respect to their CLB structures and IOB

    limitations. We compare each CLB architecture by consider-

    ing programmability and controllability/observability and the

    required programming phases. Further details are in [14].

    A. Comparison of CLB Devices and Features

    Table IV gives the numbers of D flip-flops, LUTs, and

    programmable and conventional multiplexerstogether with

    the test patterns and programming phases needed by the array-

    based method. It also gives the configuration memory size

    due to the flip-flops and programmable multiplexers. Thedifference between the XC3000 and XC4000 families is not

    large. The XC4000 has an extra 8-bit LUT connected in series

    with the other two LUTs. This partially affects controllability

    and observability; however, some of the required tests for

    the additional LUT can still be combined with the tests for

    the other two LUTs. We consider the R/S control elementsequivalent to two MUXs each, so the XC4000 CLB has more

    programmable MUXs. Also, six MUXs have four inputs.

    Since the number of programming phases to test a MUX

    depends linearly on the number of MUX input lines [5], these

    need more phases (and test vectors) for the XC4000 compared

    to the XC3000.

    Two main XC5200 features contribute to its suitability tothe array-based testing approach. First, it can be treated as

    four parallel simple logic cells (LCs) with little hassle. Like

    the XC4000 LUTs, internal signals are not independent (due

    to MUX and the extra logic). But these devices have

    adequate controllability, so testing the dependent logic only

    requires extra test patterns, not phases.

    The second fortunate XC5200 feature is its simple sequen-

    tial structure. This leads to two sequential phases, cf. 12

    (13) for the XC3000 (XC4000). The XC4000 has several

    programmable MUXs that are in the sequential partition, in

    addition to the programmable R/S logic. The XC3000 has

    TABLE V

    QUALITATIVE COMPARISON OF XILINX FPGA FAMILIES

    similar woes. Also, XC3000 sequential outputs feed back to

    its LUTs. That feedback must be tested sequentially, because

    the XC3000 flip-flops are always enabled.

    X. CONCLUSIONS

    We presented a new approach for testing LUT-based

    FPGAs by utilizing their reprogrammability. Under a hybrid

    (functional and/or stuck-at) single device fault model, we

    can test an FPGA by configuring the CLBs as 1-D arrays:

    the approachs novelty compared to previous work is that

    we use different array structures for different testing needs.

    This array-based technique takes into account the limited

    controllability/observability due to limited chip I/O. In testing

    with our approach we do not consider the actual application

    configurations; the whole FPGA is fully tested, confirming its

    programmability for all applications, and results in significantadvantages, such as a unique testing regimen independent

    of how many applications there are and their specifics. It is

    suitable for manufacturing test and to serve as a universal

    power-on self-test. Our approach has no area/delay penalty cf.

    design for testability approaches.

    We analyzed the array-based technique with respect to the

    numbers of chip reprogrammings and test patterns needed. We

    demonstrated its applicability to three Xilinx FPGA families.

    We draw the following general conclusions.

    For our method, the number of chip programmings

    to fully test all logic blocks (CLBs) is the same as

    that to test a single CLB with perfect controllabil-

    ity/observability. With CLBs, given that thereare I/O blocks, the number of clock cycles

    to apply the test vectors is Since chip

    programming time is typically at least equivalent to

    10 000 cycles, our methods testing time is essentially

    independent of FPGA size.

    With our approach, all CLBs can be under test simulta-

    neously. This is possible with neither the naive approach

    [5] nor the BIST approach [7]. Table V compares Xilinx

    families and test methods. We use and to denote

    superiority and inferiority, respectively, while is

    neutral. So means fewer tests, fewer phases, more

  • 8/7/2019 00678888

    8/8

    HUANG et al.: TESTING CONFIGURABLE LUT-BASED FPGAS 283

    IOBs cf. CLB outputs, and better CLB observability

    compared to other families. For a test method, means

    faster testing (fewer phases) for that family than with

    other methods.

    Our method uses only three different array layouts.

    I/O limitations were never a problem, despite studying

    FPGAs of various sizes and with various architectural

    features.

    We confirmed that the CLB architecture has a major

    impact on array test complexity. In particular, LUTs

    connected in series or programmable multiplexers with

    many inputs are two characteristics that lead to more

    chip programmings. As seen with the Xilinx XC5200,

    a large CLB can still be very efficiently tested due

    to the regularity of its internal organization and the

    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

    many CLB outputs.

    ACKNOWLEDGMENT

    The authors would like to thank the reviewers for providing

    very detailed comments.

    REFERENCES

    [1] S. Brown, R. J. Francis, J. Rose, and Z. G. Vranesic, Field Pro-grammable Gate Arrays. Boston, MA: Kluwer Academic, 1992.

    [2] Programmable Gate Array Data Book, Xilinx, Inc., San Jose, CA, 1991.[3] B. K. Fawcett, Taking advantage of reconfigurable logic, in Proc. 2nd

    ACM Workshop on FPGAs, Berkeley, CA, 1994.[4] K. El-Ayat, R. Chan, C. L. Chan, and T. Speers, Array architecture for

    ATPG with 100% fault coverage, in Proc. IEEE Workshop on DFT inVLSI Systems, Hidden Valley, CA, 1991, pp. 213226.

    [5] W. K. Huang and F. Lombardi, A general technique for testingFPGAs, in Proc. IEEE VLSI Test Symp., Princeton, NJ, May 1996,pp. 450455.

    [6] W. K. Huang, F. J. Meyer, and F. Lombardi, Array-based testingof FPGAs: Architecture and complexity, in Proc. IEEE Conf. on

    Innovative Syst. Silicon, Austin, TX, 1996, pp. 249258.[7] C. Stroud, P. Chen, S. Konala, and M. Abramovici, BIST of logic

    blocks in FPGAs, in Proc. IEEE VLSI Test Symp., Princeton, NJ, May1996, pp. 387392.

    [8] T. Liu, W. K. Huang, and F. Lombardi, Testing of uncustomizedsegmented channel FPGAs, in Proc. ACM Symp. FPGAs, 1995, pp.125131.

    [9] A. D. Friedman, Easily testable iterative arrays, IEEE Trans. Comput.,vol. C22, pp. 10611064, 1973.

    [10] C. Stroud, E. Lee, S. Kanala, and M. Abramovici, Using ILA testingfor BIST in FPGAs, in Proc. IEEE Int. Test Conf., 1996, pp. 6875.

    [11] T. Liu, F. Lombardi, and J. Salinas, Diagnosis of interconnects andFPICs using a structured walking1 approach, in Proc. IEEE VLSI

    Test Symp., 1995, pp. 256261.[12] C. Feng, W. K. Huang and F. Lombardi, A new diagnosis approach for

    short faults in interconnects, in Proc. IEEE Fault-Tol. Comput. Symp.,Pasadena, CA, June 1995, pp. 331339.

    [13] J. Gailaiy, Y. Crouzet, and M. Vergniault, Physical versus logicfaults: Impact on their testability, IEEE Trans. Comput., vol. C-20,pp. 527531, June 1980.

    [14] W. K. Huang, [Online]. Available FTP: //ftp.cs.tamu.edu/pub/fmeyer/reports/test/abstracts.html.

    Wei Kang Huang was born in Shanghai, China, in 1941 and graduated from

    the Department of Physics, Fudan University, Shanghai, China, in 1965.From 1985 to 1987, he was a Visiting Scholar at the University of Arizona,

    Tucson, and at the University of Colorado, Boulder. During the period from1994 to 1996, he was a Postdoctoral Research Associate at the Department ofComputer Science, Texas A&M University, College Station, where he pursuedresearch in testing and fault tolerance of FPGAs. Currently, he is a Professorin the Department of Electronic Engineering, Fudan University. He is a GroupLeader in the computer-aided design/computer-aided testing (CAD/CAT) area.His research interests include test generation and simulation, VLSI design,design for testability, and fault tolerance.

    Fred J. Meyer (M95) received the B.Sc. (Hons.) degree in computer systemsengineering 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 atTexas A&M University, College Station. He was previously with the UnitedStates Air Force. His research interests are in distributed computer systemsand algorithms, reliable and secure communication protocols, reliable systemdesign and validation, and IC yield enhancement and assessment.

    Xiao-Tao Chen was born in Shanghai, China, on April 28, 1964. He receivedthe B.S. and M.S. degrees in electronics engineering from Fudan University,Shanghai, China, and the Ph.D. degree in computer science from Texas A&MUniversity, College Station, in 1985, 1991, and 1997, respectively.

    From 1985 to 1988, he was involved in data communication, and from1991 to 1994, he was a faculty member at Fudan University. Since 1989,he has been working on computer-aided testing (ATPG and DFT), designverification, computer architecture, and algorithms. He is currently with

    Lucent Technologies, Allentown, PA, working on ORCA FPGA design anddevelopment.

    Fabrizio Lombardi (M82) received the B.Sc. (Hons.) degree in electricalengineering from the University of Essex, U.K., in 1977. He received theMasters degree in microwave and modern optics, the Diploma in microwaveengineering, and the Ph.D. degree from the University College London, U.K.,in 1978, 1978, and 1982, respectively.

    In 1977, he joined the Microwave Research Unit at the University CollegeLondon. Previously, he was with the University of Colorado, Boulder, andTexas Tech University, Lubbock. He is currently a Full Professor in theDepartment of Computer Science at Texas A&M University, College Station,where his research interests are in fault-tolerant computing, testing and designof digital systems, and parallel and distributed computer systems. Current

    topics under investigation include design and test of programmable digitalsystems (such as FPGA and FPIC), defect tolerance for IC manufacturing,mapping for parallel processing applications, testing of arrays, and protocoldesign and verification.