Compiler Qualification Service

The compiler is systematically tested for compliance with the ISO C or C++ standard.

Compiler Qualification Service

Customer Experience

Overview

The Compiler Qualification Service allows compiler users to achieve the tool confidence level that is required by the functional safety standard. With SuperTest, our engineers qualify any compiler for your specific use case. The compiler is systematically tested for compliance with the ISO C or C++ standard. This process, and any compiler defects detected during qualification, are detailed in a comprehensive qualification report that matches the requirements of the applicable functional safety standard such as ISO 26262, IEC 61508 or EN 50128 / EN 50716. The report also includes a safety manual that describes the mitigations needed to avoid the compiler defects. Optionally, you can choose to get an Application Hazard Scanner to automatically enforce the safety manual. This way, you can ensure that the compiler can be used safely in your safety-critical software project.

SuperTest offers hand-crafted and generated test files, including millions of conformance tests to address quality and functional safety. It includes many tests aimed at compiler internals such as analyses, transformations and optimizations.

SuperTest includes a powerful and flexible test platform. The configurable test driver seamlessly integrates with any compiler development environment and target processor.

The Code Generator Trainer consists of nearly one thousand test files split over 25 carefully constructed levels aimed at boot-strapping new compiler development. Each level addresses a specific capability of the code generator. Level 0 is there to set up the minimal interface that is needed to run the tests. The next levels introduce simple integer arithmetic, conversions, pointers, addressing modes for structures, register allocation, control flow and calling conventions. Beyond that are levels dealing with characters and shorts, long long arithmetic and varargs.

Each level is constructed to build upon the groundwork of the previous levels. This way, the code generator development progresses one logical step at a time. It gets you a better compiler, faster.

The Compiler Qualification Service is especially interesting for:

Application developers

  • Who do not want to, or do not have the knowledge to, set up a compiler testing environment in-house, but do need to ensure that the compiler conforms to the applicable functional safety standard.

Developers

  • Of safety-critical software who are in a hurry.

Compiler developers

  • Or users who already have in-house compiler testing, but want a third party to provide independent quality control.

How Does It Work?

We need to get your complete compilation environment, including any necessary software licenses. On top of that we need a copy of the target execution environment, so we can run the executables generated by the compiler for the tests and verify the results. Preferably, this is a hardware target that is as close as possible to the actual hardware used in your project. This provides the highest possible confidence that programs are correctly compiled for that specific target. Alternatively, the execution environment can be a simulator or emulator.

 

Before starting the qualification process, the configuration options need to be specified. These options define the use case for which the qualification is valid and, hence, should be equal to the options used for building your application. Most importantly, it should be clear for which language version the compiler is qualified. This determines the exact requirements that the compiler is tested against. We offer this service for any version of C (C90, C99, C11, C18 and Embedded C) or C++ (C++03, C++11, C++14, C++17 and C++20).

With your compiler and execution environment in place, we use SuperTest to assess the compiler’s compliance to the defined language, for your project’s compiler use case.

Application Hazard Scanner

Functional safety standards require appropriate mitigations to be defined to make sure that your application is not impacted by any compiler defects that were found during the qualification process. Common mitigations include:

  • To avoid the use of certain language constructs in a specific context.
  • Use of a third party tool to supplement the diagnostic messages not provided by the compiler, for example when violating language constraints or exceeding translation limits.
  • Avoidance of the use of certain compiler option combinations.

In cooperation with our partner BUGSENG

We offer an additional tool to automatically and systematically enforce the mitigations that are defined in the qualification report that results from the Compiler Qualification Service. BUGSENG’s ECLAIR platform for software verification is used to build the Application Hazard Scanner with the specific rules that are needed for the mitigations in the safety manual. The Application Hazard Scanner analyses and diagnoses your application source code and application build process for the usage of hazardous compiler features. It ensures that all mitigations are automatically enforced and that the compiler can be used safely. Example features of the Application Hazard Scanner are:

  • Precise parsing and advanced static analysis techniques to flag all uses of the problematic language constructs in a certain context.
  • Providing suitable diagnostic messages for all the violations of the applicable language standard, including the exceeding of translation limits.
  • Intercepting all calls to the compiler, linker, assembler and librarian, to ensure that only the compiler option combinations defined by the use case are used.

Examples of compiler toolchains and targets

Analog Devices CrossCore Embedded Studio

  • ARM
  • Blackfin
  • SHARC

Intel C/C++ Compiler (icc)

  • x86
  • x86-64

STMicroelectronics STM32CubeIDE

  • STM32

Cadence Xtensa C/C++ Compiler (XCC)

  • Xtensa

Keil uVision5

  • 8051
  • ARM
  • STM32

STMicroelectronics System Workbench for STM32

  • STM32

Clang (all versions)

  • All targets for which an execution environment (hardware or simulator) is available

Microchip MPLAB X

  • ARM
  • AVR-8
  • PIC
  • SAM

TASKING

  • 68K
  • 8051
  • ARM
  • AURIX
  • ColdFire
  • DSP56K
  • RH850
  • TriCore

Cosmic Software

  • ARM
  • Power Architecture/PowerPC
  • STM8
  • STM32

Microsoft MSVC Compiler

  • x86
  • x86-64

Texas Instruments Code Composer Studio

  • ARM (Jacinto, KeyStone, Sitara, TM4x)
  • C2000
  • Hercules Functional Safety MCUs
  • MSP430
  • MSP432

GCC (all versions)

  • All targets for which an execution environment (hardware or simulator) is available

NXP CodeWarrior

  • ARM
  • ColdFire
  • Kinetis
  • Power Architecture/PowerPC

Wind River Workbench

  • ARM
  • ColdFire
  • MIPS
  • PowerPC
  • SuperH
  • x86
  • x86-64
  • XScale

Green Hills

  • ARM
  • MIPS
  • Power Architecture/PowerPC
  • RH850
  • TriCore
  • x86
  • x86-64

NXP S32 Design Studio

  • ARM
  • Power Architecture/PowerPC

QNX

  • ARM
  • MIPS
  • PowerPC
  • SuperH
  • x86
  • x86-64
  • XScale

Wind River Diab Compiler

  • 68K
  • ARM
  • ColdFire
  • M-Core
  • MIPS
  • PowerPC
  • RH850
  • SPARC
  • SuperH
  • TriCore
  • x86
  • x86-64

HighTec

  • ARM
  • AURIX
  • Power Architecture/PowerPC
  • RH850
  • TriCore

Renesas CS+

  • 78K
  • RL78
  • RX
  • RH850
  • V850

IAR Embedded Workbench

  • 78K
  • 8051
  • ARM
  • AVR
  • M16C
  • M32C
  • MSP430
  • RISC-V
  • R32C
  • RH850
  • RL78
  • RX
  • STM32
  • SuperH

Renesas e2 Studio

  • RH850
  • RL78
  • RX
  • RZ
  • SuperH
  • Synergy

Rowley Crossworks CrossStudio

  • ARM
  • AVR
  • MSP430
  • Silergy ZON/ZEUS

Do you want to know more?

Contact Us