  Shrinking hardware structures and decreasing operating voltages lead to an
increasing number of transient hardware faults,which thus become a core problem
to consider for safety-critical systems. Here, systematic fault injection (FI),
where one program-under-test is systematically stressed with faults, provides
an in-depth resilience analysis in the presence of faults. However, FI
campaigns require many independent injection experiments and, combined, long
run times, especially if we aim for a high coverage of the fault space. One
cost factor is the forwarding phase, which is the time required to bring the
system-under test into the fault-free state at injection time. One common
technique to speed up the forwarding are checkpoints of the fault-free system
state at fixed points in time.
  In this paper, we show that the placement of checkpoints has a significant
influence on the required forwarding cycles, especially if we place faults
non-uniformly on the time axis. For this, we discuss the checkpoint-selection
problem in general, formalize it as a maximum-weight reward path problem in
graphs, propose an ILP formulation and a dynamic programming algorithm that
find the optimal solution, and provide a heuristic checkpoint-selection method
based on a genetic algorithm. Applied to the MiBench benchmark suite, our
approach consistently reduces the forward-phase cycles by at least 88 percent
and up to 99.934 percent when placing 16 checkpoints.
