Constraint Modeling

The Constraint page is your starting point for any constraint modeling activity. Some patterns are provided to facilitate the definition of constraints. Below, we give an overview of the constraint patterns available so far:

Allocation

By selecting a task in the table on the left, and a (HW) execution unit on the right you can add an allocation or dislocation constraint.

In the figure above, we are creating a constraint that requires the allocation of Task_Component to either Core01 or Core02.

Function Coupling

In the Function Coupling Pattern you are allowed to force some tasks to be deployed into the same/distinct (HW) execution units. First select a set of tasks in the table on the left, and then select either Coupling or Decoupling in the option button on the right.

In the figure above, e.g., we are coupling the tasks Task_Component and Task_Component1.

Safety Level

In the Safety Level Pattern you are allowed to specify the allocated safety level of each HW execution unit by modifying the values in the table. E.g., if you specify that Core03 must be lower than SIL2, a constraint is created that forces all tasks deployed into Core03 to have a safety level lower than SIL2.

Memory Utilization

In the Memory Utilization Pattern you are allowed to specify (as a percentage value) the amount of memory that can be used by tasks allocated to a given execution unit. In order to do so, just modify the values in the last column of the table. In the figure above, e.g., we are specifying that the tasks allocated to Core01 can only use 50% of its memory. As you can notice from the figure, in the DSE Navigator on the left the constraints just defined appear listed as Target Definition steps.