Surrogate Applications

Surrogate Applications are specifically designed to mimic the non- functional behavior of a given application.

A substitute for your application in verification activities

Surrogate Applications (SurApps) are synthetic programs that can be used in stead of your application for several verification tasks, from timing integration to robustness testing. SurApps are automatically generated based on the profile of the target application, and are tunable on those aspects of execution that are considered relevant by the end user. SurApps are particularly useful to reproduce the impact of an application on multicore aspects of execution.

The SurApp technology leverages 3 main steps:

  • Collection of a profile or fingerprint of a Target Application, which is typically achieved by relying on standard Performance Monitoring Units (PMU) and Debug Support Units (DSU).
  •  Generation of a copy or SurApp of the profiled application, whose fingerprint is intended to be as similar as possible to the original.
  •  Evaluation of the tightness of the SurApp by defining a metric for assessing how closely its fingerprint resembles the fingerprint of the original Target.

SurApps are automatically generated from the Surrogate Application Generator (SurAppGen) starting from the Target Application profile. 

SurApp usage scenarios

SurApps are specifically designed to support the verification of non-functional aspects of time-critical embedded systems including, but not limited to, the timing behavior. To this purpose, SurApps mimic a pre-defined set of non-functional characteristics of a given Target Application. The set of relevant features, which may vary on specific user requirements and application domains, include hardware events, that can be directly gathered from on-target hardware event monitors (e.g., cache hits/misses, memory accesses, etc.) or more elaborated metrics that can be derived from insightful execution traces.

Simplified integration across software providers with no IP restriction
By focusing on the non-functional behavior of applications, the SurAppGen can generate non-functional clones of a Target Application where sensible information has been intentionally removed or obfuscated. Surrogate applications do not retain any IP-protected aspect form the original application. Therefore, they are not subject to IP constraints and can be freely distributed among providers, third-parties, and sub-contractors. This enables earlier (and less constrained) sharing of software artefacts among different software providers. 

Robustness testing for timing analysis
Given a reference Target Application, the SurAppGen can be configured to generate SurApps that, instead of mirroring the Target Application behavior, exhibit a profile with ‘worse’ characteristics from the standpoint of multicore timing interference. The generated SurApp can be deployed instead of the Target Application to assess, for example, the sensitivity of other applications in the system to a more aggressive behavior from the Target Application. The typical scenario in multicore timing analysis consists in deploying the SurApp as a means to inject more timing interference (contention on shared resources) than that generated by the Target Application.