Integrating with a CI/CD/CT System

Huxelerate SDV Performance can be seamlessly integrated into Continuous Integration (CI), Continuous Delivery (CD), and Continuous Testing (CT) systems. This integration enables automatic performance analysis of your software and hardware architecture whenever changes are made to the codebase.

The following sections provide guidelines and examples for building a CI/CD/CT pipeline that incorporates Huxelerate SDV Performance.

Common Pipeline Prerequisites

To create the pipelines described in this document, ensure the following:

  • An Huxelerate SDV Performance platform Normal user account to execute the pipeline. Refer to the Organization Settings section for instructions on creating a user.

    • The pipeline will use this user’s REST API token as a secret for platform authentication. Refer to the Settings section to learn how to generate a REST API token.

  • An Huxelerate SDV Performance platform Project to store performance reports. Refer to the System Definition section for project creation details.

Interactive REST API Documentation

Explore all REST API endpoints interactively at: Huxelerate SDV Performance API Documentation.

Pipeline: Performance Analysis of AUTOSAR-Compliant Software

This pipeline targets AUTOSAR-compliant software and generates performance reports for each Runnable Entity in the software.

Pipeline Overview

Pipeline Additional Prerequisites

To implement this pipeline, you will need:

Additionally, for each Software Component Type to analyze, you must know:

  • The location of the software component’s source code (implementation and header files) in your codebase.

  • The location of the ARXML description models of the software component in your codebase.

  • (Optional) A CSV file with input data for analysis. Refer to the generate_csv_template command documentation for details.

Step 1: Generate HPROF Files for a Software Component Type

Execution Scope: One execution per Software Component Type in your codebase.

Inputs:

  • Source code of the software component (implementation and header files).

  • ARXML description models of the software component.

  • (Optional) CSV file with input data for analysis.

Outputs:

  • A LOG file detailing the generation process (success or failure).

  • For each Runnable Entity in the Software Component Type, one HPROF file (if successful).

Use the generate_hprof command of the Huxelerate autosar utility to generate HPROF files.

Hint: If using the cloud for HPROF generation, refer to the relevant documentation for CLI usage instructions.

Step 2: Upload HPROF Files to the Platform

Execution Scope: One execution per HPROF file generated in Step 1.

Inputs:

  • REST API token of the user executing the pipeline.

  • Project ID where the HPROF file will be uploaded.

  • The HPROF file to upload.

Outputs:

  • Details of the uploaded HPROF file (ID, name, etc.).

Upload HPROF files using the REST API endpoint:

PUT http://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/hprofs

You can associate tags with each HPROF file for easier searching and filtering. Useful tags include:

  • Software Composition name(s) associated with the HPROF file.

  • Version of the Software Component Type or System associated with the HPROF file.

Step 3: Run Performance Analysis

Execution Scope: One execution per HPROF file uploaded in Step 2.

Inputs:

  • REST API token of the user executing the pipeline.

  • Project ID where the HPROF file was uploaded.

  • HPROF file ID (from Step 2).

Outputs:

  • Details of the analysis (ID, name, etc.).

Run performance analysis using the REST API endpoint:

PUT http://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/runnable-analyses/

Specify a target hardware (e.g., an ECU Type core) for the analysis. Retrieve available ECU Types and cores using the REST API endpoint:

GET http://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/ecu-types/

Result

After completing this pipeline, performance analysis results will be available in the specified project.

Pipeline: Architectural Analysis of AUTOSAR-Compliant Systems

This pipeline targets AUTOSAR-compliant systems and provides structural details independently of the software implementation. Unlike the previous pipeline, it does not require HPROF file generation but relies on ARXML description models.

Pipeline Overview

Pipeline Additional Prerequisites

To implement this pipeline, you will need:

  • ARXML description models of the system:

    • Either a single ARXML ECU Extract or SYSTEM Extract file.

    • Or multiple ARXML files collectively describing the system (e.g., files used in the previous pipeline).

  • ECU Configuration ARXML files describing, for each ECU in the system, the Runnable Entities (grouped into Tasks) it executes. These files are typically generated by your organization’s ECU Configuration tool (e.g., Vector DaVinci).

Step 1: Create a New Scenario

Create a new scenario to reflect the system’s structure. Use the REST API endpoint:

POST http://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/scenarios

Scenarios can be created empty or by copying an existing scenario’s structure. In the latter case, some subsequent steps may be unnecessary.

Step 2: Create ECU(s)

Execution Scope: One execution per ECU in the system.

Create one ECU entry for each ECU in your system using the REST API endpoint:

POST http://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/scenarios/{id_scenario}/ecus

Specify the ECU Type when creating an ECU. Retrieve available ECU Types using the REST API endpoint:

GET http://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/ecu-types/

Hint: If the scenario was created by copying an existing scenario, this step may be unnecessary.

Step 3: Upload the System Definition

Upload ARXML description models of the system using the REST API endpoint:

POST http://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/scenarios/{id_scenario}/system-definition/jobs

This endpoint accepts:

  • A single ARXML file (ECU Extract or SYSTEM Extract).

  • Multiple ARXML files in a Zip archive.

Specify the following parameters:

  • system_definition_entity_type = "swc" to indicate a Software Component-based System Definition.

  • description_standard = "ARXML" for ARXML format files.

Optional parameters to resolve conflicts during upload:

  • update_duplicates: Update existing elements in the scenario.

  • regenerate_unsupported_uuid: Regenerate non-UUID4-compliant UUIDs.

  • regenerate_duplicated_uuid: Regenerate duplicated UUIDs.

Check upload status using the REST API endpoint:

GET http://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/scenarios/{id_scenario}/system-definition/jobs/{id_job}

Confirm successful uploads using:

PATCH http://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/scenarios/{id_scenario}/system-definition/jobs/{id_job}

Body: {"confirm": true}

Clear failed jobs using:

DELETE http://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/scenarios/{id_scenario}/system-definition/jobs/{id_job}

Step 4: Create a New Task Mapping

Create a Task mapping to map Runnable Entities to ECUs and their cores. Use the REST API endpoint:

POST http://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/scenarios/{id_scenario}/mappings

Task mappings can be created empty or by copying an existing mapping’s structure. In the latter case, some subsequent steps may be unnecessary.

Step 5: Upload Task Mapping from ECU Configuration ARXML Files

Upload ECU Configuration ARXML files to populate the Task mapping using the REST API endpoint:

POST http://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/scenarios/{id_scenario}/mappings/{id_mapping}/task-mapping/jobs

This endpoint accepts:

  • A single ARXML file containing the ECU Configuration.

  • Multiple ARXML files in a Zip archive.

Specify the following parameters:

  • system_definition_entity_type = "ecuc" to indicate an ECU Configuration-based Task mapping.

  • description_standard = "ARXML" for ARXML format files.

  • id_mapping: Target Task mapping ID.

  • id_ecu: Target ECU ID (repeat for each ECU in the system).

Optional parameters to resolve conflicts during upload:

  • regenerate_unsupported_uuid: Regenerate non-UUID4-compliant UUIDs.

  • regenerate_duplicated_uuid: Regenerate duplicated UUIDs.

Check upload status using the REST API endpoint:

GET http://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/scenarios/{id_scenario}/mappings/{id_mapping}/task-mapping/jobs/{id_job}

Confirm successful uploads using:

PATCH http://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/scenarios/{id_scenario}/mappings/{id_mapping}/task-mapping/jobs/{id_job}

Body: {"confirm": true}

Clear failed jobs using:

DELETE http://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/scenarios/{id_scenario}/mappings/{id_mapping}/task-mapping/jobs/{id_job}

Result

After completing this pipeline, explore the interactive System Structure report at:

https://sdvperformance.huxelerate.it/projects/{id_project}/scenarios/{id_scenario}/system/scenario

Replace {id_project} and {id_scenario} with the respective IDs used in the pipeline.