Compiler Qualification Service

Compiler Qualification Service

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.

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
  • Cadence Xtensa C/C++ Compiler (XCC)
    • Xtensa
  • Clang (all versions)
    • All targets for which an execution environment (hardware or simulator) is available
  • Cosmic Software
    • ARM
    • Power Architecture/PowerPC
    • STM8
    • STM32
  • GCC (all versions)
    • All targets for which an execution environment (hardware or simulator) is available
  • Green Hills
    • ARM
    • MIPS
    • Power Architecture/PowerPC
    • RH850
    • TriCore
    • x86
    • x86-64
  • HighTec
    • ARM 
    • AURIX
    • Power Architecture/PowerPC
    • RH850
    • TriCore
  • IAR Embedded Workbench
    • 78K
    • 8051
    • ARM
    • AVR
    • M16C
    • M32C
    • MSP430
    • RISC-V
    • R32C
    • RH850
    • RL78
    • RX
    • STM32
    • SuperH
  • Intel C/C++ Compiler (icc)
    • x86
    • x86-64
  • Keil uVision5
    • 8051
    • ARM
    • STM32
  • Microchip MPLAB X
    • ARM
    • AVR-8
    • PIC
    • SAM
  • Microsoft MSVC Compiler
    • x86
    • x86-64
  • NXP CodeWarrior
    • ARM
    • ColdFire
    • Kinetis
    • Power Architecture/PowerPC
  • NXP S32 Design Studio
    • ARM
    • Power Architecture/PowerPC
  • QNX
    • ARM
    • MIPS
    • PowerPC
    • SuperH
    • x86
    • x86-64
    • XScale
  • Renesas CS+
    • 78K 
    • RL78
    • RX
    • RH850
    • V850
  • Renesas e2 Studio
    • RH850 
    • RL78
    • RX
    • RZ
    • SuperH
    • Synergy
  • Rowley Crossworks CrossStudio
    • ARM
    • AVR
    • MSP430
    • Silergy ZON/ZEUS
  • STMicroelectronics STM32CubeIDE
    • STM32
  • STMicroelectronics System Workbench for STM32
    • STM32
  • TASKING
    • 68K 
    • 8051 
    • ARM
    • AURIX
    • ColdFire
    • DSP56K
    • RH850
    • TriCore
  • Texas Instruments Code Composer Studio
    • ARM (Jacinto, KeyStone, Sitara, TM4x)
    • C2000
    • Hercules Functional Safety MCUs
    • MSP430
    • MSP432
  • Wind River Workbench
    • ARM
    • ColdFire
    • 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

 

Do you want to know more?

Contact Us