Frequently Asked Questions

Which Simulink® blocks are supported by QGen?

QGen supports approximately 120 different Simulink® block types. Please refer to Simulink Block Types and Constraints for the complete list.

Which additional features of the Simulink® environment are supported by QGen?

Model Libraries, Model References, Simulink.Parameter, Simulink.Signal, Storage Classes, Structs

Which MATLAB functions are supported by QGen?

abs, acos, acosh, asin, asinh, atan, atan2, atanh, cos, cosh, exp, log, log10, min, max, mod, rem, round, sign, sin, sinh, sqrt, tan, tanh, transpose.

How does AdaCore select which features of the Simulink® environment to support?

We carefully selected a safe subset that guarantees predictable code generation patterns, that does not require any run-time support, and that allows for tool qualification against a safety standard like DO-178C.

Which Stateflow® features are supported?

QGen supports all major features of Stateflow®, with C as the action language. For specific details please see the detailed list of Stateflow modeling rules.

What do you mean by "qualifiable"?

A tool is qualifiable when its developer makes available a documentation “kit” that enables the tool to be qualified for a project’s use with minimal additional effort performed by the project personnel.  The QGen Code Generator will be qualifiable for DO-178C at Tool Qualification Level 1 and for ISO 26262 at TCL3 (developed in compliance with a safety standard). The QGen Model Verifier will be qualifiable for DO-178C at Tool Qualification Level 5.

Which model properties can you verify with the QGen Model Verifier?

  • Run-time errors (such as integer overflow, signal ranges out of bound, and division by zero);
  • Logic errors (conditions which are always true or false, expressions that always return the same value);
  • Functional/safety properties modeled using Simulink® Assertion blocks.

What about back-to-back testing?

QGen can be used in conjunction with GNATemulator and GNATcoverage to support processor-in-the-loop (PIL) testing and structural coverage analysis without any code instrumentation.  The QGen Debugger can log results from host or target execution of the generated code, and load the log file into Simulink® to trace the results back to the model.

How do you ensure the generated code is consistent with the simulation performed by the Simulink® environment?

QGen is extensively tested against the simulation of the Simulink® model. A tool validation suite comparing the behavior of the generated code against simulation on a wide range of Simulink® models is available on demand.

QGen has been developed following a software safety standard, in particular DO-178B/C. As part of that process, a specification of the generated coding pattern for every supported feature is formally defined.