Version:
v12.0
[release notes]

# About CIF

#### Synthesis-based engineering

CIF supports synthesis-based engineering (SBE), an engineering approach to design and implement supervisory controllers. The engineering approach combines model-based engineering with computer-aided design to produce correct-by-construction controllers. It does so by automating as many steps as possible in the development process.

Supervisory controller synthesis is a main element of synthesis-based engineering, and a key feature of CIF. It involves the automatic generation of supervisory controller models. Implementation of the controller is achieved through (implementation language) code generation, improving speed and reducing the number of errors introduced at this stage. Combined, they allow engineers to focus on what the controller should do, rather than how it should do it, and how this is to be implemented.

Synthesis-based engineering has many more benefits. As the engineering approach uses well-defined models, designs can be discussed, analyzed, model-checked, or simulated. That allows finding and correcting issues early in the development process, rather than during later stages where correcting them is more costly. It also supports a comprehensive modular design and efficient incremental engineering. Ultimately, this reduces development time and improves the quality of the resulting supervisory controllers.

For more information, see CIF's synthesis-based engineering documentation, or follow the online SBE course.

#### CIF language

The CIF language is a powerful declarative automata-based modeling language for the specification of discrete event, timed (linear dynamics), and hybrid (piecewise continuous dynamics) systems.

It can be seen as a rich state machine language with the following main features:

- Modular specification with synchronized events and communication between automata.
- Many data types are available (booleans, integers, reals, tuples, lists, arrays, sets, and dictionaries), combined with a powerful expression language for compact variable updates.
- Text-based specification of the automata, with many features to simplify modeling large non-trivial industrial systems.
- Primitives for supervisory controller synthesis are integrated in the language.

For more information, see the language tutorial and language reference documentation.

#### CIF tools

The CIF tooling supports the entire development process of controllers, including among others specification, supervisory controller synthesis, simulation-based validation and visualization, verification, real-time testing, and code generation.

Highlights of the CIF tooling include:

- Text-based editor that allows to easily specify and edit models.
- Feature-rich powerful data-based supervisory controller synthesis tool. A transformation to the supervisory controller synthesis tool Supremica is also available.
- A simulator that supports both interactive and automated validation of specifications. Powerful visualization features allow for interactive visualization-based validation.
- Conversion to formal verification tools such as mCRL2 and UPPAAL.
- Implementation language code generation (PLC languages, Java, C, and Simulink) for real-time testing and implementation of the designed controller.

For more information, see the tool documentation.

#### CIF application

CIF has been applied in industry, for various domains, including the medical, semiconductor and public works (infrastructure) domains.

The main application area of CIF is the development of supervisory controllers. The language and tools are however generic, and can be used to work with state machines in general for various other purposes.

#### Part of Eclipse ESCET

The CIF language and tools are being developed as part of the Eclipse ESCET open-source project. The CIF tools are part of the Eclipse ESCET toolkit.

For more information, see the Eclipse ESCET project website.