emmtrix
Performance
Estimator (ePE)

emmtrix Performance Estimator icon

The Tool to GET the Performance of Your Applications

emmtrix Performance Estimator (ePE) provides static timing analysis of C code. Compared to simulation or measurement on hardware, static performance analysis can be applied significantly earlier in the development process and will deliver results on average 6 months earlier compared to a typical automotive HIL setup. The analysis only takes a few minutes at most and runs on the developer’s PC independently of any target hardware. Function developers can analyze their runnables or SWCs without the need of a fully integrated program.

A unique feature is the combination with TargetLink or Embedded Coder generated code. Without any measurement overhead, our static performance estimation can analyze even the smallest code snippets. This allows us to map the timing analysis to Simulink blocks, giving function developers insight into the timing behavior of their models.

Estimation Methods

In general, the execution time of a task or block can be modelled as:

texec = execution_frequencyblock* single_durationblock

The C code based static code analysis derives the execution frequency by analyzing loop boundaries using constant folding. For the duration, each instruction in the code is modeled as the number of cycles of an abstract hardware model of the processor, and then summed.

ePE offers three accuracy levels: analysis of (1) C code, (2) generically compiler-optimized code, or (3) of assembly code from the target compiler. Method 1 yields results with minimum effort while method 3 takes the timing of the processor pipeline into account. All methods offer excellent reliability when tracking the tendency of changes in software runtimes e.g. when used in a continuous integration environment.

 

Static Code Analysis:

Static Code Analysis

Processor Pipeline:

Instruction Fetch

FETCH

Instruction Decode

DECODE

Shift + ALU

EXECUTE

Memory Access

MEMORY

Register Write

WRITE

Features

  • Automatic generation of reports and visualization for more detailed information
  • Confidence levels for classification of results
  • Easy to integrate into the development workflow
  • Fast evaluation for different target platforms
  • Static performance estimation based on C code or assembly code
  • Integration of simulators or hardware profiling into your workflow

Your Benefits

  • Performance estimation early in the development process
  • Continuous monitoring of performance changes during the development
  • Comparison of performance for different or heterogeneous target platforms
  • Detailed information to better understand the timing behavior of your application
  • Detect high-runners or critical parts of you software application
  • Estimate the core utilization to optimize runnable/task to core mappings

Intuitive Visualization

Intuitive Visualization

Figure 1: Visualization of the Performance Estimation

The result of the performance estimation can be visualized using our interactive and zoomable hierarchical program view. The X-axis represents the time, therefore the width of each block depends on the actual duration. On the Y-axis, the control structure of the program can be seen. Additional levels are added for structures like function calls, loops or conditions.

ASM View

Figure 2: Analyzing Assembler Code

To enhance our static performance estimation solution, the emmtrix tools take applied compiler optimizations into consideration by analyzing assembler code. Together with a model of the processor pipeline, the actual timing behavior of the program on the selected hardware can be predicted with significantly higher accuracy. The advanced mapping between C and assembler code is accessed directly from the GUI and can be used for further inspection.

Some Supported Platforms

emmtrix Performance Estimator has already a wide range of supported target platforms ranging from general-purpose processors (e.g. ARM Cortex-A series or X86) to special-purpose microcontrollers (e.g. Infineon Aurix family). In general, the performance estimation can be easily adapted and customized to provide basic supoprt for new processor architectures. More complex and accurate hardware models with respect to the processor pipeline can be supported on demand.

Infineon logo

AURIX™
(TC2xx, TC3xx, TC4x)

arm logo

Cortex-A
e.g. (A55, A76)

Power PC logo
PowerPC
Rasperry Pi logo

Raspberry Pi

Renesas logo
R-Car
STM logo

STM32

NXP logo

iMX.8

For more information on emmtrix Performance Estimator or to request a demo, a chat or a meeting use our contact form or get directly in touch. We’re looking forward to hearing from you!

Portrait Rainer Heim
Rainer Heim
Cookie Consent with Real Cookie Banner