US20110276850A1 - Field Programmable Gate Arrays with Built-in Self Test Mechanisms - Google Patents
Field Programmable Gate Arrays with Built-in Self Test Mechanisms Download PDFInfo
- Publication number
- US20110276850A1 US20110276850A1 US12/777,228 US77722810A US2011276850A1 US 20110276850 A1 US20110276850 A1 US 20110276850A1 US 77722810 A US77722810 A US 77722810A US 2011276850 A1 US2011276850 A1 US 2011276850A1
- Authority
- US
- United States
- Prior art keywords
- test
- register
- registers
- circuit
- designing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/26—Functional testing
- G06F11/27—Built-in tests
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/3185—Reconfiguring for testing, e.g. LSSD, partitioning
- G01R31/318533—Reconfiguring for testing, e.g. LSSD, partitioning using scanning techniques, e.g. LSSD, Boundary Scan, JTAG
Definitions
- This invention relates generally to circuit design and testing, and more particularly to field programmable gate arrays (FPGAs) with built-in self-test mechanisms.
- FPGAs field programmable gate arrays
- FPGAs Field programmable gate arrays
- ASIC application-specific integrated circuit
- STARs roving self-testing areas
- a self-checking logic design approach for FPGA design is also known. This approach uses k-input functional cells that generate complementary outputs in fault free conditions, and a 2-rail checker cell to dynamically detect faults in the configurable logic blocks. This approach calls for a new logic synthesis algorithms specifically for this application. It also incurs up to 50% overhead which prevents it from being used as a high coverage startup BIST mechanism.
- FPGA BIST should also be technology independent. In other words, FPGA BIST should be able to be mapped to different FPGA families from different vendors without changing the structure. Lastly, FPGA BIST should impose a minimum burden on the designer and at the same time provide high structural and delay fault coverage.
- the present invention is directed to a method and apparatus for designing a circuit with a built-in self test mechanism.
- the apparatus is a computer device including a processor and a memory coupled to the processor that stores program instructions for executing by the processor.
- the computer device designs operation and behavior of the circuit in a non-testing mode.
- the computer device also identifies specific logic gates for performing the designed operation and behavior of the circuit in the non-testing mode.
- the computer device also designs a test path for the circuit for conducting a self-test during a testing mode. The design is configured to isolate primary inputs and outputs during the testing mode.
- the designing includes selecting registers of the circuit for forming the test path, identifying a plurality of the registers in the test path for outputting test response values, inserting an output tap at each of identified registers in the test path, and connecting the selected registers in a circular loop, wherein an input to a particular one of the selected registers is an output of a preceding one of the selected registers.
- the computer device performs logic simulation of the circuit and generates an output in response to the logic simulation.
- the designing the test path further includes identifying a non-register primary output of the circuit, inserting a register into the circuit design for capturing the non-register primary output, and selecting the inserted register for being included in the test path.
- the designing the test path further includes inserting a logic device for receiving a register primary input, and inserting a path from the inserted register to the logic device for selecting by the logic device a test pattern generated by the inserted register during the self-test mode.
- the designing the test path further includes identifying a primary input register, and replacing the primary input register with a linear feedback shift register, wherein the linear feedback shift register generates a test pattern during the self-test mode.
- the designing the test path further includes identifying an input register to an asynchronous clock domain, and replacing the input register to the asynchronous clock domain with a linear feedback shift register, wherein the linear feedback shift register generates a test pattern during the self-test mode.
- the designing the test path further includes identifying an un-testable hard core of the circuit, and isolating the un-testable hard core from the test path.
- the registers in the circular loop belong to more than one clock domain.
- the output tap is substantially evenly spaced among the registers in the circular loop.
- the registers in the test path generate test patterns during the self-test mode and provide test response values via the output taps.
- the test response values are compared against fault-free values.
- the circuit outputs an error in response to a lack of match of the test response values and the fault-free values.
- the identifying the plurality of registers in the test path includes identifying registers with at least a cone-of-logic of two. In other words, there are at least 2 logic values from outputs of other flip-flops/registers contributing to the input of said register.
- At least one of the plurality of registers in the test path are reordered or removed in response to the performed logic simulation.
- the FPGA BIST according to one embodiment of the present invention is configured to be simple and low cost and relatively easy to be automated into the FPGA design process. It imposes minimum burden on FPGA designer and as the same time provides high structural and delay fault coverage. Having high fault coverage BIST in FPGA designs can also improve system failure diagnostics and reduce manufacturing and field test costs.
- FIG. 1 is a schematic diagram of a circular test path for implementing a traditional CSTP technique
- FIG. 2 is a schematic diagram of a CSTP register that may be used in various embodiments of the present invention
- FIG. 3 is a schematic diagram of an FPGA with a BIST architecture according one embodiment of the invention.
- FIG. 4 is a schematic diagram of core logic of the FPGA with BIST capabilities according to one embodiment of the invention.
- FIG. 5 is a schematic diagram of a dual mode LFSR according to one embodiment of the invention.
- FIG. 6 is a schematic diagram of an un-testable hard core that is isolated from a CSTP test structure according to one embodiment of the invention.
- FIG. 7 is a schematic diagram of an FPGA with multiple clock domains according to one embodiment of the invention.
- FIG. 8 illustrates an FPGA design flow according to one embodiment of the invention
- FIG. 9 is a more detailed flow diagram of a CSTP insertion algorithm according to one embodiment of the invention.
- FIG. 10 is a flow diagram of a BIST process executed by an FPGA according to one embodiment of the invention.
- Embodiments of the present invention are directed to a simple, low cost, and high fault coverage logic BIST scheme for FPGA design.
- the FPGA BIST scheme may be used for mission critical systems in the field where a start-up test with high fault-coverage is often necessary in ensuring proper system functionality.
- the FPGA BIST scheme according to embodiments of the present invention is technology independent, uses one programming file, and has minimum impact to the FPGA development process.
- the FPGA BIST scheme makes use of an extension of a circular self test path (CSTP) structure disclosed in A. Krasniewksi, S. Pilarski, “Circular Self-Test Path: A Low-Cost BIST Technique,” IEEE Proceedings, 24th ACM/IEEE Design Automation Conference, 1987, the content of which is incorporated herein by reference.
- the CSTP technique is a technique for designing self-testing integrated circuits. Synchronous sequential circuits are constructed from combinational logic blocks (CL) and edge triggered registers.
- the CSTP technique includes linking selected registers of the circuit into one long circular register (feedback shift register) which serves simultaneously for generating pseudo-random test patterns and test response compaction while in a self-test mode. Test response compaction generates a signature which can then be analyzed for determining if the tested circuit is faulty or fault-free.
- FIG. 1 is a schematic diagram of a circular test path for implementing a traditional CSTP technique.
- the inclusion of a CSTP into a synchronous sequential circuit generally includes three steps. First, registers to be included in the CSTP are selected. The decision on which registers are to be included is based on test coverage requirements and hardware overhead. Second, the selected registers are replaced with CSTP registers. The registers that are not part of the CSTP operate in their normal mode. Finally, the CSTP registers are connected into a circular chain. Assuming all the registers in the synchronous sequential circuits can be preset to deterministic values, CSTP registers can act as both a test pattern generator and signature analyzer.
- Embodiments of the present invention extend the traditional CSTP to FPGA design to provide an FPGA BIST scheme that includes several enhancements to the traditional CSTP BIST architecture.
- the FPGA BIST scheme includes isolating primary inputs during a self-test to improve test coverage on the primary inputs side and to remove the dependency of system inputs.
- Primary outputs are also isolated and are configured to stay at default states during the entire test to ensure no undesired effects to other circuits within the system due to activities on the primary outputs.
- multiple signature output taps are inserted at CSTP registers throughout the test path to help improve signature aliasing probability.
- FPGA BIST improves the performance of the FPGA BIST.
- enhanced CSTP register selection algorithms prevent register adjacency problems and improve test hardware costs.
- the FPGA BIST scheme also helps to eliminate register adjacency after the CSTP registers have been inserted into the design by rearranging or removing certain CSTP registers.
- FIG. 2 is a schematic diagram of a CSTP register that may be used in the various embodiments of the present invention.
- Each CSTP register (also referred to as a self-test register or self-test memory element) includes a logic device such as, for example, a test multiplexer 10 that selects between a self-test mode and a normal operation mode.
- an XOR gate 12 captures the XOR value of the functional input and the contents of a previous CSTP register thereby providing data compaction functionality.
- the XOR value is captured via memory element 14 (e.g. flip-flop) for feeding to a next CSTP register.
- the use of the CSTP BIST mechanism offers low circuit overhead and implementation cost. Given the simplicity of the self-test structure, it can be easily included in the design automation flow. For the test to be valid and deterministic, all registers have to be initialized to known values. This requirement is well suited for FPGA design because all register resources already come with this functionality.
- the true hardware overhead is associated with the text multiplexer 10 and XOR gate 12 for every instantiated CSTP register. The timing penalty for the functional path is limited to the extra delay introduced by the test multiplexer 10 .
- a CSTP technique also can detect marginal defects due to silicon fatigue over time that results in timing failure.
- the quality of testing provided by a BIST implementation is generally determined by the effectiveness of random test pattern generation, the effectiveness of test response compaction, and fault coverage.
- the effectiveness of random pattern generation can be expressed as a fraction of all possible input patterns that are applied to the inputs of the circuit under test (CUT) during a test session.
- the quality of test response compaction is estimated by the probability of signature aliasing, i.e., the probability that an error response sequence produces a fault-free signature.
- CSTP in general does not belong to the class of maximal length LFSR (linear feedback shift registers) and is subject to an effect called limit cycling, which occurs when only a subset of all possible states is generated by the CSTP registers. However, for any CUT or any CL in FIG.
- T number of clock cycles of a test session
- a typical design example provides an idea of the performance numbers. Some of the high end FPGAs today have 200K flip-flops. A typical 50% utilization design will contain 100K flip-flops. More than 95% of the combinational logic has less than 24 inputs is a reasonable assumption for typical design. If we choose S to be 256, T to be 8*2 24 clock cycles, and clock period of 50 MHz, the estimated performance for this CSTP self-test is:
- FIG. 3 is a schematic diagram of an FPGA 20 with a BIST architecture according one embodiment of the invention.
- the FPGA includes a BIST controller 22 which controls the sequence of BIST pattern generation and extraction.
- the BIST controller 22 can be configured to automatically place the FPGA in a self-test mode by transmitting a test signal via bus 34 upon power-up of the FPGA while in use in the field.
- the BIST controller 22 may also perform the self-test upon a command received via a BIST test bus 28 .
- an FPGA in use in the field may be routinely tested for detecting defects at startup or at any other selected test periods, to ensure mission critical system functionality on the field.
- a core logic 26 of the FPGA is the circuit under test (CUT) and receives primary inputs 30 and generates primary outputs 32 .
- a primary input is an external input received by the FPGA from outside the FPGA, and a primary output is an output that is transmitted outside of the FPGA.
- FIG. 4 is a schematic diagram of the core logic 26 of the FPGA with BIST capabilities according to one embodiment of the invention.
- the core logic 26 includes an enhanced primary inputs/outputs structure for the CSTP.
- shadow registers are added for all primary outputs that are not captured by a register (also referred to as non-registered outputs) to improve test coverage.
- a shadow register is a CSTP register similar to the CSTP register of FIG. 2 , that is positioned to receive/capture a primary non-register output (i.e. a primary output that is not already captured by a register).
- Register 7 is a shadow register 40 that is created for primary output 32 b .
- the shadow registers 40 and primary output registers 42 are made part of the CSTP.
- the shadow register 40 together with a primary registered output 32 a are used as test patterns to the primary non-registered inputs 44 during a self-test via a test multiplexer 49 .
- All primary outputs are logic conditioned with self-test mode to be in user selected default states to prevent outputs from corrupting system behavior. This may be done with tri-state logic and pull-up/pull-down resistors which are part of the FPGA I/O resources.
- the primary input registers i.e. registers that receive a primary input
- a test pattern also referred to as stimulus
- the dual mode LFSR 46 serves as a regular flip-flop in a functional (non-testing) mode, and as a pseudo-random pattern generator during a self-test mode.
- the pattern that is generated by the dual mode LFSR 46 is provided to a CSTP register 47 .
- the primary inputs may also be isolated from corrupting the self test signature during the self-test mode and provide good test coverage for primary inputs related logic.
- FIG. 5 is a schematic diagram of a dual mode LFSR 46 according to one embodiment of the invention.
- the LFSR 46 includes a cascade of flip flops 70 a - 70 n which functions as regular flip-flops or pseudo-random pattern generators depending on the mode selected via multiplexers 72 a - 72 n .
- the selection of a test mode allows the LFSR to generate pseudo-random test patterns for primary inputs related logic.
- these dual mode LFSRs are not included in the CSTP.
- the FPGA BIST mechanism also improves signature quality via multiple signature output taps 48 a , 48 b , 48 c , and shortened path L.
- a signature tap Sx where x is numbered from 0 to n, is substantially evenly spaced between the CSTP registers.
- the following formula may be used to select a CSTP register to which a signature tap Sx is to be inserted:
- a signature output tap is selected every kth CSTP register and used for a particular Sx.
- the signature is formed by taking m outputs from each tap to construct a signature of length n*m, where n is the number of signature taps at the end of a test session. For example, if the circuit in FIG. 4 has 250 CSTP registers, the spacing of selected CSTP registers corresponding to S 0 and S 1 , and the spacing of selected CSTP registers corresponding to S 1 and S 2 , is 83, and the spacing of selected registers corresponding to S 2 and S 0 is 84. Thus, the worst case L is 84 clock cycles rather than 250 clock cycles as it would be with only one signature tap.
- parameter m for each tap Sx may be a predetermined number of bits, such as, for example, 8, 16, or 32 bits.
- the length n of the signature and the number of bits m for each Sx tap are input by a user during design of the FPGA.
- the multiple output taps help improve signature aliasing (computed based on Formula 2 above), because errors that happen near the end of test session have a better chance to be observed given a shorter path L.
- One embodiment of the present invention also provides practical considerations for on-chip hard core and multiple clock domain issues.
- Most of today's FPGAs provide block random access memories (RAM) and digital signal processors (DSP) (e.g. Multiply-and-Accumulate).
- Some FPGAs such as those from Altera and Xilinx also provide processor and Ethernet cores as part of the FPGA fabric.
- block RAMs in FPGAs can be initialized with a configuration file. These block RAMs (which appear as non-CSTP registers) and DSPs (which appear as combinational logic and non-CSTP registers), can be tested with a CSTP mechanism as well.
- test coverage on block RAM and DSP will generally not be in the 90s % range due to the large state space and limited test time.
- inputs and outputs of the block RAM and DSP are fed through a register to improve test coverage of other logic directly connected to the RAM/DSP.
- a design contains hard IPs with non-deterministic power up states (e.g. PowerPC cores and Ethernet MAC cores)
- un-testable hard cores are isolated from the CSTP test structure as shown in FIG. 6 .
- the BIST scheme handles multiple clock domains—both synchronous and asynchronous.
- FIG. 7 is a schematic diagram of an FPGA with multiple clock domains 60 a - 60 c (collectively referred to as 60 ).
- each clock domain 60 includes its own CSTP structure and one or more signature taps, similar to the one illustrated with respect to FIG. 4 .
- Clock domain 60 a includes S 0 and S 1 signature taps
- clock domain 60 b includes S 0 -Sm signature taps
- clock domain 60 c has S 0 -Sn signature taps.
- logic or interconnect between clock domains that are synchronous are allowed to be included in the test path.
- clock domains 60 a and 60 b are synchronous.
- CL 64 and 66 are allowed to be included in the CSTP and hence, may be tested.
- clock domains 60 a and 60 c are asynchronous.
- the input registers 62 , 68 in respectively clock domain 60 a and clock domain 60 c which are used to synchronize the input from respectively clock domain 60 c and clock domain 60 a are each replaced with a dual mode LFSR which is similar to the LFSR of FIG. 5 .
- the LFSR generates pseudo-random test patterns during the self test mode and thus, help isolate the inputs to the clock domains 60 a and 60 c from corrupting test signature during the self test.
- FIG. 8 illustrates an FPGA design flow according to one embodiment of the invention.
- the design may be implemented by an electronic design automation tool which is executed by a processor in a computer device, based on computer program instructions stored in the computer's memory.
- step 100 the processor invokes the design tool to execute a register transfer level (RTL) design 100 where the circuit's behavior and operation in a functional, non-testing mode, are defined in terms of the flow of signals between hardware registers and logical operations performed on those signals.
- RTL register transfer level
- step 102 the processor invokes the design tool to verify that the logic design conforms to a given specification.
- step 104 the processor invokes the design tool for logic synthesis where an abstract form of desired circuit behavior in the functional, non-testing mode is turned into a design implementation in terms of logic gates.
- step 106 the processor invokes the design tool for designing an improved CSTP BIST mechanism.
- the design of the improved CSTP BIST mechanism occurs after the design of the operation and behavior of the circuit in the functional, non-testing mode, and after the specific logic gates for performing the designed operation and behavior have been concluded, such as, for example, after logic synthesis step 104 .
- the design of the improved CSTP BIST mechanism may occur at other steps of the overall design of the FPGA as will be appreciated by a person of skill in the art.
- step 108 the processor invokes the design tool for placement and routing to assign exact locations for various circuit components within the chip's core area.
- An FPGA may then be manufactured based on the generated design.
- the step of designing an improved CSTP BIST mechanism includes invoking the design tool for executing a CSTP insertion algorithm in step 110 .
- the processor invokes the design tool in step 112 for conducting BIST simulation.
- the design tool performs logic simulation in both a functional mode and a BIST mode to verity that the insertion of the CSTP was done correctly. Results of the simulation are output to a user of the tool via a display screen or other output devices coupled to the computer device.
- BIST simulation generates a report that identifies the CSTP registers that have been toggled for inclusion in the test path.
- Toggle reports may be generated from logic simulation tools such as those from Mentor Graphics' ModelSim, Cadence Incisive, and Synopsys' VCS.
- the processor further generates toggle statistics and compares the toggle statistics to the input threshold by the user. If the toggle statistics are below the input threshold, the CSTP registers are reordered and another report is run. According to one embodiment, this is handled the same way as in step 114 described below.
- Register adjacency in step 114 is the special case when toggle rate is O. This procedure continues until a desired toggle ratio as identified by the input threshold is achieved. According to one embodiment, a 15% toggle ratio may be entered, and indicates toggling of every other register in the FPGA. However, a 20%-25% toggle ratio may also be entered by the user.
- step 114 the processor further evaluates the toggle report to verify that no register adjacency problems exist. If adjacent registers have been identified, the processor executes a register adjacency removal algorithm. This step helps maximize the effectiveness of pattern generation and result in higher fault coverage.
- the adjacency removal algorithm solves the adjacency problem by either removing the identified CSTP register in the circular test path, or by reordering the identified CSTP registers so that no two CSTP registers are adjacent to one another in the test path.
- R i , CSTP register i and R i ⁇ 1 is the preceding CSTP register Q i , output of CSTP register i D i , functional input to CSTP register i Cone_of_logic ( D i ) is a function to find group of register output that contribute to logic value of D i .
- FIG. 9 is a more detailed flow diagram of the CSTP insertion algorithm executed by the processor in step 110 , according to one embodiment of the invention.
- the processor designs the test path so that primary outputs are isolated during a self-test to prevent such outputs from corrupting system behavior during the test, and to serve as stimulus to the primary inputs during the test.
- the processor identifies all non-register primary outputs (i.e., outputs that are not captured by a register), and inserts into the FPGA design a shadow register, such as, for example, shadow register 40 of FIG. 4 , for each identified non-register primary output.
- the non-register outputs are then captured by the inserted shadow registers which generate pseudo-random test patterns during a test mode.
- the processor further configures all primary outputs (registered or non-registered) in the design to transition to high impedance states with proper pull-up/pull-down resistors during a self-test mode as will be understood by a person of skill in the art.
- the processor designs the test path so that primary inputs are also isolated during the self-test to improve test coverage on the primary inputs side and to remove the dependency of system inputs.
- the processor inserts an isolation logic device into the FPGA design, such as for example, multiplexer 49 , and inserts a feedback path from the shadow registers and primary output registers to the multiplexer. If the processor detects that there are more inputs than outputs, the extra input registers in the FPGA design that are not triggered by a shadow register are each replaced with a dual mode LFSR such as, for example, LFSR 46 of FIG. 5 .
- the processor executes a CSTP register selection algorithm for selecting the registers to be included in the test path.
- all primary output registers such as, for example, primary output register 42 , are selected for including in the test path.
- the processor further receives a number of inputs to logic cones above which the processor will replace a normal register in the design with a CSTP register. This allows trade-off between test coverage and design overhead.
- the input number is restricted to be at least 2 to help remove the register adjacency problem that may be introduced by flip flops that may be arranged in series, such as, for example, in shift registers. By restricting the input to at least two, the probability of two highly correlated CSTP registers back to back is dramatically reduced.
- the processor identifies and isolates the input registers of an asynchronous clock domain, such as, for example, registers 62 and 68 of FIG. 7 .
- the clock domain information is provided by a user of the design tool as an input parameter.
- the isolating of an asynchronous clock domain includes replacing the input registers of the asynchronous clock domain with a dual mode LFSR, such as, for example, the LFSR of FIG. 5 .
- step 208 a determination is made as to whether there are any un-testable hard cores in the design that need to be isolated from the test path. If the answer is YES, such hard cores, such as, for example, hard core 50 of FIG. 6 , are isolated from the test path in step 210 .
- the processor adds to the FPGA design, multiplexers 51 , 52 which feed the output of registers or combinatorial logic which would be fed to the hard core during a functional mode, to combinatorial logic and registers outside of the hard core during the test mode.
- the CSTP is connected in a loop by inserting paths between the CSTP registers so that the output of a particular CSTP register is an input of a next CSTP register on the circular path.
- the processor considers the clock domain information provided by the user of the tool. According to one embodiment, each clock domain forms a separate loop and hence, a separate test path.
- the processor identifies multiple signature output taps to improve signature aliasing probability.
- the user of the design tool provides the number of signature output taps to be created.
- the signature output taps are then evenly distributed amongst the various clock domains in proportion to the number of toggled CSTP registers in each clock domain. For example, if the number of signature output taps is four, and the FPGA has two clock domains, with one clock domain having 15 CSTP registers and the other clock domain having five CSTP registers, the processor inserts three of the four output taps in the first clock domain, and one output tap in the second clock domain. Furthermore, the spacing of the output taps are selected to be evenly spaced.
- every fifth CSTP register in the first clock domain is selected for inserting a signature output tap.
- the number of clock cycles between S 0 and S 1 , between S 1 and S 2 , and between S 2 and S 0 , in the first clock domain is five.
- the inserting of a signature output tap includes inserting an output path from the selected CSTP register into the signature registers 24 for comparison.
- step 216 the processor inserts into the FPGA design a BIST controller for controlling a self-test mode and signature registers for receiving parallel test response values from the signature output taps and comparing those response values to fault-free values in the signature registers.
- FIG. 10 is a flow diagram of a BIST process executed by an FPGA according to one embodiment of the invention.
- the BIST controller 22 places the FPGA in test mode by transmitting a test signal over bus 34 .
- step 302 the core logic 26 with the CSTP generates a test pattern at each clock cycle while simultaneously performing test response compaction.
- the CSTP is initialized by placing all registers into a known state. Each CSTP register generates a test pattern during each clock cycle while at the same time outputting a compressed test response that is used as input to a next CSTP register in the path. Test pattern and response compaction proceeds for a total number of predetermined clock cycles.
- the core logic 26 outputs a compacted test response from each of the multiple signature output taps, in parallel, as test values that together form a signature, and which are compared against stored fault-free values in the signature registers 24 in step 304 .
- step 306 a determination is made as to whether the output test values match the pre-computed fault-free values. If the answer is YES, the FPGA transitions to a functional mode in step 308 where the intended functions of the FPGA are executed.
- the BIST controller thus outputs an error signal in step 310 which may be displayed as an error message on an output device.
- the faulty FPGA may be repaired or replaced in response to the error message.
Abstract
Description
- This invention relates generally to circuit design and testing, and more particularly to field programmable gate arrays (FPGAs) with built-in self-test mechanisms.
- Field programmable gate arrays (FPGAs) have evolved significantly in capacity, complexity, and speed within the last decade. Today, high-end FPGAs offer design density, speed, and IPs that can rival most high performance application-specific integrated circuit (ASIC) solutions. As a result, FPGAs have become not only a main vehicle for rapid prototyping of complex digital systems, but also have become a main component in many high-performance low-to-medium production volume systems. In the military and aerospace field in particular, there has been a steady increase of FPGA design solutions in applications that traditionally were dominated by ASICs. However, main stream FPGA designs in such mission critical systems do not implement a built-in self test (BIST) scheme that provides high fault coverage during system start-up tests. Without a high fault coverage BIST, there is a potential for system failure on the field that can result in human loss and damage to valuable resources.
- Current FGPA BIST solutions exist, and they may be categorized as offline and online testing. Online testing provides the advance to testing the FPGA while it is performing system functions. Current online and offline FPGA BIST schemes generally require multiple programming files, are technology dependent, and impose an undue burden on design. For example, various offline testing schemes have been proposed to test FPGA programmable logic blocks and interconnects. A main focus of these offline schemes is to detect either faults in the configurable logic block or faults in the configurable interconnects. Generally, these schemes focus on programming part of the FPGA resources as test instrument logic—Test Pattern Generator (TPG) and Output Response Analyzer (ORA)—to test other FPGA resources. These approaches generally require multiple programming files to exhaustively test all possible faults in the FPGA logic fabrics in addition to the functional programming file. These schemes also detect faults that may not even affect the functionality of the design.
- Structures using TPG and ORA are also technology dependent. Porting FPGA BIST from device families to other device families becomes a non-trivial job. Thus, although offline schemes may be well suited for FPGA device manufacture testing, they are not a good candidate for system level and field tests.
- Existing online FPGA BIST schemes include concepts such as roving self-testing areas (STARs). Such online schemes generally require an intelligent controller and multiple programming files to perform dynamic partial reconfiguration of the device during normal operation. Although the STARs concept may be a good choice for fault-tolerance partial reconfiguration FPGA design, it is an overkill for FPGA start-up BIST applications.
- A self-checking logic design approach for FPGA design is also known. This approach uses k-input functional cells that generate complementary outputs in fault free conditions, and a 2-rail checker cell to dynamically detect faults in the configurable logic blocks. This approach calls for a new logic synthesis algorithms specifically for this application. It also incurs up to 50% overhead which prevents it from being used as a high coverage startup BIST mechanism.
- Accordingly, what is desired is the adoption of BIST in main stream FPGA design without requiring a full scan design as in ASIC BIST which is expensive for FPGA implementation. FPGA BIST should also be technology independent. In other words, FPGA BIST should be able to be mapped to different FPGA families from different vendors without changing the structure. Lastly, FPGA BIST should impose a minimum burden on the designer and at the same time provide high structural and delay fault coverage.
- According to one embodiment, the present invention is directed to a method and apparatus for designing a circuit with a built-in self test mechanism. The apparatus is a computer device including a processor and a memory coupled to the processor that stores program instructions for executing by the processor. According to one embodiment, the computer device designs operation and behavior of the circuit in a non-testing mode. The computer device also identifies specific logic gates for performing the designed operation and behavior of the circuit in the non-testing mode. The computer device also designs a test path for the circuit for conducting a self-test during a testing mode. The design is configured to isolate primary inputs and outputs during the testing mode. The designing includes selecting registers of the circuit for forming the test path, identifying a plurality of the registers in the test path for outputting test response values, inserting an output tap at each of identified registers in the test path, and connecting the selected registers in a circular loop, wherein an input to a particular one of the selected registers is an output of a preceding one of the selected registers. According to one embodiment, the computer device performs logic simulation of the circuit and generates an output in response to the logic simulation.
- According to one embodiment of the invention, the designing the test path further includes identifying a non-register primary output of the circuit, inserting a register into the circuit design for capturing the non-register primary output, and selecting the inserted register for being included in the test path.
- According to one embodiment of the invention, the designing the test path further includes inserting a logic device for receiving a register primary input, and inserting a path from the inserted register to the logic device for selecting by the logic device a test pattern generated by the inserted register during the self-test mode.
- According to one embodiment of the invention, the designing the test path further includes identifying a primary input register, and replacing the primary input register with a linear feedback shift register, wherein the linear feedback shift register generates a test pattern during the self-test mode.
- According to one embodiment of the invention, the designing the test path further includes identifying an input register to an asynchronous clock domain, and replacing the input register to the asynchronous clock domain with a linear feedback shift register, wherein the linear feedback shift register generates a test pattern during the self-test mode.
- According to one embodiment of the invention, the designing the test path further includes identifying an un-testable hard core of the circuit, and isolating the un-testable hard core from the test path.
- According to one embodiment of the invention, the registers in the circular loop belong to more than one clock domain.
- According to one embodiment of the invention, the output tap is substantially evenly spaced among the registers in the circular loop.
- According to one embodiment of the invention, the registers in the test path generate test patterns during the self-test mode and provide test response values via the output taps. The test response values are compared against fault-free values. The circuit outputs an error in response to a lack of match of the test response values and the fault-free values.
- According to one embodiment of the invention, the identifying the plurality of registers in the test path includes identifying registers with at least a cone-of-logic of two. In other words, there are at least 2 logic values from outputs of other flip-flops/registers contributing to the input of said register.
- According to one embodiment of the invention, at least one of the plurality of registers in the test path are reordered or removed in response to the performed logic simulation.
- The FPGA BIST according to one embodiment of the present invention is configured to be simple and low cost and relatively easy to be automated into the FPGA design process. It imposes minimum burden on FPGA designer and as the same time provides high structural and delay fault coverage. Having high fault coverage BIST in FPGA designs can also improve system failure diagnostics and reduce manufacturing and field test costs.
- These and other features, aspects and advantages of the present invention will be more fully understood when considered with respect to the following detailed description, appended claims, and accompanying drawings. Of course, the actual scope of the invention is defined by the appended claims.
-
FIG. 1 is a schematic diagram of a circular test path for implementing a traditional CSTP technique; -
FIG. 2 is a schematic diagram of a CSTP register that may be used in various embodiments of the present invention; -
FIG. 3 is a schematic diagram of an FPGA with a BIST architecture according one embodiment of the invention; -
FIG. 4 is a schematic diagram of core logic of the FPGA with BIST capabilities according to one embodiment of the invention; -
FIG. 5 is a schematic diagram of a dual mode LFSR according to one embodiment of the invention; -
FIG. 6 is a schematic diagram of an un-testable hard core that is isolated from a CSTP test structure according to one embodiment of the invention; -
FIG. 7 is a schematic diagram of an FPGA with multiple clock domains according to one embodiment of the invention; -
FIG. 8 illustrates an FPGA design flow according to one embodiment of the invention; -
FIG. 9 is a more detailed flow diagram of a CSTP insertion algorithm according to one embodiment of the invention; and -
FIG. 10 is a flow diagram of a BIST process executed by an FPGA according to one embodiment of the invention. - Embodiments of the present invention are directed to a simple, low cost, and high fault coverage logic BIST scheme for FPGA design. The FPGA BIST scheme may be used for mission critical systems in the field where a start-up test with high fault-coverage is often necessary in ensuring proper system functionality. Unlike existing FPGA BIST schemes, the FPGA BIST scheme according to embodiments of the present invention is technology independent, uses one programming file, and has minimum impact to the FPGA development process.
- In general terms, the FPGA BIST scheme according to embodiments of the present invention makes use of an extension of a circular self test path (CSTP) structure disclosed in A. Krasniewksi, S. Pilarski, “Circular Self-Test Path: A Low-Cost BIST Technique,” IEEE Proceedings, 24th ACM/IEEE Design Automation Conference, 1987, the content of which is incorporated herein by reference. The CSTP technique is a technique for designing self-testing integrated circuits. Synchronous sequential circuits are constructed from combinational logic blocks (CL) and edge triggered registers. The CSTP technique includes linking selected registers of the circuit into one long circular register (feedback shift register) which serves simultaneously for generating pseudo-random test patterns and test response compaction while in a self-test mode. Test response compaction generates a signature which can then be analyzed for determining if the tested circuit is faulty or fault-free.
-
FIG. 1 is a schematic diagram of a circular test path for implementing a traditional CSTP technique. The inclusion of a CSTP into a synchronous sequential circuit generally includes three steps. First, registers to be included in the CSTP are selected. The decision on which registers are to be included is based on test coverage requirements and hardware overhead. Second, the selected registers are replaced with CSTP registers. The registers that are not part of the CSTP operate in their normal mode. Finally, the CSTP registers are connected into a circular chain. Assuming all the registers in the synchronous sequential circuits can be preset to deterministic values, CSTP registers can act as both a test pattern generator and signature analyzer. - The traditional CSTP technique discussed in the above-referenced paper by Krasniewski does not address the problem of primary inputs and primary outputs that may corrupt system behavior during a test. Furthermore, in order to determine whether a circuit is faulty or not, a final step of response evaluation should be performed by comparing the sequence of output from selected CSTP cells that form a signature, against pre-computed fault-free values. There is no disclosure in Krasniewski on how to extract the signature using the CSTP technique without overwhelming the circuit while at the same time improving signature aliasing probability. Krasniewski also does not address register adjacency problems nor problems due to the existence of multiple clock domains and un-testable cores.
- Embodiments of the present invention extend the traditional CSTP to FPGA design to provide an FPGA BIST scheme that includes several enhancements to the traditional CSTP BIST architecture. Specifically, the FPGA BIST scheme according to various embodiments of the present invention includes isolating primary inputs during a self-test to improve test coverage on the primary inputs side and to remove the dependency of system inputs. Primary outputs are also isolated and are configured to stay at default states during the entire test to ensure no undesired effects to other circuits within the system due to activities on the primary outputs. In addition, multiple signature output taps are inserted at CSTP registers throughout the test path to help improve signature aliasing probability.
- Other improvements provided by the FPGA BIST is the inclusion of an algorithm for handling multiple clock domains that allow full chip implementation of the FPGA BIST. Furthermore, enhanced CSTP register selection algorithms prevent register adjacency problems and improve test hardware costs. The FPGA BIST scheme also helps to eliminate register adjacency after the CSTP registers have been inserted into the design by rearranging or removing certain CSTP registers.
-
FIG. 2 is a schematic diagram of a CSTP register that may be used in the various embodiments of the present invention. Each CSTP register (also referred to as a self-test register or self-test memory element) includes a logic device such as, for example, atest multiplexer 10 that selects between a self-test mode and a normal operation mode. During the self-test mode, anXOR gate 12 captures the XOR value of the functional input and the contents of a previous CSTP register thereby providing data compaction functionality. The XOR value is captured via memory element 14 (e.g. flip-flop) for feeding to a next CSTP register. - As a person of skill in the art should appreciate, the use of the CSTP BIST mechanism offers low circuit overhead and implementation cost. Given the simplicity of the self-test structure, it can be easily included in the design automation flow. For the test to be valid and deterministic, all registers have to be initialized to known values. This requirement is well suited for FPGA design because all register resources already come with this functionality. The true hardware overhead is associated with the
text multiplexer 10 andXOR gate 12 for every instantiated CSTP register. The timing penalty for the functional path is limited to the extra delay introduced by thetest multiplexer 10. In addition to the traditional stuck-at fault detection for both configurable logic blocks and interconnect fabrics, a CSTP technique also can detect marginal defects due to silicon fatigue over time that results in timing failure. - The quality of testing provided by a BIST implementation is generally determined by the effectiveness of random test pattern generation, the effectiveness of test response compaction, and fault coverage. The effectiveness of random pattern generation can be expressed as a fraction of all possible input patterns that are applied to the inputs of the circuit under test (CUT) during a test session. The quality of test response compaction is estimated by the probability of signature aliasing, i.e., the probability that an error response sequence produces a fault-free signature. CSTP in general does not belong to the class of maximal length LFSR (linear feedback shift registers) and is subject to an effect called limit cycling, which occurs when only a subset of all possible states is generated by the CSTP registers. However, for any CUT or any CL in
FIG. 1 , generally only a small number of CSTP registers contribute to testing that CUT. The effectiveness of the test pattern generation in this case should be judged by the number of different states that occur during a test session for that section of CSTP registers, not the entire state-space of CSTP registers. The effectiveness of a CSTP may be calculated via equations (1)-(3) below. It should be noted that the results of this analysis are valid if the following assumptions are true. -
- All primary input registers or shift registers are not included in the CSTP
- There is no register adjacency in the CSTP. According to one embodiment, register adjacency means that the functional input to the CSTP register is “highly correlated” with the output of the preceding CSTP register. In the worst case, this may mean that the output of that CSTP register is always 0 or 1.
- Given the following notations:
- k: number of inputs to CUT or any CL in
FIG. 4 - T: number of clock cycles of a test session
- ESC: expected state coverage for k-input CUT
- P: total length of CSTP
- S: length of the signature
- SAP: signature aliasing probability
- EFC: expected fault coverage
- Estimated performance of CSTP:
-
- A typical design example provides an idea of the performance numbers. Some of the high end FPGAs today have 200K flip-flops. A typical 50% utilization design will contain 100K flip-flops. More than 95% of the combinational logic has less than 24 inputs is a reasonable assumption for typical design. If we choose S to be 256, T to be 8*224 clock cycles, and clock period of 50 MHz, the estimated performance for this CSTP self-test is:
-
Test run time=8*224*20 ns=2.68 seconds -
Estimated fault coverage (EFC)=99.97% -
Signature aliasing probability (SAP)=8.64E-78 -
FIG. 3 is a schematic diagram of anFPGA 20 with a BIST architecture according one embodiment of the invention. The FPGA includes aBIST controller 22 which controls the sequence of BIST pattern generation and extraction. TheBIST controller 22 can be configured to automatically place the FPGA in a self-test mode by transmitting a test signal viabus 34 upon power-up of the FPGA while in use in the field. TheBIST controller 22 may also perform the self-test upon a command received via aBIST test bus 28. Thus, an FPGA in use in the field may be routinely tested for detecting defects at startup or at any other selected test periods, to ensure mission critical system functionality on the field. - A
core logic 26 of the FPGA is the circuit under test (CUT) and receivesprimary inputs 30 and generatesprimary outputs 32. A primary input is an external input received by the FPGA from outside the FPGA, and a primary output is an output that is transmitted outside of the FPGA. During a self-test mode, the FPGA also generates a signature S=S0, S1 . . . Sn for evaluating against fault-free values stored in signature registers 24. -
FIG. 4 is a schematic diagram of thecore logic 26 of the FPGA with BIST capabilities according to one embodiment of the invention. Thecore logic 26 includes an enhanced primary inputs/outputs structure for the CSTP. Specifically, shadow registers are added for all primary outputs that are not captured by a register (also referred to as non-registered outputs) to improve test coverage. According to one embodiment, a shadow register is a CSTP register similar to the CSTP register ofFIG. 2 , that is positioned to receive/capture a primary non-register output (i.e. a primary output that is not already captured by a register). In the example ofFIG. 4 , Register 7 is ashadow register 40 that is created forprimary output 32 b. The shadow registers 40 and primary output registers 42 are made part of the CSTP. Theshadow register 40 together with a primary registeredoutput 32 a are used as test patterns to the primarynon-registered inputs 44 during a self-test via atest multiplexer 49. - All primary outputs are logic conditioned with self-test mode to be in user selected default states to prevent outputs from corrupting system behavior. This may be done with tri-state logic and pull-up/pull-down resistors which are part of the FPGA I/O resources.
- If there are more primary inputs than outputs in the FPGA, the primary input registers (i.e. registers that receive a primary input) that do not get a test pattern (also referred to as stimulus) from an output shadow register are replaced with a dual mode linear feedback shift register (LFSR) 46. According to one embodiment of the invention, the
dual mode LFSR 46 serves as a regular flip-flop in a functional (non-testing) mode, and as a pseudo-random pattern generator during a self-test mode. The pattern that is generated by thedual mode LFSR 46 is provided to aCSTP register 47. In this manner the primary inputs may also be isolated from corrupting the self test signature during the self-test mode and provide good test coverage for primary inputs related logic. -
FIG. 5 is a schematic diagram of adual mode LFSR 46 according to one embodiment of the invention. TheLFSR 46 includes a cascade of flip flops 70 a-70 n which functions as regular flip-flops or pseudo-random pattern generators depending on the mode selected via multiplexers 72 a-72 n. The selection of a test mode allows the LFSR to generate pseudo-random test patterns for primary inputs related logic. According to one embodiment of the invention, these dual mode LFSRs are not included in the CSTP.] - According to one embodiment of the invention, the FPGA BIST mechanism also improves signature quality via multiple signature output taps 48 a, 48 b, 48 c, and shortened path L. Path L is the number of clock cycles for an error event to affect a signature S, where S=S0, S1, . . . Sn. According to one embodiment of the invention, a signature tap Sx, where x is numbered from 0 to n, is substantially evenly spaced between the CSTP registers. In this regard, the following formula may be used to select a CSTP register to which a signature tap Sx is to be inserted:
-
k=Total number of CSTP registers/number of signature taps - According to the above formula, a signature output tap is selected every kth CSTP register and used for a particular Sx. The signature is formed by taking m outputs from each tap to construct a signature of length n*m, where n is the number of signature taps at the end of a test session. For example, if the circuit in
FIG. 4 has 250 CSTP registers, the spacing of selected CSTP registers corresponding to S0 and S1, and the spacing of selected CSTP registers corresponding to S1 and S2, is 83, and the spacing of selected registers corresponding to S2 and S0 is 84. Thus, the worst case L is 84 clock cycles rather than 250 clock cycles as it would be with only one signature tap. Furthermore, parameter m for each tap Sx may be a predetermined number of bits, such as, for example, 8, 16, or 32 bits. According to one embodiment of the invention, the length n of the signature and the number of bits m for each Sx tap are input by a user during design of the FPGA. The multiple output taps help improve signature aliasing (computed based onFormula 2 above), because errors that happen near the end of test session have a better chance to be observed given a shorter path L. - One embodiment of the present invention also provides practical considerations for on-chip hard core and multiple clock domain issues. Most of today's FPGAs provide block random access memories (RAM) and digital signal processors (DSP) (e.g. Multiply-and-Accumulate). Some FPGAs such as those from Altera and Xilinx also provide processor and Ethernet cores as part of the FPGA fabric. Unlike a RAM in an ASICs, block RAMs in FPGAs can be initialized with a configuration file. These block RAMs (which appear as non-CSTP registers) and DSPs (which appear as combinational logic and non-CSTP registers), can be tested with a CSTP mechanism as well. The test coverage on block RAM and DSP will generally not be in the 90s % range due to the large state space and limited test time. Thus, according to one embodiment of the invention, inputs and outputs of the block RAM and DSP are fed through a register to improve test coverage of other logic directly connected to the RAM/DSP. Furthermore, when a design contains hard IPs with non-deterministic power up states (e.g. PowerPC cores and Ethernet MAC cores), such un-testable hard cores are isolated from the CSTP test structure as shown in
FIG. 6 . Specifically with reference toFIG. 6 , given an un-testablehard core 50, the output of register 53 is provided to acombinatorial logic 54 viamultiplexer 51, and the output ofcombinatorial logic 56 is fed to register 58 viamultiplexer 52, during a self-test session. - In addition to the above, it is very unlikely to find an FPGA chip design that contains only one clock domain. Thus, the BIST scheme according to one embodiment of the invention handles multiple clock domains—both synchronous and asynchronous.
-
FIG. 7 is a schematic diagram of an FPGA with multiple clock domains 60 a-60 c (collectively referred to as 60). According to one embodiment of the invention, each clock domain 60 includes its own CSTP structure and one or more signature taps, similar to the one illustrated with respect toFIG. 4 .Clock domain 60 a includes S0 and S1 signature taps,clock domain 60 b includes S0-Sm signature taps, andclock domain 60 c has S0-Sn signature taps. - According to one embodiment, logic or interconnect between clock domains that are synchronous are allowed to be included in the test path. In the illustrated example of
FIG. 7 ,clock domains CL - According to one embodiment, logic or interconnect between clock domains that are asynchronous are not tested. In the illustrated example of
FIG. 7 ,clock domains clock domain 60 a andclock domain 60 c which are used to synchronize the input from respectivelyclock domain 60 c andclock domain 60 a, are each replaced with a dual mode LFSR which is similar to the LFSR ofFIG. 5 . The LFSR generates pseudo-random test patterns during the self test mode and thus, help isolate the inputs to theclock domains -
FIG. 8 illustrates an FPGA design flow according to one embodiment of the invention. The design may be implemented by an electronic design automation tool which is executed by a processor in a computer device, based on computer program instructions stored in the computer's memory. - In
step 100, the processor invokes the design tool to execute a register transfer level (RTL)design 100 where the circuit's behavior and operation in a functional, non-testing mode, are defined in terms of the flow of signals between hardware registers and logical operations performed on those signals. - In
step 102, the processor invokes the design tool to verify that the logic design conforms to a given specification. - In
step 104, the processor invokes the design tool for logic synthesis where an abstract form of desired circuit behavior in the functional, non-testing mode is turned into a design implementation in terms of logic gates. - A person of skill in the art will understand that steps 100-104 very much follow steps in a conventional design flow. Unique for BIST design flow is in
step 106 where the processor invokes the design tool for designing an improved CSTP BIST mechanism. According to one embodiment of the invention, the design of the improved CSTP BIST mechanism occurs after the design of the operation and behavior of the circuit in the functional, non-testing mode, and after the specific logic gates for performing the designed operation and behavior have been concluded, such as, for example, afterlogic synthesis step 104. However, a person of skill in the art should recognize that the design of the improved CSTP BIST mechanism may occur at other steps of the overall design of the FPGA as will be appreciated by a person of skill in the art. - In
step 108, the processor invokes the design tool for placement and routing to assign exact locations for various circuit components within the chip's core area. An FPGA may then be manufactured based on the generated design. - Referring again to step 106 for the design flow process, the step of designing an improved CSTP BIST mechanism includes invoking the design tool for executing a CSTP insertion algorithm in
step 110. After the CSTP has been inserted into the design, the processor invokes the design tool instep 112 for conducting BIST simulation. During BIST simulation, the design tool performs logic simulation in both a functional mode and a BIST mode to verity that the insertion of the CSTP was done correctly. Results of the simulation are output to a user of the tool via a display screen or other output devices coupled to the computer device. - According to one embodiment of the invention, BIST simulation generates a report that identifies the CSTP registers that have been toggled for inclusion in the test path. Toggle reports may be generated from logic simulation tools such as those from Mentor Graphics' ModelSim, Cadence Incisive, and Synopsys' VCS. The processor further generates toggle statistics and compares the toggle statistics to the input threshold by the user. If the toggle statistics are below the input threshold, the CSTP registers are reordered and another report is run. According to one embodiment, this is handled the same way as in
step 114 described below. Register adjacency instep 114 is the special case when toggle rate is O. This procedure continues until a desired toggle ratio as identified by the input threshold is achieved. According to one embodiment, a 15% toggle ratio may be entered, and indicates toggling of every other register in the FPGA. However, a 20%-25% toggle ratio may also be entered by the user. - In
step 114, the processor further evaluates the toggle report to verify that no register adjacency problems exist. If adjacent registers have been identified, the processor executes a register adjacency removal algorithm. This step helps maximize the effectiveness of pattern generation and result in higher fault coverage. In this regard, the adjacency removal algorithm solves the adjacency problem by either removing the identified CSTP register in the circular test path, or by reordering the identified CSTP registers so that no two CSTP registers are adjacent to one another in the test path. Below is a pseudocode of an adjacency removal algorithm according to one embodiment of the invention. -
Denote: Ri, CSTP register i and Ri−1 is the preceding CSTP register Qi, output of CSTP register i Di, functional input to CSTP register i Cone_of_logic ( Di ) is a function to find group of register output that contribute to logic value of Di. This function returns a pointer to a data structure Ci that have number of nodes (register output), and an array of node identifiers Diff_of_cone (Ci, Cj) is a function to compare two cone of logic data structure and returns the number of nodes that are not common between Ci and Cj Swap (Ri , Rj) is a function to swap two CSTP register Ri and Rj Remove ( Ri ) is a function to remove Ri from CSTP registers For each Ri with Qi toggle rate < threshold Ci = Cone_of_logic (Di) Ci−1 = Cone_of_logic (Di−1) Ni = Diff_of_cone (Ci, Ci−1) For (j = i−2; j>0; j−− ) //loop thru all the preceding R until reaching itself Cj = Cone_of_logic (Dj) Nj = Diff_of_cone (Ci, Cj) Cj−1 = Cone_of_logic (Dj−1) Nj−1 = Diff_of_cone (Ci, Cj−1) If (Nj > Ni && Nj−1 > Ni) Swap (Ri , Rj) break If (j == 0) Remove ( Ri) //reaching itself and could not find optimum place -
FIG. 9 is a more detailed flow diagram of the CSTP insertion algorithm executed by the processor instep 110, according to one embodiment of the invention. Instep 200, the processor designs the test path so that primary outputs are isolated during a self-test to prevent such outputs from corrupting system behavior during the test, and to serve as stimulus to the primary inputs during the test. In this regard, the processor identifies all non-register primary outputs (i.e., outputs that are not captured by a register), and inserts into the FPGA design a shadow register, such as, for example, shadow register 40 ofFIG. 4 , for each identified non-register primary output. The non-register outputs are then captured by the inserted shadow registers which generate pseudo-random test patterns during a test mode. The processor further configures all primary outputs (registered or non-registered) in the design to transition to high impedance states with proper pull-up/pull-down resistors during a self-test mode as will be understood by a person of skill in the art. - In
step 202, the processor designs the test path so that primary inputs are also isolated during the self-test to improve test coverage on the primary inputs side and to remove the dependency of system inputs. In this regard, the processor inserts an isolation logic device into the FPGA design, such as for example,multiplexer 49, and inserts a feedback path from the shadow registers and primary output registers to the multiplexer. If the processor detects that there are more inputs than outputs, the extra input registers in the FPGA design that are not triggered by a shadow register are each replaced with a dual mode LFSR such as, for example,LFSR 46 ofFIG. 5 . - In
step 204, the processor executes a CSTP register selection algorithm for selecting the registers to be included in the test path. According to one embodiment, all primary output registers, such as, for example,primary output register 42, are selected for including in the test path. The processor further receives a number of inputs to logic cones above which the processor will replace a normal register in the design with a CSTP register. This allows trade-off between test coverage and design overhead. According to one embodiment of the invention, the input number is restricted to be at least 2 to help remove the register adjacency problem that may be introduced by flip flops that may be arranged in series, such as, for example, in shift registers. By restricting the input to at least two, the probability of two highly correlated CSTP registers back to back is dramatically reduced. - In
step 206, the processor identifies and isolates the input registers of an asynchronous clock domain, such as, for example, registers 62 and 68 ofFIG. 7 . According to one embodiment of the invention, the clock domain information is provided by a user of the design tool as an input parameter. According to one embodiment, the isolating of an asynchronous clock domain includes replacing the input registers of the asynchronous clock domain with a dual mode LFSR, such as, for example, the LFSR ofFIG. 5 . - In
step 208, a determination is made as to whether there are any un-testable hard cores in the design that need to be isolated from the test path. If the answer is YES, such hard cores, such as, for example,hard core 50 ofFIG. 6 , are isolated from the test path instep 210. In this regard, the processor adds to the FPGA design,multiplexers - In
step 212, the CSTP is connected in a loop by inserting paths between the CSTP registers so that the output of a particular CSTP register is an input of a next CSTP register on the circular path. In generating the loop, the processor considers the clock domain information provided by the user of the tool. According to one embodiment, each clock domain forms a separate loop and hence, a separate test path. - In
step 214, the processor identifies multiple signature output taps to improve signature aliasing probability. According to one embodiment, the user of the design tool provides the number of signature output taps to be created. The signature output taps are then evenly distributed amongst the various clock domains in proportion to the number of toggled CSTP registers in each clock domain. For example, if the number of signature output taps is four, and the FPGA has two clock domains, with one clock domain having 15 CSTP registers and the other clock domain having five CSTP registers, the processor inserts three of the four output taps in the first clock domain, and one output tap in the second clock domain. Furthermore, the spacing of the output taps are selected to be evenly spaced. For example, every fifth CSTP register in the first clock domain is selected for inserting a signature output tap. Thus, the number of clock cycles between S0 and S1, between S1 and S2, and between S2 and S0, in the first clock domain, is five. The inserting of a signature output tap includes inserting an output path from the selected CSTP register into the signature registers 24 for comparison. - In
step 216, the processor inserts into the FPGA design a BIST controller for controlling a self-test mode and signature registers for receiving parallel test response values from the signature output taps and comparing those response values to fault-free values in the signature registers. -
FIG. 10 is a flow diagram of a BIST process executed by an FPGA according to one embodiment of the invention. Instep 300, theBIST controller 22 places the FPGA in test mode by transmitting a test signal overbus 34. - In
step 302, thecore logic 26 with the CSTP generates a test pattern at each clock cycle while simultaneously performing test response compaction. In this regard, the CSTP is initialized by placing all registers into a known state. Each CSTP register generates a test pattern during each clock cycle while at the same time outputting a compressed test response that is used as input to a next CSTP register in the path. Test pattern and response compaction proceeds for a total number of predetermined clock cycles. - At the end of the test clock cycle, the
core logic 26 outputs a compacted test response from each of the multiple signature output taps, in parallel, as test values that together form a signature, and which are compared against stored fault-free values in the signature registers 24 instep 304. - In
step 306, a determination is made as to whether the output test values match the pre-computed fault-free values. If the answer is YES, the FPGA transitions to a functional mode instep 308 where the intended functions of the FPGA are executed. - If, however, the values do not match, it is presumed that there is an error in the FPGA. The BIST controller thus outputs an error signal in
step 310 which may be displayed as an error message on an output device. The faulty FPGA may be repaired or replaced in response to the error message. - A person of skill in the art should recognize that the above-described BIST methodology provides a start up self test capability that can help guarantee mission critical system functionality on the field.
- Although embodiments of the present invention are described with respect to FPGA BIST, a person of skill in the art would understand that the embodiments of the present invention are applicable to any combinatorial circuit design, and in fact, may be used as an alternative to traditional BIST mechanisms for ASIC chips.
- It is the applicants intention to cover by claims all such uses of the invention and those changes and modifications which could be made to the embodiments of the invention herein chosen for the purpose of disclosure without departing from the spirit and scope of the invention. Thus, the present embodiments of the invention should be considered in all respects as illustrative and not restrictive, the scope of the invention to be indicated by the appended claims and their equivalents rather than the foregoing description.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/777,228 US8819507B2 (en) | 2010-05-10 | 2010-05-10 | Field programmable gate arrays with built-in self test mechanisms |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/777,228 US8819507B2 (en) | 2010-05-10 | 2010-05-10 | Field programmable gate arrays with built-in self test mechanisms |
Publications (2)
Publication Number | Publication Date |
---|---|
US20110276850A1 true US20110276850A1 (en) | 2011-11-10 |
US8819507B2 US8819507B2 (en) | 2014-08-26 |
Family
ID=44902775
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/777,228 Active 2031-03-03 US8819507B2 (en) | 2010-05-10 | 2010-05-10 | Field programmable gate arrays with built-in self test mechanisms |
Country Status (1)
Country | Link |
---|---|
US (1) | US8819507B2 (en) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150204944A1 (en) * | 2012-09-14 | 2015-07-23 | Kabushiki Kaisha Toshiba | Programmable logic device and verification method therefor |
US9298865B1 (en) * | 2014-03-20 | 2016-03-29 | Altera Corporation | Debugging an optimized design implemented in a device with a pre-optimized design simulation |
CN105738791A (en) * | 2014-12-26 | 2016-07-06 | 辛纳普蒂克斯显像装置合同会社 | Semiconductor device |
US20170074932A1 (en) * | 2014-05-29 | 2017-03-16 | Universiteit Gent | Integrated circuit verification using parameterized configuration |
US20180299509A1 (en) * | 2017-04-18 | 2018-10-18 | Cryptography Research, Inc. | Self-test of an asynchronous circuit |
CN110308381A (en) * | 2019-05-29 | 2019-10-08 | 深圳市紫光同创电子有限公司 | A kind of built-in self-test method and system of FPGA input and output logic module |
CN111967208A (en) * | 2020-08-24 | 2020-11-20 | 中国人民解放军陆军航空兵学院陆军航空兵研究所 | Construction method and device of testability evaluation simulation model |
US11193975B2 (en) * | 2018-06-29 | 2021-12-07 | Intel Corportion | Compressed test patterns for a field programmable gate array |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101891362B1 (en) * | 2010-10-05 | 2018-08-23 | 고쿠리츠켄큐카이하츠호진 카가쿠기쥬츠신코키코 | Fault detection system, extraction device, fault detection method, program, and recording medium |
CN110765716A (en) * | 2019-12-06 | 2020-02-07 | 国微集团(深圳)有限公司 | Method and system for checking simulation signal of digital product |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5230000A (en) * | 1991-04-25 | 1993-07-20 | At&T Bell Laboratories | Built-in self-test (bist) circuit |
US5450414A (en) * | 1993-05-17 | 1995-09-12 | At&T Corp. | Partial-scan built-in self-testing circuit having improved testability |
US5574733A (en) * | 1995-07-25 | 1996-11-12 | Intel Corporation | Scan-based built-in self test (BIST) with automatic reseeding of pattern generator |
US5596585A (en) * | 1995-06-07 | 1997-01-21 | Advanced Micro Devices, Inc. | Performance driven BIST technique |
US5696771A (en) * | 1996-05-17 | 1997-12-09 | Synopsys, Inc. | Method and apparatus for performing partial unscan and near full scan within design for test applications |
US5748497A (en) * | 1994-10-31 | 1998-05-05 | Texas Instruments Incorporated | System and method for improving fault coverage of an electric circuit |
US5903578A (en) * | 1996-03-08 | 1999-05-11 | Lsi Logic Corporation | Test shells for protecting proprietary information in asic cores |
US6003150A (en) * | 1996-02-02 | 1999-12-14 | Lucent Technologies Inc. | Method for testing field programmable gate arrays |
US6349398B1 (en) * | 1999-01-26 | 2002-02-19 | Silicon Graphics, Inc. | Method and apparatus for partial-scan built-in self test logic |
US6370664B1 (en) * | 1998-10-29 | 2002-04-09 | Agere Systems Guardian Corp. | Method and apparatus for partitioning long scan chains in scan based BIST architecture |
US6442721B2 (en) * | 1996-10-18 | 2002-08-27 | Texas Instruments Incorporated | Accelerating scan test by re-using response data as stimulus data |
US6861867B2 (en) * | 2002-03-07 | 2005-03-01 | Lightspeed Semiconductor Corporation | Method and apparatus for built-in self-test of logic circuits with multiple clock domains |
-
2010
- 2010-05-10 US US12/777,228 patent/US8819507B2/en active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5230000A (en) * | 1991-04-25 | 1993-07-20 | At&T Bell Laboratories | Built-in self-test (bist) circuit |
US5450414A (en) * | 1993-05-17 | 1995-09-12 | At&T Corp. | Partial-scan built-in self-testing circuit having improved testability |
US5748497A (en) * | 1994-10-31 | 1998-05-05 | Texas Instruments Incorporated | System and method for improving fault coverage of an electric circuit |
US5596585A (en) * | 1995-06-07 | 1997-01-21 | Advanced Micro Devices, Inc. | Performance driven BIST technique |
US5574733A (en) * | 1995-07-25 | 1996-11-12 | Intel Corporation | Scan-based built-in self test (BIST) with automatic reseeding of pattern generator |
US6003150A (en) * | 1996-02-02 | 1999-12-14 | Lucent Technologies Inc. | Method for testing field programmable gate arrays |
US5903578A (en) * | 1996-03-08 | 1999-05-11 | Lsi Logic Corporation | Test shells for protecting proprietary information in asic cores |
US5696771A (en) * | 1996-05-17 | 1997-12-09 | Synopsys, Inc. | Method and apparatus for performing partial unscan and near full scan within design for test applications |
US6442721B2 (en) * | 1996-10-18 | 2002-08-27 | Texas Instruments Incorporated | Accelerating scan test by re-using response data as stimulus data |
US6370664B1 (en) * | 1998-10-29 | 2002-04-09 | Agere Systems Guardian Corp. | Method and apparatus for partitioning long scan chains in scan based BIST architecture |
US6349398B1 (en) * | 1999-01-26 | 2002-02-19 | Silicon Graphics, Inc. | Method and apparatus for partial-scan built-in self test logic |
US6861867B2 (en) * | 2002-03-07 | 2005-03-01 | Lightspeed Semiconductor Corporation | Method and apparatus for built-in self-test of logic circuits with multiple clock domains |
Non-Patent Citations (5)
Title |
---|
Carletta, Joan; Papachristou, C., "Structural constraints for circular self-test paths," VLSI Test Symposium, 1994. Proceedings., 12th IEEE , vol., no., pp.87,92, 25-28 Apr 1994. * |
Corno, F.; Prinetto, P.; Sonza Reorda, M.; , "Making the circular self-test path technique effective for real circuits," Test Conference, 1994. Proceedings., International , vol., no., pp.949-957, 2-6 Oct1994. * |
Pradhan, M.M.; O'Brien, E.J.; Lam, S.L.; Beausang, J.; , "Circular BIST with partial scan," Test Conference, 1988. Proceedings. New Frontiers in Testing, International , vol., no., pp.719-729, 12-14 Sep 1988. * |
Stroud, C.E.; Ping He; Damarla, T.R.; , "Register size vs. fault coverage in modified circular built-in self-test," AUTOTESTCON '96, Test Technology and Commercialization. Conference Record , vol., no., pp.23-28, 16-19 Sep 1996. * |
Sullivan, M.G.; Stroud, C.E.; , "Reducing the cost of circular built-in self-test by selective flip-flop replacement," AUTOTESTCON '95. Systems Readiness: Test Technology for the 21st Century. Conference Record , vol., no., pp.486-491, 8-10 Aug. 1995. * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150204944A1 (en) * | 2012-09-14 | 2015-07-23 | Kabushiki Kaisha Toshiba | Programmable logic device and verification method therefor |
US9298865B1 (en) * | 2014-03-20 | 2016-03-29 | Altera Corporation | Debugging an optimized design implemented in a device with a pre-optimized design simulation |
US20170074932A1 (en) * | 2014-05-29 | 2017-03-16 | Universiteit Gent | Integrated circuit verification using parameterized configuration |
US10295594B2 (en) * | 2014-05-29 | 2019-05-21 | Universiteit Gent | Integrated circuit verification using parameterized configuration |
CN105738791A (en) * | 2014-12-26 | 2016-07-06 | 辛纳普蒂克斯显像装置合同会社 | Semiconductor device |
US20180299509A1 (en) * | 2017-04-18 | 2018-10-18 | Cryptography Research, Inc. | Self-test of an asynchronous circuit |
US10884058B2 (en) * | 2017-04-18 | 2021-01-05 | Cryptography Research, Inc. | Self-test of an asynchronous circuit |
US11307253B2 (en) | 2017-04-18 | 2022-04-19 | Cryptography Research, Inc. | Self-test of an asynchronous circuit |
US11193975B2 (en) * | 2018-06-29 | 2021-12-07 | Intel Corportion | Compressed test patterns for a field programmable gate array |
CN110308381A (en) * | 2019-05-29 | 2019-10-08 | 深圳市紫光同创电子有限公司 | A kind of built-in self-test method and system of FPGA input and output logic module |
CN111967208A (en) * | 2020-08-24 | 2020-11-20 | 中国人民解放军陆军航空兵学院陆军航空兵研究所 | Construction method and device of testability evaluation simulation model |
Also Published As
Publication number | Publication date |
---|---|
US8819507B2 (en) | 2014-08-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8819507B2 (en) | Field programmable gate arrays with built-in self test mechanisms | |
JP3851782B2 (en) | Semiconductor integrated circuit and test method thereof | |
TW475108B (en) | Integrated circuit device, its testing method, database for its design, and its designing method | |
US9316691B2 (en) | Method and apparatus for fault injection | |
CN105631077B (en) | Integrated circuit with increased fault coverage | |
US7562321B2 (en) | Method and apparatus for structured ASIC test point insertion | |
IE56976B1 (en) | Improvements in or relating to integrated circuits | |
US8479068B2 (en) | Decoded register outputs enabling test clock to selected asynchronous domains | |
US7401277B2 (en) | Semiconductor integrated circuit and scan test method therefor | |
US20130275824A1 (en) | Scan-based capture and shift of interface functional signal values in conjunction with built-in self-test | |
US20150106672A1 (en) | Circuit for testing integrated circuits | |
US7620862B1 (en) | Method of and system for testing an integrated circuit | |
US8738978B2 (en) | Efficient wrapper cell design for scan testing of integrated | |
US8799731B2 (en) | Clock control for reducing timing exceptions in scan testing of an integrated circuit | |
US10969433B1 (en) | Method to compress responses of automatic test pattern generation (ATPG) vectors into an on-chip multiple-input shift register (MISR) | |
Tahoori et al. | A multi-configuration strategy for an application dependent testing of FPGAs | |
US8533548B2 (en) | Wrapper cell for hierarchical system on chip testing | |
US7406639B2 (en) | Scan chain partition for reducing power in shift mode | |
US10110234B1 (en) | Efficient system debug infrastructure for tiled architecture | |
WO2014116914A1 (en) | Circuits and methods for dynamic allocation of scan test resources | |
US10359471B2 (en) | Implementing decreased scan data interdependence for compressed patterns in on product multiple input signature register (OPMISR) through scan skewing | |
Ibrahim et al. | iJTAG integration of complex digital embedded instruments | |
US7882454B2 (en) | Apparatus and method for improved test controllability and observability of random resistant logic | |
Gericota et al. | DRAFT: an on-line fault detection method for dynamic and partially reconfigurable FPGAs | |
US9964591B2 (en) | Implementing decreased scan data interdependence in on product multiple input signature register (OPMISR) through PRPG control rotation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: RAYTHEON COMPANY, MASSACHUSETTS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:LUU, HOWARD K.;CHIA, JACKSON Y.;REEL/FRAME:024368/0548 Effective date: 20100507 |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551) Year of fee payment: 4 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |