Presenting a safety case

Our blogs typically concentrate on technical details which will help with the detailed verification of your software. This blog sets the scene to future blogs describing some of the ways in which our verification tools can be used to help meet safety certification requirements. Verification data provides evidence about the performance and functionality of your code, however, you'll also need to justify why that verification data is relevant, how it fulfills certification requirements, whether it is sufficiently complete, consistent, correct etc..
Read More

Summer fun: computer games for programmers

As it's the time of summer vacations, I thought it would be interesting to look at something a little more light-hearted than usual – a computer game designed to replicate the experience of low-level, bare metal programming on a hypothetical multicore system. TIS-100 ( is a game that features a simulator of an imaginary, loosely-coupled, multicore system, together with a range of interesting programming problems.
Read More

Breaking the switch statement

While refreshing our RapiCover qualification kit, we looked harder for corner-cases and undefined behaviours. One of the more bizarre things we came across is the issue of code before the first case label of a switch statement. Such a simple concept turns out to have some rather unique challenges. Here's a fairly standard-looking C switch statement with five branches (five code sequences to choose among):
Read More

Software randomization of execution times for avionic systems

Among the wide range of research work we've done during the past, one of the "most blue sky" areas has been in the area of probabilistic timing analysis (PTA), where specific hardware support randomizes sources of execution time variability, making it possible to produce accurate statistical predictions of worst-case execution probabilities, see our PROXIMA research project and
Read More

What are the overheads of code coverage? Using "Doom" as an example

One question that we are frequently asked is what instrumentation overhead RapiCover introduces. Achieving low overhead instrumentation is recognized by our customers as a key strength of RapiCover. To measure structural code coverage of embedded software, or for that matter any software, code coverage tools like RapiCover use instrumentation (additional code that records what code has been executed).
Read More