Fault injection in electronic equipment and softwareWe provide services in the field of fault injection, which is an mandatory activity in the IEC 61508 safety standard for programmable systems requiring high error detection ability.
Fault injection accelerates the occurrence of faults in computer systems, enabling the response of the system to be evaluated and thus showing how embedded fault detection and recovery mechanisms should be designed or improved.
Services in fault injection
- A course that presents the benefits and drawbacks of accepted methods, and describes aspects that should be considered when designing custom tools and test benches.
- Assistance in deciding how fault injection should be applied in order to fulfil the requirements of IEC 61508
- Evaluation of fault tolerance requirements for models and software
- Evaluation of fault tolerance requirements for programmable systems
Ensure that systems can deal with faults
Constructing reliable systems requires some form of redundancy (in software, hardware, information or time), in order to be able to detect and possibly to recover from faults. One way of validating the function of the redundant system is to inject faults into the system to see whether they are dealt with correctly.
Fault injection methods
Faults can be injected into hardware through the use of commercial debugging interfaces such as JTAG, BDM or Nexus. A Nexus interface in modern microprocessors makes it possible to reach firmware logic that is connected to the CPU register and memory elements, thus simulating an effect such as a transient hardware fault.
Faults arising on communication buses can be evaluated through the use of (for example) external hardware that introduces interference into the bus, simulating electromagnetic interference from the switching of a relay. Examples of other physical fault injection methods include the use of probes to inject faults such as signal or power interruptions, bridging of contacts or direct short circuits on the pins of integrated circuits, or faults through application of a radioactive source.
Fault injection can also be arranged through the use of additional software, implemented directly in the machine code, source code or included in software or hardware models. Faults can be injected in registers or memory visible to the programmer in order to evaluate the effects of hardware faults or of implementation errors when preparing models or source code.
Fault injection platforms for evaluation
We have many years' experience of fault injection via debugging interfaces, and have built up a fault injection platform for evaluation of TTP and FlexRay data communication protocols. We have experience of software-implemented fault injection and have, for example, developed tools for injecting faults into signals and operators in models developed by the SCADE and Simulink modelling tool.