LICENSE
This content has been generated via the EU H2020 RIA project COEMS - Continuous Observation of Embedded Multicore Systems
https://www.coems.eu

This work is licensed under a Creative Commons Attribution 4.0 International License, see https://creativecommons.org/licenses/by/4.0/.

The COEMS project is funded through the European Horizon 2020 program under grant agreement no. 732016.

OVERVIEW
This folder contains Open Data for several cases of study in the context of the COEMS EU H2020 project, which provides a novel platform for online monitoring of multicore systems.
For each case of study, we collect these data: the source code, the compiled instrumented binary file, the execution traces, the result of analyzing those execution traces using Tessla specifications, and the Tessla specifications.
Each experiment usually consists of a 'default' version, that shows the ideal implementation and execution of a multicore code with no errors; and one or more 'faulty' versions which include, for instance, potential data race errors or deadlocks.
The evaluation of Tessla specifications over the execution traces should point out potential problems in the code.
The content of this folder is organised in several subfolders depending on the name of the experiment and the selected configuration (i.e., 'default' or 'faulty').
In particular, the folder hierarchy is:
Root:
|_> case_study_name:
    |_> src/
    |_> bin/
    |_> traces/
        |_> default
        |_> others
    |_> result/
        |_> default
        |_> others

The src/ folder contains a flattened version of the original C code, which is shrunk into a single file in the case of several source files.
The bin/ folder contains the compilation of the C file into a binary executable.
The names of the flattened C file and binary executables are appended with the 'default' ('data_race') label for identifying the good and buggy versions.
The traces/ folder contains the execution traces and the Tessla specifications.
The result/ folder contains the result of evaluating the Tessla specifications on the execution traces.
The execution traces and Tessla results are classified in several subfolders depending on the target configuration (i.e., 'default').

SPECIFIC CONFIGURATION

This README file and the rest of the data in this folder have been automatically created.
The experiments are run for the x86 platform in order to run the offline monitoring and analysis of execution traces.
The COEMS specific ARM hardware allows the online monitoring of execution traces for the same experiments by tuning some configuration parameters.
ARM hardware traces are emulated by applying the diff_ts.pl script over the x86 software traces.
The case of study that are analyzed are:
readers_writers rosace_case_study

COMMAND LINE

The following lines record the most important command lines that are executed during the generation of the Open Data set.

readers_writers

Folders: readers_writers/src_readers_writers readers_writers/bin_readers_writers readers_writers/traces_readers_writers readers_writers/result_readers_writers
Experiment readers_writers/default

Clean & Compile
make -f MakefileStandalone clean
make -f MakefileStandalone P=default SPEC_IN=bin/rw_flattened_default
Tessla specification for analyzing software traces bin/rw_hw_sw.tessla
Tessla specification for analyzing hardware traces bin/rw_diff.tessla

Run exe & Generate traces (1-th execution)
readers_writers/bin_readers_writers/

Software trace: readers_writers/traces_readers_writers/default/swtrace_1.log
Hardware trace (i.e., conversion of the soft. trace via diff_ts.pl script): readers_writers/traces_readers_writers/default/hwtrace_1.log

Analyze the traces using Tessla specs

HW Trace
tessla readers_writers/traces_readers_writers/default/rw_diff_1sthalf.tessla readers_writers/traces_readers_writers/default/hwtrace_1.log | tessla readers_writers/traces_readers_writers/default/rw_diff_2ndhalf.tessla > readers_writers/result_readers_writers/default/tessla_hw_1.out

SW Trace
tessla readers_writers/traces_readers_writers/default/rw_hw_sw.tessla readers_writers/traces_readers_writers/default/swtrace_1.log > readers_writers/result_readers_writers/default/tessla_sw_1.out

Run exe & Generate traces (2-th execution)
readers_writers/bin_readers_writers/

Software trace: readers_writers/traces_readers_writers/default/swtrace_2.log
Hardware trace (i.e., conversion of the soft. trace via diff_ts.pl script): readers_writers/traces_readers_writers/default/hwtrace_2.log

Analyze the traces using Tessla specs

HW Trace
tessla readers_writers/traces_readers_writers/default/rw_diff_1sthalf.tessla readers_writers/traces_readers_writers/default/hwtrace_2.log | tessla readers_writers/traces_readers_writers/default/rw_diff_2ndhalf.tessla > readers_writers/result_readers_writers/default/tessla_hw_2.out

SW Trace
tessla readers_writers/traces_readers_writers/default/rw_hw_sw.tessla readers_writers/traces_readers_writers/default/swtrace_2.log > readers_writers/result_readers_writers/default/tessla_sw_2.out

Experiment readers_writers/race

Clean & Compile
make -f MakefileStandalone clean
make -f MakefileStandalone P=race SPEC_IN=bin/rw_flattened_race
Tessla specification for analyzing software traces bin/rw_hw_sw.tessla
Tessla specification for analyzing hardware traces bin/rw_diff.tessla

Run exe & Generate traces (1-th execution)
readers_writers/bin_readers_writers/

Software trace: readers_writers/traces_readers_writers/race/swtrace_1.log
Hardware trace (i.e., conversion of the soft. trace via diff_ts.pl script): readers_writers/traces_readers_writers/race/hwtrace_1.log

Analyze the traces using Tessla specs

HW Trace
tessla readers_writers/traces_readers_writers/race/rw_diff_1sthalf.tessla readers_writers/traces_readers_writers/race/hwtrace_1.log | tessla readers_writers/traces_readers_writers/race/rw_diff_2ndhalf.tessla > readers_writers/result_readers_writers/race/tessla_hw_1.out

SW Trace
tessla readers_writers/traces_readers_writers/race/rw_hw_sw.tessla readers_writers/traces_readers_writers/race/swtrace_1.log > readers_writers/result_readers_writers/race/tessla_sw_1.out

Run exe & Generate traces (2-th execution)
readers_writers/bin_readers_writers/

Software trace: readers_writers/traces_readers_writers/race/swtrace_2.log
Hardware trace (i.e., conversion of the soft. trace via diff_ts.pl script): readers_writers/traces_readers_writers/race/hwtrace_2.log

Analyze the traces using Tessla specs

HW Trace
tessla readers_writers/traces_readers_writers/race/rw_diff_1sthalf.tessla readers_writers/traces_readers_writers/race/hwtrace_2.log | tessla readers_writers/traces_readers_writers/race/rw_diff_2ndhalf.tessla > readers_writers/result_readers_writers/race/tessla_hw_2.out

SW Trace
tessla readers_writers/traces_readers_writers/race/rw_hw_sw.tessla readers_writers/traces_readers_writers/race/swtrace_2.log > readers_writers/result_readers_writers/race/tessla_sw_2.out


rosace_case_study

Folders: rosace_case_study/src_rosace_case_study rosace_case_study/bin_rosace_case_study rosace_case_study/traces_rosace_case_study rosace_case_study/result_rosace_case_study
Experiment rosace_case_study/default

Clean & Compile
make -f MakefileStandalone clean
make -f MakefileStandalone P=default bin/rosace_flattened_default
Tessla specification for analyzing software traces specifications/rosace_backend.tessla
Tessla specification for analyzing hardware traces specifications/rosace_min.tessla

Run exe & Generate traces (1-th execution)
rosace_case_study/bin_rosace_case_study/

Software trace: rosace_case_study/traces_rosace_case_study/default/swtrace_1.log
Hardware trace (i.e., conversion of the soft. trace via diff_ts.pl script): rosace_case_study/traces_rosace_case_study/default/hwtrace_1.log

Analyze the traces using Tessla specs

HW Trace
tessla --timeunit ns rosace_case_study/traces_rosace_case_study/default/rosace_backend.tessla rosace_case_study/traces_rosace_case_study/default/hwtrace_1.log> rosace_case_study/result_rosace_case_study/default/tessla_hw_1.out

SW Trace
tessla --timeunit ns rosace_case_study/traces_rosace_case_study/default/rosace_backend.tessla rosace_case_study/traces_rosace_case_study/default/swtrace_1.log > rosace_case_study/result_rosace_case_study/default/tessla_sw_1.out

Run exe & Generate traces (2-th execution)
rosace_case_study/bin_rosace_case_study/

Software trace: rosace_case_study/traces_rosace_case_study/default/swtrace_2.log
Hardware trace (i.e., conversion of the soft. trace via diff_ts.pl script): rosace_case_study/traces_rosace_case_study/default/hwtrace_2.log

Analyze the traces using Tessla specs

HW Trace
tessla --timeunit ns rosace_case_study/traces_rosace_case_study/default/rosace_backend.tessla rosace_case_study/traces_rosace_case_study/default/hwtrace_2.log> rosace_case_study/result_rosace_case_study/default/tessla_hw_2.out

SW Trace
tessla --timeunit ns rosace_case_study/traces_rosace_case_study/default/rosace_backend.tessla rosace_case_study/traces_rosace_case_study/default/swtrace_2.log > rosace_case_study/result_rosace_case_study/default/tessla_sw_2.out

Experiment rosace_case_study/race

Clean & Compile
make -f MakefileStandalone clean
make -f MakefileStandalone P=race bin/rosace_flattened_race
Tessla specification for analyzing software traces specifications/rosace_backend.tessla
Tessla specification for analyzing hardware traces specifications/rosace_min.tessla

Run exe & Generate traces (1-th execution)
rosace_case_study/bin_rosace_case_study/

Software trace: rosace_case_study/traces_rosace_case_study/race/swtrace_1.log
Hardware trace (i.e., conversion of the soft. trace via diff_ts.pl script): rosace_case_study/traces_rosace_case_study/race/hwtrace_1.log

Analyze the traces using Tessla specs

HW Trace
tessla --timeunit ns rosace_case_study/traces_rosace_case_study/race/rosace_backend.tessla rosace_case_study/traces_rosace_case_study/race/hwtrace_1.log> rosace_case_study/result_rosace_case_study/race/tessla_hw_1.out

SW Trace
tessla --timeunit ns rosace_case_study/traces_rosace_case_study/race/rosace_backend.tessla rosace_case_study/traces_rosace_case_study/race/swtrace_1.log > rosace_case_study/result_rosace_case_study/race/tessla_sw_1.out

Run exe & Generate traces (2-th execution)
rosace_case_study/bin_rosace_case_study/

Software trace: rosace_case_study/traces_rosace_case_study/race/swtrace_2.log
Hardware trace (i.e., conversion of the soft. trace via diff_ts.pl script): rosace_case_study/traces_rosace_case_study/race/hwtrace_2.log

Analyze the traces using Tessla specs

HW Trace
tessla --timeunit ns rosace_case_study/traces_rosace_case_study/race/rosace_backend.tessla rosace_case_study/traces_rosace_case_study/race/hwtrace_2.log> rosace_case_study/result_rosace_case_study/race/tessla_hw_2.out

SW Trace
tessla --timeunit ns rosace_case_study/traces_rosace_case_study/race/rosace_backend.tessla rosace_case_study/traces_rosace_case_study/race/swtrace_2.log > rosace_case_study/result_rosace_case_study/race/tessla_sw_2.out
