QGen – Qualifiable and Customisable Code Generator

A Code Generator to Help Achieve the Highest Levels of Certification


QGen is an automatic code generator that preserves the model semantics in the generated code.

From code generation and model-level verification and debugging, through highly optimizing compilers, formal verification, and advanced static analysis, down to instruction-level target emulation and instrumentation-free structural code coverage, QGen joins AdaCore’s range of qualifiable tools for one-stop streamlined development and verification of critical systems.


A single version of QGen supports multiple versions of the Simulink® / Stateflow® environment, from 2011b onwards to today’s latest versions, for both Windows and Linux platforms. Developers can thus choose among modeling tool versions based on their project’s needs, without being forced to migrate to a different code generator.

QGen can be invoked directly from the Simulink® environment’s user interface, using either the menu bar item or the contextual menu for a specific Simulink® subsystem.

QGen is integrated with AdaCore’s GNATcoverage and GNATemulator tools for seamless back-to-back Processor-In-The-Loop (PIL) testing using a qualifiable processor emulator (GNATemulator) and a qualifiable structural coverage analysis tool (GNATcoverage). GNATcoverage supports structural coverage analysis up to MC/DC without any code instrumentation.

The qualifiable QGen code generator can generate code in the portable MISRA subset of C and the SPARK subset of Ada, ensuring the generated code is suitable for formal analysis and for projects following software standards such as DO-178C, ISO 26262, or EN 50128.

The supported feature set from the Simulink® and Stateflow® environments has been carefully selected to ensure code generation that is appropriate for critical systems, leaving out features that might result in unpredictable behavior or potentially unsafe source code.

The QGen tool suite goes beyond automatic code generation, to include both static model verification and interactive model-level debugging of the generated code.  The QGen model-level debugger provides a side-by-side view of the model and the generated code, allowing the developer to:
  • set breakpoints
  • view, update and compare signal values
  • to step through execution

The QGen debugger can be used for testing the generated code as well as any hand-written code,  providing a uniquely productive bridge between control engineering and software engineering.