User:Maryamraiyat/sandbox

The input.yaml file is used to configure the compilation and fault injection parameters and options. This file must be provided in same directory as your single IR file before going through the whole procedure. If you have moved the directory created in step 1), you also need to provide the file in the parent directory of your profiling/faultinjection executable in order to run the step 2)/3).

A few things to note about yaml formating is that you must use spaces instead of tabs, and that you must leave one space after using a : or - sign. Incorrect formatting will cause the script to crash or throw an error.

inputmasterlist.yaml_ under < LLFISRC_ROOT >/bin/_ is provided as a guide that contains all possible input keys and values that will be described below. It will be a useful reference for constructing your own input.yaml. There is a sample input.yaml is provided as sampleinput.yaml_ also.

The input.yaml file can be thought of as having 2 mandatory sections. compileOption, and runOption. An optional kernelOption, and an optional timeOut can be selected also.

compileOption hierachy

-instSelMethod can = insttype or = custominstselector

if insttype: specify include and exclude list as described in inputmasterlist.yaml_, to include/exclude certain types of instructions as fault injection targets. if custominstselector: specify customInstSelector (and customInstSelectorOption), to use the custom instruction selector to select instructions as fault injection targets. -regSelMethod can = regloc or = customregselector

if regloc: specify srcreg, dstreg etc... as described in inputmasterlist.yaml_, to include certain operands as fault injection register target. if customregselector: specify customRegSelector (and customRegSelectorOption), to use the custom register selector to select registers as fault injection register target. -includeInjectionTrace can be omitted or have -forward and/or -backward, to include forward/backward trace of the selected instructions above as fault injection targets.

-tracingPropation, when specified, turns on instruction tracing, which trace the dynamic instruction values of all instructions. This can be used to study the fault propagation at the instruction level.

maxTrace accepts an integer that specifies how many instructions to trace after fault is injected during fault injection run debugTrace can be selected as true to include debug information during the instrumentation. For runOptions. You can specify up to 6 options. numOfRuns is mandatory.

numOfRuns: fi_type: type of faults to be injected. bitflip, stuckat_0_, stuckat_1_ etc, default is bitflip. You can also develop custom fault types and specify them here. fi_cycle: The runtime cycle to do the fault injection; if not specified, LLFI will randomly pick one of total runtime cycles collected in the profiling run. We recommend you not to specify the option unless you know what you are doing (e.g. you are reproducing a fault injection experiment). fi_reg_index: The register index you intend to inject faults into. If not specified, LLFI will randomly pick one of the target registers of the selected instruction for fault injection. We recommend you not to specify the option unless you know what you are doing (e.g. you are reproducing a fault injection experiment). fi_index: The LLFI index you intend to inject faults into. NOTE here if you specify this option, LLFI will inject faults into every runtime instances of the specified instruction. Also NOTE that if you have specified fi_cyle, this option will not be used. If you want to inject randomly into ONLY ONE runtime instance of a specific instruction, use the custom instruction selector named llfiindex for compileOpt and fi_cycle for runtimeOpt. fi_bit: The bit you want to inject faults into. If not specified, LLFI will randomly pick one of the target register bits for fault injection. We recommend you not to specify the option unless you know what you are doing (e.g. you are reproducing a fault injection experiment).