Skip to content

yousunko/BEC

Repository files navigation

BEC analysis

Bit-level Error Coalescing (BEC) analysis is a static analysis that tracks and classifies the effect of program corruption due to soft errors.

This repository contains an LLVM implementation of BEC and its application to the LLVM instruction scheduler.

If you use the work, please cite our CGO paper:

Yousun Ko and Bernd Burgstaller, "BEC: Bit-Level Static Analysis for Reliability against Soft Errors," 2024 IEEE/ACM International Symposium on Code Generation and Optimization (CGO), Edinburgh, United Kingdom, 2024, pp. 283-295, doi: 10.1109/CGO57630.2024.10444844

@inproceedings{BEC:2024,
  author       = {Yousun Ko and Bernd Burgstaller},
  title        = {{BEC:} Bit-Level Static Analysis for Reliability against Soft Errors},
  booktitle    = {{IEEE/ACM} International Symposium on Code Generation and Optimization},
  pages        = {283--295},
  publisher    = {{IEEE}},
  year         = {2024},
  url          = {https://doi.org/10.1109/CGO57630.2024.10444844},
  doi          = {10.1109/CGO57630.2024.10444844},
  location     = {Edinburgh, United Kingdom},
  series       = {{CGO} 2024},
}

Contacts

How to apply patches to LLVM

The implementation is based on LLVM 16.0.0. Clone the required version of LLVM.

git clone https://github.com/llvm/llvm-project.git
cd llvm-project
git checkout tags/llvmorg-16.0.0

Apply patches on top of the repository by using git apply. For example, the command below applies the first patch on the repository.

git apply 0001-BEC-Generate-auxiliary-register-infor-in-assembly.patch

Apply patches up to 0005-BEC-RISCV-Add-post-ra-Fault-Index-Coalescer-for-RISC.patch to obtain the BEC analysis implementation for RISC-V without affecting the instruction scheduler.

The patch 0006-BEC-RISCV-Add-reliability-aware-post-ra-instruction-.patch enables the vulnerability-aware instruction scheduler to minimize the susceptibility to soft errors based on the BEC analysis.

Apply the patch 0007-BEC-RISCV-Activate-the-worst-reliability-aware-post-.patch on top of all the other patches to enable the vulnerability-aware instruction scheduler, but to maximize the susceptibility to soft errors.

Find the Getting Started with the LLVM System page for further information on how to build and install LLVM from source code.

About

Bit-level Error Coalescing (BEC) analysis pass for LLVM

Resources

License

Stars

Watchers

Forks

Packages

No packages published