CIF supports synthesis-based engineering, 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 the synthesis-based engineering documentation.
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:
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:
For more information, see the tool documentation.
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.
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.