-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' of https://github.com/vovatrykoz/E2E_Framework
- Loading branch information
Showing
1 changed file
with
94 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,94 @@ | ||
# Introduction | ||
|
||
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. | ||
|
||
# Structure | ||
|
||
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 | ||
|
||
### io/ | ||
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 <task_name> | ||
<t1_period>,<t1_wcet>,<t1_priority>,<t1_activation_time> | ||
... | ||
<tn_period>,<tn_wcet>,<tn_priority>,<tn_activation_time> | ||
END <task_name> | ||
``` | ||
See example files as well | ||
|
||
For example, input contained in example2.txt will produce the following results: <be> | ||
|
||
``` | ||
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 | ||
``` | ||
|
||
### Analysis.h and Analysis.cpp | ||
|
||
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 | ||
|
||
### MathFrameowk.h and MathFrameowk.cpp | ||
|
||
Contains boolean predicates that determine reachability between task instances. They are essentially definitions of equations 3-8 in the paper | ||
|
||
### TimedPath.h and TimedPath.cpp | ||
|
||
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. | ||
|
||
### Task.h and Task.cpp | ||
|
||
Contain data structures used to represnt tasks and task instances | ||
|
||
## main.cpp | ||
|
||
Entry point of the program. Reads user input, performs the analysis, and logs the results. The analysis itself starts on line 57: | ||
|
||
![image](https://github.com/user-attachments/assets/a6c05188-35ce-47c2-aa04-a5926c65f381) | ||
|
||
|
||
## tests/ | ||
|
||
Contains test for the implementation | ||
|
||
# Executable usage | ||
|
||
Default build process produced an executable called ```runner``` <br> | ||
```Usage: ./runner <reader_type> <logger_type>``` | ||
|
||
Currently supported logger types: | ||
- ```console``` | ||
- ```text``` | ||
|
||
Currently supported reader types: | ||
- ```console``` | ||
- ```text``` | ||
|
||
If no arguments are provided, the program will default to ```console``` |