Guarded Equivalence Predicates for Scalable Formal Hardware Information-Flow Verification
About
Formal hardware information-flow verification is a principled way to rule out secret-dependent functional or timing observations, but scaling such proofs remains difficult. Self-composition reduces information-flow verification to safety checking over two circuit copies, creating relational proof obligations that are hard for a generic PDR engine to discover from bit-level logic alone. Recent PDR-based techniques exploit this duplicated structure through copy symmetry and global cross-copy equivalence predicates. These predicates are effective when corresponding internal signals agree throughout the reachable state space, but they do not capture equalities that are relevant only in a specific control context. We observe that such contextual relations arise naturally in hardware IFV proofs: an internal signal pair may need to agree only within a control phase, transaction window, loop state, or protocol region. We introduce guarded equivalence predicates to expose these relations to PDR. Rather than treating a proposed contextual equality as an assumption, the verifier submits the corresponding mismatch condition as an auxiliary blocking obligation. Guards are proposed from relational counterexamples-to-induction using CTI-local extraction and state-split search; only candidates proved unreachable by the backend affect the proof. Across 12 IFV benchmarks and two PDR backends, guarded predicates convert two contextual baseline timeouts into completed proofs within 34.2--89.5s under an 1800s limit, while reducing proof time by up to 10.8x on additional benchmarks.
Related benchmarks
| Task | Dataset | Result | Rank | |
|---|---|---|---|---|
| Information Flow Verification | GCD | Runtime (s)0.5 | 9 | |
| Information Flow Verification | FP_ADD | Runtime (seconds)15.4 | 9 | |
| Information Flow Verification | FP_DIV | Runtime (s)34.2 | 9 | |
| Information Flow Verification | vctr | Runtime (s)7.7 | 9 | |
| Information Flow Verification | Cache | Runtime (s)6.8 | 9 | |
| Information Flow Verification | FP_MUL | Runtime (s)10 | 9 | |
| Information Flow Verification | SecIC3 GCD (G1) | Runtime (s)1.3 | 9 | |
| Information Flow Verification | Diagnostic normacc (G4) | Runtime (s)16 | 9 | |
| Information Flow Verification | Diagnostic vctr (G5) | Runtime (s)27 | 9 | |
| Information Flow Verification | SecIC3 Cache (G6) | Runtime (seconds)16 | 9 |