simplify the design of cause-effect chains

Download V1.1 (RTSS@Work 2016)

Academic basis of the tool

The concepts implemented in MECHAniSer are based on the paper "Synthesizing Job-Level Dependencies for Automotive Multi-Rate Effect Chains", in the proceedings of 22nd IEEE International Conference on Embedded and Real-Time Computing Systems (RTCSA), 2016.

Installation

The tool is developed in Java which makes it platform independent.
Installation is not required, the provided .jar file can be executed directly on all platforms.

First steps with the tool

The download provides the tool as well as a folder which serves as a standard location for MECHAniSer project files.
The demo project CaseStudy.xml is already in the folder.

The main window

Step 1: Opening a project file

A project file can be opened by clicking on Menu/Open. Alternatively a project files can be imported from other tools via Menu/Import.

To open the provided case study select the file in /data/CaseStudy.xml and click ok.

Step 2: Changing the chain in focus

In a first step the initially selected cause-effect chain is changed. To do so click on Change Chain.

The window to select a cause-effect chain opens. Select IgnitionMAF_Chain and click ok. The chain in focus changes and the view is now equal to the screenshot of the main window above.

Step 3: Calculating the data age of the chain

In order to calculate all data propagation paths of the chain IgnitionMAF_Chain and to determine the minimum and maximum data age click Calculate Delays.

The output is provided in the text are. The tool reports a minimum data age of 4ms and a maximum data age of 55ms. We see that the specified data age constraint is 25ms and thus lower than the maximum data age.

Step 4: Inspecting the data propagation graph

In order to get a clearer view of the different paths the graph view can be utilised. Open this view by clicking on Data Propagation Path on the main window. A window will appear and show the graph view.

The view shows all involved task instances as nodes, and all possible data propagation paths are depict as edges. Paths which lead to a larger end-to-end delay than the specified constraint are shown in dashed lines. Detailed information of nodes can be obtained by clicking on them.

Step 5: Inspecting the trace view

The trace view can be utilised to see the exact intervals when a job may read input data and when a jobs output data may be available. Open this view by clicking on Interval Trace. A window will appear and show the trace view.

Step 6: Generating Job-Level Dependencies

Since some of the data-propagation trees have larger maximum data age than the constraint allows this step will demonstrate how to generate job-level dependencies to meet the constraint. Note that this is done on system level for all specified cause-effect chains. To generate the job-level dependencies click on the button Generate Dependencies.

The left table Job-Level Dependencies now shows the generated dependencies.

Step 7: Revisiting the data propagation graph

Open the data propagation graph again. The generated job-level dependencies are accounted for and visualised via gray arrows. Note that no dashed lines are in the graph which means that the age constraint is met.

Step 8: Saving the project

The changes can be saved to the project. This is done by clicking on Menu/Save.

Step 9: Starting a project from scratch

Starting a new project can be done by clicking on Menu/New. Note that previously unsaved changes are lost at this point.

Step 10: Adding a task

A new task can be added to the project by clicking on Application/Add New Task.

A window will appear and the tasks paramers can be selected. Create a task with a period of 20ms and a worst case execution time of 2ms. Note that in this version only ms values can be added. Click ok to add the task. Do the same again fro a second task. This time with period 4ms and an execution time of 1ms.

Step 11: Creating a new cause-effect chain

A new cause-effect chain can be added to the project by clicking on Application/Add New Chain.

Insert a name of your choice and slick ok. The new chain will be automatically in focus, but empty.

Step 12: Adding tasks to a cause-effect chain

We add both tasks to the cause-effect chain. First select a task in the table Tasks, then click on the button . This adds the task to the cause-effect chain. Do this for both tasks.

Step 13: Changing positions in the chain

When adding tasks to a chain they are always appended at the end. Often that is not the final position. To change the position of a task, select the task in the table Cause-Effect Chain and click on the button or

Step 14: Manually adding a job-level dependency

Job-level dependencies can also be added manually. To do so, click on the button Add Dependency. A window will appear.

In the new window you have 4 drop-down menus, 2 are enabled. Select the Predecessor and the Successor task. Once done the two remaining drop-down menus become enabled while the others get locked. Select the instance of the jobs of each task which are dependent on each other. Note that this is relative to the hyperperiod of the two tasks only. Click ok to add the dependency.

Step 15: Changing a tasks trigger

A task in a cause-effect chain can be optionally triggered by its predecessor. To do so, mark the checkbox in the chain table. An event triggered task inherits the period of the predecessor task, and cannot be part of a second chain.

The trigger behaviour of each task in a chain is additionally visualised in the chain-view.

Step 16: Interactive visualisation of the interval-concept

When clicking on Help/Help a new window opens. This window shows two jobs and the resulting read and data interval depending on their current position. Change the position of the jobs by dragging them with the mouse. The interval where data may be read and available respectively are shown in lighter color. The extremes represent the read interval and the data interval.

Information is provided by pressing the h key and visited intervals are reset by pressing the spacebar

Contact

Matthias Becker
matthias.becker@mdh.se

Old Versions

V1.0 (WATERS 2016)