Skip to content

jcmarsh/drseus

Repository files navigation

DrSEUs

The Dynamic Robust Single Event Upset Simulator, Created by Ed Carlisle IV

Fault injection framework and application for performing CPU fault injection on:

  • P2020RDB (Using BDI3000 JTAG debugger)
  • ZedBoard (Using BDI3000 or Integrated JTAG debugger)
  • Simics simulation of P2020RDB
  • Simics simulation of CoreTile Express A9x4 (Only two cores simulated)

DrSEUs Terminology:

  • Campaign: contains gold execution run of target application without fault injections that is used for comparison with one or more iterations
  • Iteration: monitored execution run of target application with one or more injections
  • Injection: single bit flip of randomly selected register or TLB entry

Run drseus.py --help for usage information

Use arguments in files by prefixing with "@", for example: "drseus.py @conf/sample/p2020"

Example:

  • drseus.py new ppc_fi_2d_conv_fft_omp -s -a "lena.bmp out.bmp" -f lena.bmp -o out.bmp
    • Creates a Simics fault-injection campaign
    • Sends binary file "ppc_fi_2d_conv_fft_omp" and input file "lena.bmp" to the device under test
    • Runs "ppc_fi_2d_conv_fft_omp lena.bmp out.bmp" on the device under test
    • Checks for output file "out.bmp"
  • drseus.py inject -n 100 -p 8
    • Performs 100 injection iterations using 8 processes
  • drseus.py log

Before using DrSEUs for the first time, you must first run "scripts/install dependencies.sh" then run "scripts/setup environment.sh" then run "./python/bin/python3 ./scripts/merge.py"