Used to develop fault-tolerant computer structures. This is achieved either by using established redundancy-based fault-tolerant techniques or by the automatic detection and correction of faulty resources (scrubbing). While redundancy-based fault-tolerant techniques mitigate the fault effect and the fault remains present in the system, the scrubbing (self-corrective) corrects the fault, if at all possible. There are open challenges in fault detection and efficient system reconfiguration. Both processes introduce latency in a fault-recovery thus an additional mechanism must be introduced to maintain data consistency. Furthermore, scrubbing may be ineffective in the case of hard configuration faults, which could be resolved using higher level of abstraction by relocating part of the structure to available fault-free resources. The main objective of the fault-tolerant structures is to ensure the correct functioning of the device, but it is also used as a countermeasure in the case of fault attacks on secure systems.