The present invention generally relates to the field of scan-based design and test using design-for-test (DFT) techniques. Specifically, the present invention relates to the field of testing of Field Programmable Gate Arrays (FPGAs).
Design and manufacturing technology that started out as a small-scale Programmable Logic Array (PLA) has now advanced to very-large-scale Field Programmable Gate Arrays (FPGAs) and FPGA cores that are being embedded in System-on-Chip (SOC) applications. This has given users unprecedented power and flexibility in designing complex functions that are “programmable” in the field. As designers include more features into the structured arrays, methods and ways to fully test those programmable devices are often lagging. Unlike structural testing of its counterpart, Application Specific Integrated Circuits (ASICs), the main challenge in testing of programmable devices and programmable cores in SOCs has been the huge number of configurations that must be downloaded and tested to ensure end-product quality and/or in-system reliability.
Testing of programmable logic and routing resources is analogous to testing all possible functions (configurations) in anticipation for how the device will be configured by the end users in the field. Today, this testing is more art than science. There is no way humanly possible to tell if the test is complete or, more importantly, optimized. Furthermore, the download time to configure each programmable mode of operation is the dominant factor in test time and test cost during both manufacturing test and system-level test.
The first built-in self-test (BIST) method for FPGA was proposed by Stroud et al. (1996). This prior art approach exploits the re-programmability of FPGAs to create BIST circuitry in the FPGA during offline testing.
An FPGA test compression method is proposed by Tahoori et al. (2006). This prior art solution leverages the inherent regularity (array of identical blocks) of the FPGA in order to generate test configurations composed of identical Repeatable Test Modules (RTMs). With a slight enhancement to FGPA configuration loading facility, test configurations generated in this scheme can be loaded in parallel with a small amount of test data volume and test application time.
A new class of FPGAs with Special Function Blocks (SFBs) has recently emerged. These SFBs are essentially ASIC blocks embedded in an FPGA. In most cases, these SFBs perform different functions based on the configuration. Also, many of the inputs of these blocks come from programmable blocks of the FPGA. Therefore, previous techniques that target FPGA testing are not adequate for such blocks. Traditional Automatic Test Pattern Generation (ATPG) used for ASICs is insufficient because they require too many configurations to satisfy quality needs. Hence what is needed to test such blocks is an enhanced ATPG tool that is aware of configuration, and targets the minimization of configurations to achieve high quality test.
The objective of the present invention is to expand on a proven technology, Automatic Test Pattern Generation (ATPG), used exclusively for developing manufacturing and system-level tests for ASICs, to perform effective configuration testing of the programmable devices as well as programmable logic and routing embedded in SOCs.
In light of the high cost associated with configuration download time of FPGA testing, the present invention first compiles an FPGA circuit and a given list of configuration bit names into a database, and then uses an ATPG that operates on the database to generate a plurality of test cubes specifically for configuration minimization. These test cubes are further merged in a post-process manner using a test cube merging method to generate FPGA test vectors that utilize a small number of configurations to reduce test time and hence test cost.
The test cube merging method may sort the test cubes in an increasing order with unspecified configuration bits into TC_A. Starting from the first test cube in TC_A, the method may merge all other test cubes in TC_A whose unspecified configuration bits are mergable with the first test cube to said first test cube, and then save the merged test cube to TC_B. The method may then delete the first test cube and all other test cubes in TC_A whose unspecified configuration bits are mergeable with the first test cube from TC_A, and repeat the process until TC_A is empty.
Furthermore, the test cube merging method may include a methodology to further reduce the number of test configurations if the number of test configurations produced from above resulted in a number of test configurations higher than expected. The methodology may rank the test configurations based on the number of test vectors generated. A configuration with more patterns is considered superior to one with fewer patterns. Then, the methodology may select top N configurations and constrain the ATPG tool to only use these configurations to generate new test vectors Tn. If the fault coverage of the generated Tn vectors is insufficient, then generate additional test vectors without placing any constraints on configuration bits. The methodology may then pick the top M configurations and constrain the ATPG tool to only use these M configurations to generate new test vectors Tm so that the final fault coverage of the FPGA circuit using the M+N test configurations is acceptable. There may be several iterations to result in the maximal use of M+N configurations.
The foregoing and additional objects, features and advantages of the invention will become more apparent from the following detailed description, which proceeds with reference to the following drawings.
The following description is presently contemplated as the best mode of carrying out the present invention. This description is not to be taken in a limiting sense but is made merely for the purpose of describing the principles of the invention. The scope of the invention should be determined by referring to the appended claims.
The following discussion will be made clearer by a brief review of the relevant terminology as it is typically (but not exclusively) used. Accordingly, to assist readers in understanding the terminology used herein, the following definitions are provided.
“Configuration bits” are those FPGA SRAM cell bits used to configure the FPGA through switching on/off the connection of Programmable Interconnection Points (PIP), configuring I/O cells, etc.
A “Configuration” is a specific FPGA implementation when all configuration bits in the FPGA are specified.
A “test cube” is a string of bits including one or more unspecified bits (x's) in the configuration bits.
A “test vector” or a “test pattern” is a string of bits including only specified bits, such as 0's and 1's, in the configuration bits.
Referring to
Referring to
It should be noted that the flow diagram may execute more than once each time to deal with a set of faults when the FPGA netlist is large. Each of the ATPG tool 301, test cube merging tool 303, and the FSIM tool 305, may be stand-alone or an embedded routine in a single executable program. A stand-alone executable program is commonly referred to as a tool.
Referring to
Referring to
Referring to
Referring to
Referring to
A methodology for using this ATPG algorithm to further minimize the number of configurations is described here. After generating patterns with the above described algorithm, a large number of configurations may be observed. First, the configurations are ranked based on the number of ATPG generated vectors. A configuration with more patterns is considered superior to one with fewer patterns.
Now, select the top N configurations. Constrain the ATPG tool to only use these configurations. Create new patterns (Tn). This approach maximizes the use of these N configurations. The value of N depends on tester capacity for loading configurations, and can be easily decided upfront. In most cases, with N=15, such a run provides coverage very close (within 1%) to the unconstrained coverage.
In cases where coverage of Tn patterns is insufficient, more work would be needed. Use the undetected fault list from Tn to create a new set of patterns. These patterns would not contain any restrictions. This time, pick the top M configurations and create patterns with the restricted fault list. Repeat the experiment with different combinations of N and M, such that the resulting sum of N and M, N+M, satisfies the tester budget. Select the best combination that gives the highest fault coverage. Create a complete test set that constrains the ATPG tool to those configurations. This approach, although more complex than the previous one, was able to handle all cases for M+N=15, and provide coverage within 1% of the original coverage.
Having thus described presently preferred embodiments of the present invention, it can now be appreciated that the objectives of the invention have been fully achieved. And it will be understood by those skilled in the art that many changes in construction & circuitry, and widely differing embodiments and applications of the invention will suggest themselves without departing from the spirit and scope of the present invention. The disclosures and the description herein are intended to be illustrative and are not in any sense limitation of the invention, more preferably defined in the scope of the invention by the Claims appended hereto and their equivalents.
This application claims the benefits of U.S. Provisional Application No. 61/219,570 filed Jun. 23, 2009, which is hereby incorporated by reference.
Number | Date | Country | |
---|---|---|---|
61219570 | Jun 2009 | US |