This page provides an overview of the toolchain used for the development of supervisory controllers using CIF 3 tooling. It illustrates the full path to take from specifying plants and requirements, via simulation, to the implementation on the actual hardware.

You should read this page in its entirety at least once. After that, it can serve as reference. However, it may be easier to start with the first exercise instead, which goes through the entire toolchain using a simple example. The exercise doesn’t cover all the details, but gets you started with a practical example, unlike this page, which describes everything in a much more general way.


The figure below gives an overview of the toolchain. While reading about the toolchain, you should look at this figure often, to get a good understanding of the relations between the different files and tools.


The toolchain consists of several phases. Typically, the phases are performed in order, although sometimes phases may be skipped, or it may be necessary to go back to a previous phase. Each of the phases is explained in detail on a page of its own:

Applicability of the toolchain

The above toolchain can be applied to design a controller for one of the four workstations used in the 4K420 course. You can use the 4K420 course files to work on the exercises, to work on a final assignment for the 4K420 course, or just to play with them as examples.

However, the toolchain can also be applied to design a controller for other systems. The descriptions of the various phases explain both scenarios.

Naming convention

While using our tools, and following the above toolchain, you are free to name your files however you like. However, the toolchain figure uses a naming convention for files, which is used through the documentation.

Most of the file names in the figure include a # symbol. This symbol is to be replaced by the name of the system for which a controller is being developed. For instance, when working on a controller for a processing station, the # could be replaced by process_station, in all the file names.

Some of the file names in the figure include a @ symbol. This symbol is to be replaced by eventbased for event-based synthesis, or by databased for data-based synthesis.

Using the names indicated in the figure ensures consistency and makes it easier to follow the instructions given in the documentation, where the same naming convention is used. It also makes it easier to use the provided scripts.


The naming convention is not just useful for consistency. It also makes it possible to use the scripts provided as part of the 4K420 course files. These scripts can be used to automate most of the steps of the toolchain.

The scripts can be used regardless of whether you want to design a controller for one of the four workstations used in the course, or any other system. However, if used for other systems, small modifications may be needed.

The descriptions of the different phases also explain the use of the scripts, and some hints on how to modify them for other systems.