Functional safety is part of the safety of a system, and depends on how the system operates in response to its inputs. Functional safety for circuits depends on the response of the various circuit components to an input. Testing can be used to check the response of a system to unexpected errors. For functional safety qualification of a circuit, fault injection is used to model a fault that may occur in the actual chip, and then evaluate the circuit response (for example, by flagging an error and/or entering a safe state). For testbench qualification of a circuit, fault injection is used to model a bug in the design to see if the testbench detects an error. If the testbench does not flag an error, then there is a hole in the verification test strategy.
Faults injection is commonly done on digital circuits, in which a fault is easily measured as an incorrect binary value (e.g., a one or a zero). Fault injection in analog circuits is more difficult. In particular, analog fault injection is very slow. Furthermore, it can be difficult to determine what constitutes a fault in an analog fault, since analog outputs can have many possible values, and analog faults can result in varied circuit behavior. Traditional analog fault injection methods require a large amount of manual work and are very circuit-specific. There are some post-silicon analog fault injection methods, but these methods limit the types of faults that can be injected and delay qualification results until after tapeout. Analog fault injection is therefore typically performed on a limited case-by-case basis.