The present invention generally relates to the field of circuit testing. More particularly, the present invention relates to fault injection and scan operation.
High energy sub-atomic particles occasionally hit integrated circuit (IC) devices and cause interference. When an energetic particle hits an IC chip it may ionize an atom within the circuitry and thereby cause a single event effect to occur. There are several types of single event effects that can occur. The more severe effects include single event burnout and single event latchup. A less severe type of single event effect is a single event upset (SEU).
An SEU is a change of state or a transient pulse through an IC device caused by an ionizing particle. An SEU will manifest itself either by flipping the state of a sequential logic component (such as a memory or a flip-flop), commonly referred to as a “bit flip,” or by introducing a transient pulse through a circuit that temporarily alters the values passing through combinational logic.
An SEU typically does not permanently affect the device and the device will continue to operate normally after the SEU occurs, although data may be corrupted. SEU and other single event effects are very common in outer space beyond the protection of the Earth's atmosphere against cosmic radiation. Therefore, IC devices used in outer space must be specially designed to limit this problem. On Earth, most energetic particles that could cause SEU are blocked by the atmosphere. However, energetic neutrons often make it through to the ground.
The neutron flux in New York City is approximately 14-20 neutrons per hour per square centimeter. However, at higher altitudes, the flux increases. For example, in Denver, Colo., the neutron flux is about 7 or 8 times higher than in New York City. Similarly, the flux is high on a commercial or military airplane flight. SEU has traditionally been much more prevalent in memory devices, particularly within SRAM. However, as device geometries shrink and clock speeds increase, SEU is becoming more prevalent in logic circuits. The SEU error rate in logic circuits is beginning to approach the rate found in memory devices of similar geometries.
It is possible to test an IC device for SEU. This usually involves applying a high energy particle beam at the device and counting the number of SEU's observed. One conventional method of doing this is by operating the device in normal mode and analyzing portions of the device at a time by counting errors in multiple signal lines at once. Another conventional method utilizes scan chains to test for SEU in sequential logic by leaving the sequential logic to be tested unclocked (i.e., in a static state) while applying the particle beam and then re-applying the clock in order to scan out the data within the scan chain and count the errors.
This type of SEU testing can be expensive and time consuming. Accordingly, there is a need to be able to efficiently test the susceptibility of a circuit to SEU errors. Likewise, there is a need by which to inject faults such as those introduced by Single Event Transient (SET) into a circuit so as to then test the susceptibility of the circuit to the faults and SEUs.
The present invention provides various circuits for injecting faults into a larger circuit, sometimes called a circuits under test, or CUT.
A first type of fault injection circuit is a clock controlled fault injection circuit. This type of circuit uses internal scan chains as a way by which a fault injection operation is performed while a system clock is in the off state. After the fault injection operation is completed, the system resumes its normal operation with the fault injected state. A circuit to be described further below that falls under this category is a fault injection circuit that shares a system's scan chain for fault injection. This shared scan chain fault injection circuit uses a clock controlled fault injection method.
A second type of fault injection circuit is a concurrent fault injection circuit. This type of fault injection circuit uses dedicated fault injection scan chains in parallel with or without internal scan chains. In this type of circuit, fault injection is performed while a system is in an operational mode. This dedicated scan chain fault injection circuit uses a concurrent fault injection method.
A third type of fault injection circuit is a hybrid fault injection circuit that uses both clock controlled and concurrent fault injection circuits. Emulation and hardware accelerated emulators can benefit from this hybrid fault injection circuit.
Other embodiments are disclosed and still other embodiments would be obvious to those of ordinary skill in the art upon understanding the full scope of the present disclosure.
The following drawings will be used to more fully describe embodiments of the present invention.
The present invention generally relates to circuits for injecting faults into a larger circuit. Fault injection can be useful because it provides information about the susceptibilities of a circuit to, among other things, single event upsets (SEUs). For example, where certain naturally induced SEUs may occur with low frequency, they may nonetheless, have a dramatic effect on a circuit. Whereas tools exist for bombarding a circuit with high frequency radiation so as to simulate an accelerated lifetime of a circuit, such tools can be expensive and time-consuming. The present invention therefore provides circuits by which faults can be injected so as to test larger circuits vulnerabilities to SEU.
Fault Injection and Resulting CUT Behavior
Shown in
For example, when a fault is injected it may be a transparent or effective fault, 102 and 104 respectively. A fault is said to be transparent when the injected node has the same logic state as the injected fault. A fault is said to be effective when the injected node has a different logic state from the injected fault.
If the fault is an effective fault various possibilities exist. For example, an effective fault turns the fault into an error 106 that may, in turn, result in a CUT crash 108, a hang 110, a silent data corruption (SDC) 112, or a detected error 114. Also, an effective fault 106 may cause a no error or effect 116 condition.
Of detected errors 114, they may be detected errors that can be avoided 120 or corrected 122 or detected errors where the system takes no action 124. Of the errors that can be avoided 120, they may require a retry 126 of an operation of the CUT to perform an error free operation, a reset 127 of the operation of the CUT, a degradation 128 of the operation of the CUT, restart 130 of the CUT, or a shut-down 132 of the CUT.
These are only examples of the effects of faults. Other effects may be possible. For example, classifications of error conditions from a CUT or system response may vary depending on the different responses generated by the error from a given CUT or system.
Fault Injection Operation
In testing a CUT, it is first necessary to consider the variety and types of faults that are to be injected in the testing. This is sometimes called generating a fault list and may include spatial as well as time domain faults. Once such a fault list is generated, a fault injection operation is similar to internal scan shift and capture operations to use a fault list as a scan shift data. A significant difference between fault injection and scan test operation are that during fault injection operations, it is desired to inject a limited number of faults in the selected scan cells while retaining all the previous states of the CUT in the unselected scan cells. Accordingly, the state of the CUT is read out and fed back into the circuit while replacing only the states of the nodes desired to be injected with a fault. For a fault injection operation, each scan shift operation (shift-out simultaneously captures data serially) for the selected scan chain is staggered by an amount of a fault injection interval predetermined by the time domain fault list. Overall fault injection operation consists of a total duration of all fault injection time which is comprised of individual time domain faults lists and that are selected ones of spatial domain fault lists. The time domain fault list consists of all spatial domain faults staggered by an amount of a fault injection interval of each spatial domain faults.
There are no real time comparisons of the serial output data during scan shift operations. Serial output data from the fault injection scan cells are stored for error rate and other SEU related analysis purposes after fault injection operation is completed as will be seen in the circuits to be described below.
Fault Injection Result Analysis
Through the use of the information recorded during fault injection testing, after fault injection operation is completed a detailed analysis of the CUT can be performed. For example, pass and fail response by the system test code running on the CUT can be recorded based on the results of fault injection testing. Moreover, a total number of faults that are injected during a fault injection operation can be used to estimate system a soft error rate (SER) for a CUT. There are following variables to estimate soft error rate from the fault injection operation. Information that can be obtained includes:
Fault Types during Fault Injection Operation
Fault injection according to the present invention uses three different types of faults that are injected to a CUT flip-flop or circuit node. They are (i) time invariant faults, which are known as Stuck-at fault where status of fault stays constant in terms of time, (ii) one-cycle soft faults, which are known as SEU faults where the status of the fault lasts one clock cycle, and (iii) less-than-one-cycle faults, which are known as SET faults where the status of the fault lasts less than one clock cycle. Additional soft faults can be defined such that the faults last more than one-cycle but are not time invariant faults. Each fault has specific characteristics for the purpose of analyzing SEU response of the circuit.
Stuck-at Fault
A stuck-at fault is time invariant such that the status of fault stays constant regardless of time durations. The effect of the fault is seen as stuck-at logic state at the node and is a hard fault. For fault injection operations, as in other analyses, the duration of a stuck-at fault is normally set to the entire test operation where the duration is longer than the latency of one system or test operation cycle. Global signals from a fault list control clock control circuits such that the duration of fault injection can be sustained during the fault injection operation cycle. The Stuck-at fault model is problematic for SEU analysis through fault injection operation and may be better suited for DFT analysis and DFT verification to determine test coverage of a target circuit.
Logic Upset Fault
A logic upset fault is time variant and soft in nature as oppose to a hard fault. For example, a logic upset fault can be overwritten with a new value during subsequent clock cycles and is, therefore, similar to certain characteristics of an SEU fault and can provide useful information in fault injection testing. During fault injection testing, fault duration can set to be a single or multiple system clock cycles. The fault can be synchronous with system clock where the fault can be asserted at the rising or falling edge of the clock. SER analysis involves not only fault models used in the fault injection operation but also uses various other information, such as system code coverage and latency, injection duration, acceleration factor, flip-flop SER, number of faults injected, and system response from the injected faults.
Logic Transient Fault
A logic transient fault is time variant and soft in nature as oppose to a hard fault. For example, a logic transient fault can be overwritten with a new value during subsequent clock cycles and is, therefore, similar to certain characteristics of an SEU fault and can provide useful information in fault injection testing. A difference from a logic upset fault is in the duration of the logic transient fault. The duration of a logic transient fault is less than one system clock cycle. The fault can occur at any time within the system clock window. In fault injection operations, a logic transient fault is controlled by a fault injection clock control circuit that can inject fault at any time within the system clock window. The logic transient fault model can be used to analyze SEU effects through fault injection operations. Specific types of circuits can benefit the best from this type of fault model, including circuits that implement a pipeline design and high speed SERDES IP blocks.
Each of the faults described above has specific applications and drawbacks for the purpose of analyzing SEU in a circuit.
For example, the effect of a single injected stuck-at fault can be multiplied at each clock cycle as the system propagates the single stuck-at fault, not only through the time domain but also through the spatial domain of the circuit. Stuck-at faults can be useful for DFT circuit coverage analysis and other on-chip test coverage and test circuit performance analysis. It is a static fault and provides advantages for static fault coverage analysis purposes.
A logic upset fault resembles an SEU fault such as a radiation induced logic upset. It is well suited for analyzing the effects of SEU in the design and is also well suited for developing SEU mitigation solutions. It also provides advantages for quantifying high-speed SERDES on-chip BER (bit error rate) test and performance characterization, which measures time variant fault than static fault.
A logic transient fault may provide further advantages for analyzing heavily pipelined design structures and high speed data buses where a single fault may propagate and multiply as transient signals are regenerated and diverged into a logic cone. Logic upset faults may have different side effects in this type of environment from logic transient faults where pulse width and pulse location within system clock cycle influence different error rates.
Fault Injection Circuits
The present invention provides various circuits for injecting faults into a larger circuit, sometimes called a circuits under test, or CUT. Several types of fault injection circuits are disclosed.
A first type of fault injection circuit is a clock controlled fault injection circuit. This type of circuit uses internal scan chains as a way by which a fault injection operation is performed while a system clock is in the off state. After the fault injection operation is completed, the system resumes its normal operation with the fault injected state. A circuit to be described further below that falls under this category is a fault injection circuit that shares a system's scan chain for fault injection. This shared scan chain fault injection circuit uses a clock controlled fault injection method.
A second type of fault injection circuit is a concurrent fault injection circuit. This type of fault injection circuit uses dedicated fault injection scan chains in parallel with or without internal scan chains. In this type of circuit, fault injection is performed while a system is in an operational mode. This dedicated scan chain fault injection circuit uses a concurrent fault injection method.
A third type of fault injection circuit is a hybrid fault injection circuit that uses both clock controlled and concurrent fault injection circuits. Emulation and hardware accelerated emulators can benefit from this hybrid fault injection circuit.
Other embodiments are disclosed and still other embodiments would be obvious to those of ordinary skill in the art upon understanding the full scope of the present disclosure.
Effects of Fault Injection
There are two different fault effects when a fault injection circuit injects a fault in the circuit node: a transparent fault or an effective fault.
An injected fault is a transparent fault when the injected fault and the logic value of the fault injection node are the same. For example, where the fault injection node has a logic value of 1 and the injected fault is also a 1, the injected fault is said to be transparent because it does not change the value at the injection node. In this case the fault injection circuit does not inject the fault in the node and bypasses the original value without change.
An injected fault is an effective fault when the injected fault and the logic value of the fault injection node are different. For example, where the fault injection node has a logic value of 1 and the injected fault is a logic value 0, the injected fault is said to be an effective fault because it changes the value at the injection node.
Example Shared Scan Chain Fault Injection Circuit 1
Shown in
Fault control signal F_Control 208 and fault selection signals F_Sel_0210 and F_Sel_1212 and control whether fault injection is turned on or off, and when it is on, the selection signal controls the type of fault injection to be performed, respectively. If F_Control 208 is logic one then, a fault will be injected according to the value of fault selection signals F_Sel_0210 and F_Sel_1212.
As shown, scan chain input signal FI_SO 206 is directed to multiplexer 204 such that, as shown, when [F_Sel_0, F_Sel_1] are set to [0 0], fault injection circuit 202 is bypassed. Shown in
When [F_Sel_0, F_Sel_1] is set otherwise, various aspects of fault injection circuit 202 are executed. For example, when [F_Sel_0, F_Sel_1] is set to [0 1], fault injection circuit 202 is configured to force a logic state of zero at output 214 that directs the fault to the scan chain of the system. Shown in
In yet another condition, when [F_Sel_0, F_Sel_1] is set to [1 1] fault injection circuit 202 is configured to force an inversion of the logic state of the fault injection node of interest that is scan chain input signal as FI_SO at signal 206 such that every injected fault is an effective fault. Shown in
Example Shared Scan Chain Fault Injection Circuit 2
Shown in
Fault control signal F_Control 404 and fault selection signals F_Sel_0408 and F_Sel_1410 and control whether fault injection is turned on or off, and when it is on, the selection signal controls the type of fault injection to be performed, respectively. If F_Control 404 is logic one then, a fault will be injected according to the value of fault selection signals F_Sel_0408 and F_Sel_1410.
As shown, scan chain input signal FI_SO 406 is directed to fault injection circuit 402 such that, as shown, when [F_Sel_0, F_Sel_1] are set to [0 0], fault injection circuit 402 is effectively bypassed. Shown in
When [F_Sel_0, F_Sel_1] is set otherwise, various aspects of fault injection circuit 402 are executed. For example, when [F_Sel_0, F_Sel_1] is set to [0 1], fault injection circuit 402 is configured to force a logic state of zero at output 412 that directs the fault to the scan chain of the system. Shown in
In yet another condition, when [F_Sel_0, F_Sel_1] is set to [1 1] fault injection circuit 402 is configured to force an inversion of the logic state of the fault injection node of interest that is scan chain input signal as FI_SO at signal 406 such that every injected fault is an effective fault. Shown in
Example Interface for Shared Scan Chain Fault Injection Circuit
Shown in
As shown, fault injection circuit 602 is able to inject faults into the device at the locations identified for the internal scan chain. Thus, an advantage of this shared scan chain approach is that the preexisting scan chain can be leveraged to also inject faults.
As shown in
In operation, as FI_SI 622 is fed through a serial input signal, at least one of scan chains 608-1 through 608-m is in scan shift mode and fault injection information is serially fed to FI_SI 622 from Fault Control signal F_Control 612. At the same time that scan chain input signal FI_SO 620 is shifted out as a serial output data form the shared internal scan chain and fed back into the scan chain after a fault is injected by fault injection circuit 602. FI_SO 620 is also directed to status register 618 for recordation. Such status register 618 information can subsequently be compared to FI_SI 622 information so as to determine situations of transparent or effective faults.
In addition, error diagnosis and fault analysis tools can utilize fault injection information (such as flip-flop instance name and location) to analyze the effect of the injected faults, duplicate an error condition of the fault injection cycle, and identify solutions for the given errors caused by the fault in the system.
Status register 618 collects vital fault injection information so that various analyses can be performed including system error rate analysis, error diagnosis, error duplication, error debugging and reliability improvement of the hardware and software.
Selected scan cell values will be injected with faults during the fault injection cycle and the all other scan cell values will be untouched and repositioned back into their original cell locations. Because of this, during the fault injection operation, the exact amount of shift operations for the given scan chain should provide for the previous state of the scan flip-flop to be loaded back into the original location.
When fault injection is completed, shared internal scan chains 608-1 through 608-m are serially shifted out and at the same time shifted back into the original position through the scan shift operations.
Dedicated Fault Injection Circuit
A dedicated fault injection circuit is a concurrent fault injection circuit and uses dedicated fault injection scan chains with or without internal scan chain support. Fault injection operation is done while the system is in a mission mode of operation. The dedicated fault injection circuit enables designers to exercise fault injection operations while the target system is in an operational mode such that hardware and software response to the injected fault can be analyzed for reliability improvement.
To be discussed further below are six variations of dedicated fault injection circuits that include:
As part of the present discussion two sets of scan control signals will be discussed:
As will be further described below, when a system is in a mission mode of operation, internal scan control signal SE is put in an inactive state (SE=0) and the internal scan chain is also put in an inactive state where the internal scan chain is in a capture mode (non-scan shift mode). During a fault injection operation, a fault injection clock control circuit generates a signal Fault_SE that indicates that fault injection is enabled. At the moment of fault injection, depending on the selected clock cycle of the fault injection clock control circuit, the signal Fault_SE is briefly activated, and the scan enable signal becomes active (SE=1). During this operation, the scan enable signal is in an active cycle (SE=1) which lasts one system clock cycle (or selected clock cycles), the scan input path signal (SI) can be latched into the flip-flop at the rising edge of the next system clock cycle. The scan input path signal (SI) is fed by the output of fault injection scan cell output such that preloaded fault injection value in the fault injection scan cell can be latched into to the system flip-flop at the rising edge of the next system clock cycle.
These series of operations constitute a fault injection operation. Depending on the fault injection mode, the signal Fault_SE may last more than one clock cycle or less than one clock cycle because the signal duration determines the duration of fault injection for the given node.
Fault injection will now be described for certain particular circuits.
Example of Dedicated Single Cell Fault Injection Circuit
Shown in
Shown in
Shown in
An important consideration of combined fault injection scan cell and internal scan cell 900 is the interaction of FI_SE 908 and FI_Mode 714. Shown in the table below are the various states of [FI_SE, FI_Mode] and a description of the responsive operation of combined fault injection scan cell and internal scan cell 900.
As indicated in the table, combined fault injection scan cell and internal scan cell 900 allows for various combinations for usage of the fault injection and scan functionality. Note that the fault injection scan circuitry of
In an alternative embodiment, a dedicated single cell fault injection circuit with one F_Sel signal is implemented with the following changes:
There are following differences in utilizing this type of fault injection scan cell for the enhanced fault injection flexibilities.
Indeed, any of fault injection scan cells described herein can be converted into this type of implementation and can achieve similar functionality. Instead of using existing functional flip-flops for the fault injection purposes, this type of implementation can be used in any part of logic signal node as a “fault injection probe” due to its ability to control different types of fault per each probe node with minimum overhead.
Example of Dedicated Dual Cell Fault Injection Circuit
Turning now to
As shown in
Shown in
As shown, combined dual fault injection scan cell and internal scan cell circuit 1200 is configured to simultaneously receive and separately store fault injection status data FI_DI 1208 and fault injection data 1220. More particularly, FI_DI 1208 that provides fault injection capture status data input is coupled to be received by flip-flop 1222 and FI_DI 1208 that provides fault injection data to fault injection scan flip-flops is coupled to be received by flip-flop 1204. The outputs of both of these flip-flops are subsequently input to logic circuitry 1002.
Moreover, FI_SE 1212 that provides fault injection scan enable mode control, and FI_Clk 1214 that provides a fault injection shift clock and is used as a capture signal during a fault injection capture cycle. Combined fault injection scan cell and internal scan cell 1222 further includes Clk 1216 that provides a clocking input to flip-flop of the internal scan cell 1222 that, in turn, provides Sys_DO 1224 that is a system core data output during operation of dual fault injection scan cell and internal scan cell circuit 1200 and SO 1226 that is a serial output of the internal scan flip-flop 1222.
Shown in the table below are the various states of [F_Sel_0, F_Sel_1] and a description of the captured value of the fault injection scan flip-flops during fault injection operation of dual fault injection scan cell and internal scan cell circuit 1200. The responsive information can be used to estimate system SER and other fault injection results.
Note that instead of global signals (F_Sel_1704 and F_Sel_0708 of
Further note that dual fault injection scan circuitry of circuit 1200 can be implemented without an internal scan cell functionality by removing multiplexer 1230, SI 1010 signal, FI_Mode 1012 signal, and reconnecting the output of the 2 input OR gate 1232 to the logic 1 selection input signal of the multiplexer 1228 from the circuit which were described above.
Example of Dedicated Alternative Single Cell Fault Injection Circuit
Shown in
Shown in
Shown in
An important consideration of combined fault injection scan cell and internal scan cell 1500 is the interaction of FI_SE 1512 and FI_Mode 1516. Shown in the table below are the various states of [FI_SE, FI_Mode] and a description of the responsive operation of combined fault injection scan cell and internal scan cell 1500.
As indicated in the table, combined fault injection scan cell and internal scan cell 1500 allows for various combinations for usage of the fault injection and scan functionality. Note that the fault injection scan circuitry of
Example of Dedicated Single Cell Fault Injection Circuit with One F_Sel Signal
Shown in
In single cell fault injection circuit 1600 fault selection is controlled by F_Sel_01604 only. Fault injection is controlled by F_Control 1606 where F_Control 1606 set to 1 activates fault injection and F_Control 1606 set to 0 deactivates or bypasses fault injection. System core data input is provided at Sys_DI 1608. Output Sys_FF 1500 provides system core data output during operation of single cell fault injection circuit 1600.
Shown in
Shown in
An important consideration of combined fault injection scan cell and internal scan cell 1800 is the interaction of FI_SE 1812 and FI_Mode 1816. Shown in the table below are the various states of [FI_SE, FI_Mode] and a description of the responsive operation of combined fault injection scan cell and internal scan cell 1800.
As indicated in the table, combined fault injection scan cell and internal scan cell 1800 allows for various combinations for usage of the fault injection and scan functionality. Note that the fault injection scan circuitry of
Shown in the table below are fault injection control and status capture values with the F_Control 1606 and F_Sel_01604 signals. Due to the reduction in fault selection signals, EXOR-type logic toggle upset fault injection is not supported in this embodiment; only logic 0 upset and logic 1 upset fault are supported.
Example of Dedicated Single Cell EXOR Only Fault Injection Circuit with Scan Support
Shown in
There are no global fault selection control signals F_Sel_0 and F_Sel_1. Accordingly, circuit and routing complexity are reduced. For every fault injection scan cell with F_Control 1908 set to 1, the injected fault will always be an effective fault and a fault will be injected. When F_Control 1908 is set to 0, it is a bypass condition and no fault will be injected.
Combined fault injection scan cell and internal scan cell 1900 includes FI_DI 1916 that provides fault injection capture data input, FI_SI 1918 that provides fault injection serial input to fault injection scan flip-flop 1940, FI_SE 1920 that provides fault injection scan enable mode control, and FI_Clk 1922 that provides a fault injection shift clock and is used as a capture signal during a fault injection capture cycle. Combined fault injection scan cell and internal scan cell 1900 further includes Clk 1928 that provides a clocking input to flip-flop 1934 that, in turn, provides Sys_DO 1932 that is a system core data output during operation of combined fault injection scan cell and internal scan cell 1900 and SO 1930 that is a serial output of the internal scan flip-flop 1934.
An important consideration of combined fault injection scan cell and internal scan cell 1900 is the interaction of FI_SE 1920 and FI_Mode 1924. Shown in the table below are the various states of [FI_SE, FI_Mode] and a description of the responsive operation of combined fault injection scan cell and internal scan cell 1500.
As indicated in the table, combined fault injection scan cell and internal scan cell 1900 allows for various combinations for usage of the fault injection and scan functionality. Note that the fault injection scan circuitry of
The following table shows the state of F_Control based on fault injection control and status capture values. The fault injection status capture value is the same value as “System Node Value” during fault injection. In this mode of operation, only EXOR type logic upset toggle fault injection is supported.
Example of Dedicated Single Cell EXOR only Fault Injection Circuit
Shown in
Fault Injection Clock Control
In the present invention, a fault injection clock control circuit generates fault injection clock pulses and fault injection status captures clock pulses. These pulses are generated for the fault injection scan cells to perform successful fault injection operation.
Generally, two types of clock control circuit to generate both clock pulses:
Different interface types can be used for the fault injection clock control circuit, such as:
Above, the signal Fault_SE was described. Further details are provided here. In an embodiment, the signal Fault_SE controls a multiplexer of the functional flip-flop, which, in an application, is an internal scan cell's input multiplexer. During a functional operation, internal scan enable signal (SE) is inactive such that system input signal (Sys_DI) is fed to the flip-flop by the multiplexer instead of serial input signal (SI).
During a fault injection cycle, the fault injection clock controller generates a clock pulse to control the multiplexer for the duration of the fault injection time. This clock pulse is fed into the signal Fault_SE. The clock pulse is normally one system clock cycle long and has active high logic state such that when the clock pulse is active the multiplexer is forced to select the SI input path of the signal instead of system input signal (Sys_DI). Since SI input is then shared with output of the fault injection scan cell during fault injection operation, decoded function of the fault injection scan cell value (F_Control), which is also FI_SO, is fed to the functional flip-flop through the multiplexer. At the next rising edge of system clock, the injected fault value present at the output of the multiplexer, which is D input of the flip-flop as well, is being latched into the functional flip-flop thus completing the fault injection operation.
If the fault injection clock pulse lasts only one system clock cycle, the fault will persist for only one system clock cycle in the flip-flop. The effect resembles the behavior of a flip-flop SEU. However subsequent system clock pulses will move the injected fault from the flip-flop further into the downstream flip-flops or output of the flip-flop may be blocked by the downstream combinational logics. Analyzing injected fault propagation effects are the main purpose of fault injection operation.
The signal FI_Capture will now be further described. The signal FI_Capture controls clock input of the fault injection scan cell. In an embodiment, the clock pulse coincides with the Fault_SE clock pulse such that system input value is captured during a fault injection operation. The captured value will be unloaded as a next fault list is loaded into fault injection scan cell and is used to identify actual fault injection status.
In an embodiment, the signal FI_Capture is falling edge synchronized while Fault_SE is synchronized with the rising edge of the clock such that FI_Capture occurs a half-cycle earlier than the Fault_SE pulse. Depending on the fault injection application and the fault injection circuit size, synchronizing the FI_Capture and Fault_SE pulses with respect to system clock may vary in order to maintain signal integrity of the generated pulses.
A key point of aligning FI_Capture and Fault_SE pulses with the proper system clock edge is to ensure that fault injection status capture and fault injection happens during the same system clock cycles. What this means is that capture flip-flop and system flip-flop are capturing at the same system cycle data in regard to the edge of the clocks used in the both flip-flops, whether they are the same clock edge or not.
Combinations and Applications of Fault Injection Circuit
Of the various fault injection circuits described above, each has different fault injection flexibility and circuit overhead. As currently contemplated, there are seven different functional combinations to consider when choosing optimum fault injection circuit for a given application:
In addition, the following design criteria may require different fault injection circuits and fault injection applications:
Fault Injection Scan Insertion Example
Fault injection scan chain insertion is similar to internal scan insertion rules, guidelines, and methodologies especially for multiple clock domains, scan chain domain crossings, scan chain ordering, DFT rule checking, and scan chain stitching. Fault injection scan chain insertion generally follows similar rules and practices of the well-known internal scan insertion rules and guidelines for successful fault injection operation with the scan operation.
There are two different types of fault injection scan chains;
Fault Injection Scan Chain Insertion Methods Overview
Common scan chain insertion methods that are available in modern DFT tools can be used for fault injection with limited issues. A general scan insertion process involves the following activities assuming that the design meets generic scan DFT rules for scan insertion and operation.
Fault Injection Scan Chain Application Differences
As noted earlier for the concurrent fault injection operations, internal scan chains need to be in a functional mode. The following list summarizes two different approaches.
Modern scan insertion tools provide functionality that can assist with both internal scan chains and fault injection scan cells. Indeed, one of scan insertion operation, a fault injection scan insertion, or a scan conversion operation can be used to insert fault injection scan chains.
As currently contemplated, there are at least three different application types with fault injection scan chains and related circuitry:
Indeed, the various fault injection circuits of the present invention can be analogously implemented as shown in
It should be appreciated by those skilled in the art that the specific embodiments disclosed above may be readily utilized as a basis for modifying or designing other fault injection circuits. It should also be appreciated by those skilled in the art that such modifications do not depart from the scope of the invention as set forth in the appended claims.