This framework implements the mathematical framework presented in "A Compositional Framework for End-to-End Path Delay Calculation of Automotive Systems under Different Path Semantics" by Feiertag et al.
The code is split into the include folder containing all the headers and the source folder containing the code that implements the functions defined in the headers. There are several components in there
The include/io/ and source/io/ subfolders contain implementation and definitions for code that is responsible for taking in user input and logging the analysis results. Right now, two ways for reading and writing are supported: console-based and text-based.
Text based option supports a file that is formated as follows:
START <timed_path_name>
<t1_period>,<t1_wcet>,<t1_priority>,<t1_activation_time>
...
<tn_period>,<tn_wcet>,<tn_priority>,<tn_activation_time>
END <timed_path_name>
See example files as well
For example, input contained in example2.txt will produce the following results:
Results
Number of analyzed paths: 5
Number of unreachable paths: 1
Unreachable paths:
E
Number of reachable paths: 4
Reachable paths:
A
B
C
D
Last-to-Last semantics:
Path with maximum latency over all reachable paths: A
Maximum latency over all reachable paths: 40
Last-to-First semantics:
Path with maximum latency over all reachable paths: B
Maximum latency over all reachable paths: 10
First-to-Last semantics:
Maximum path delay: 80
First-to-First semantics:
Maximum path delay: 50
Contains definitions and functions that can be used to perform an end-to-end analysis on a set of timed paths. They allow performing the analysis according to different semantics and they essentially implement equations 10-17 in the paper
Contains boolean predicates that determine reachability between task instances. They are essentially definitions of equations 3-8 in the paper
Represent a task chain and allows simple manipulations and calculations on it, for example end-to-end calculation for a specific path, first task instance activation time etc.
Contain data structures used to represnt tasks and task instances
Entry point of the program. Reads user input, performs the analysis, and logs the results. The analysis itself starts on line 57:
Contains test for the implementation
Default build process produced an executable called individualPathAnalyzer
and an executable taskAnalyzer
Usage: ./individualPathAnalyzer <reader_type> <logger_type>
Usage: ./taskAnalyzer <reader_type> <logger_type>
taskAnalyzer
uses the taskExample1.txt and taskExample2.txt as examples
individualPathAnalyzer
uses the example1.txt and example2.txt as examples
Currently supported logger types:
console
text
Currently supported reader types:
console
text
If no arguments are provided, the program will default to console