Error Correction Code Algorithm and Implementation Verification Using Symbolic Representations

Error-correction codes (ECCs) are becoming a de rigueur feature in modern memory subsystems, as it becomes increasingly important to safeguard data against random bit corruption. ECC architecture constantly evolves towards designs that leverage complex mathematics to minimize check-bits and maximize...

Full description

Saved in:
Bibliographic Details
Published in2022 Formal Methods in Computer-Aided Design (FMCAD) pp. 151 - 159
Main Authors Gupta, Aarti, Kaivola, Roope, Mehta, Mihir Parang, Singh, Vaibhav
Format Conference Proceeding
LanguageEnglish
Published FMCAD Association and authors 18.10.2022
Subjects
Online AccessGet full text
ISSN2708-7824
DOI10.34727/2022/isbn.978-3-85448-053-2_21

Cover

More Information
Summary:Error-correction codes (ECCs) are becoming a de rigueur feature in modern memory subsystems, as it becomes increasingly important to safeguard data against random bit corruption. ECC architecture constantly evolves towards designs that leverage complex mathematics to minimize check-bits and maximize the number of data bits protected, as a result of which subtle bugs may be introduced into the design. These algorithms traverse a vast data space and are subject to corner case bugs which are hard to catch through constraint-based randomized testing. This necessitates formal verification of ECC designs to assure correctness of the algorithm and its hardware implementation. In this paper we present a technique of representing various ECC algorithm outputs as Boolean equations in the form of Boolean Decision Diagrams (BDDs) to facilitate reasoning about the algorithms. We also discuss the counting and generation of examples from the BDD representations and how it aids in tuning ECC algorithms for performance and security. Additionally, we display the use of Symbolic Trajectory Evaluation (STE) to prove the correctness of register transfer level (RTL) implementations of these algorithms. We discuss the scaling up of this verification methodology, using different complexity and convergence techniques. We apply these techniques to a number of complex ECC designs at Intel and showcase their efficacy on several categories of bugs.
ISSN:2708-7824
DOI:10.34727/2022/isbn.978-3-85448-053-2_21