Bounded Model Checking
ConceptBounded Model Checking (BMC) is a hardware and software formal verification technique that restricts analysis to a fixed number of execution steps, reducing model checking to a sequence of satisfiability queries discharged to SAT, QBF, or SMT solvers. It is used in hardware verification frameworks such as riscv-formal and SymbiYosys, in C program model checkers such as CBMC, in specialized workflows for HW/SW co-verification, fault injection, and SEU reliability evaluation, and as a source of SAT benchmarks used to evaluate SAT sampling tools. Application areas include equivalence checking of mutated C-based instruction-set semantics for test-suite generation.
WIKI
Overview
Bounded Model Checking (BMC) is a hardware and software verification technique that limits its analysis to a fixed number of execution steps. Rather than exploring the full reachable state space, BMC checks whether any counterexample to a property exists within a finite bound. In the µArchiFI fault-injection workflow, the BMC bound k is fixed according to the length of the longest program execution trace plus a small safety margin (e.g., a 10-percent increment) to capture possible modifications in the control flow induced by faults.
The result of a BMC run can be one of three outcomes: Proven (the assertion is fully proved), Failure (the model checker produces a counterexample), or Undetermined / Bounded Proven (the tool cannot prove or disprove the assertion within the bounded trace or time). When a counterexample is produced by µArchiFI's external model checker, a VCD file reports precisely where the fault is injected and when the attacker's goal is reached, although understanding the propagation of the fault and its consequences still requires further analysis.