Cross-Layer Injection
The general usage is similar to the RTL gate-level injector that models particle strikes.
However, the error config and the environment variable $HAMARTIA_ERROR_PATH are different.
Steps
-
Prepare an error config An error config specifies everything needed for RTL gate-level simulation. It consists of the following fields:
cache: A folder where inetermediate data will be saved to improve peformancecell_libs: Cell library upon which the netlists basedliberties: Available operating conditions in.libformatnetlist_dirs: A folder that contains all post-synthesis verilog filesopen_timer_path: A path to the executable of OpenTimer (external/OpenTimer).fault: Characteristics of the faults to modelcycle_time: Clock cycle time in nano secondstype: Category of timing errorsindex: Index in the category listduration: Duration of the timing error
See
rtl_component/configs/timing/dw_saed32.yamlfor example error config. Modify those paths to your local paths. -
Specify TIMING_RTL as the error model name and the error_config path to the high-level injector's constructor. The error config path is what you created in Step 1.
-
Set
$HAMARTIA_ERROR_PATHtosrc/timing_model.py. - Launch your injector. The error context will then contain the injection results of this injector.
Invoke with Hamartia's Instruction-level Injector
$PIN_INJECTOR_DIR/bin/injector.sh -e TIMING_RTL -q <config_file> -i <instruction>