Skip to content

Commit

Permalink
More updates to focus on AVH FVPs
Browse files Browse the repository at this point in the history
  • Loading branch information
vovamarch committed Jun 17, 2024
1 parent 56fcb24 commit 2cb64d4
Show file tree
Hide file tree
Showing 11 changed files with 166 additions and 166 deletions.
2 changes: 1 addition & 1 deletion DoxyGen/examples/examples.dxy
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ PROJECT_NUMBER = "Version 2.0.0"
# for a project that appears at the top of each page and should give viewer a
# quick idea about the purpose of the project. Keep the description short.

PROJECT_BRIEF = "Examples Projects and GitHub Repositories"
PROJECT_BRIEF = "AVH FVPs Example Projects"

# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
# in the documentation. The maximum height of the logo should not exceed 55
Expand Down
2 changes: 1 addition & 1 deletion DoxyGen/infrastructure/infrastructure.dxy
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ DOXYFILE_ENCODING = UTF-8
# title of most generated pages and in a few other places.
# The default value is: My Project.

PROJECT_NAME = "Infrastructure"
PROJECT_NAME = "AVH FVPs Infrastructure"

# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
# could be handy for archiving the generated documentation or if some version
Expand Down
7 changes: 5 additions & 2 deletions DoxyGen/overview/overview.dxy
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ PROJECT_NUMBER = "Version 2.0.0"
# for a project that appears at the top of each page and should give viewer a
# quick idea about the purpose of the project. Keep the description short.

PROJECT_BRIEF = "Solutions Overview"
PROJECT_BRIEF = "AVH FVP Solutions Overview"

# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
# in the documentation. The maximum height of the logo should not exceed 55
Expand Down Expand Up @@ -916,7 +916,10 @@ WARN_LOGFILE =
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
# Note: If this tag is empty the current directory is searched.

INPUT = ./src/main.md
INPUT = ./src/main.md \
./src/workflow.md \
./src/benefits.md \
./src/history.md \

# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
Expand Down
38 changes: 38 additions & 0 deletions DoxyGen/overview/src/benefits.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# User Benefits {#User_Benefits}

## Test without Hardware {#No_Hardware}

AVH allows to verify your code without the need for physical hardware which provides a robust test environment that enables:
- Early software development for faster time-to-market
- Select optimal target device once the software workload is analysed
- Re-target applications to production hardware with driver abstractions

## Verify Correctness {#Verify}

**Arm Fixed Virtual Platforms (FVPs)** models are validated with the same process as the CPU IP. Specially it allows you to:
- Perform algorithm testing with identical logical behaviour of the target device
- Precisely repeat complex input patterns in CI/CD test environments
- Analyse software behaviour with event annotations

## Evaluate Performance {#Evaluate}

Software algorithms for Digital Signal Processing (DSP) or Machine Learning (ML) frequently require significant CPU resources and need to be optimized for the target hardware. Comparing performance of such "load heavy" algorithms requires that they can be automatically executed with different configurations parameters but using identical input.

**Arm Virtual Hardware Services** allows users to test their programs at scale with reproducible input patterns and so validate and optimize application performance which allows you to:
- Compare speed of different implementations of an algorithm
- Identify timing issues during system integration
- Optimize resources (i.e. data buffers) towards application requirements

## Continuous Testing {#CI}

Applying continuous integration work flows for embedded applications can be complicated by the specifics of development environments and the need of executing the program on target hardware. So the development teams are often reluctant to spend initial effort setting up the continuous integration (CI) workflow even though the long-term benefits are undisputed as shown on the Figure below

![Comparison of test efforts in CI and no CI workflows](./images/effort_comparison.png)

**Arm Virtual Hardware** simplifies the setup and use of CI workflows in embedded projects.

For unit and integration tests virtual targets offer additional advantages over hardware, including:
- **Speed** - no overhead for flashing the application on physical hardware. This saves time on small and fast unit tests.
- **Scale** - virtual platforms can scale to run many tests in parallel. This makes virtual platforms more cost-effective than a farm of physical hardware.
- **Maintenance** – unlike physical hardware, virtual platforms do not overheat, wear out from overuse, break from misuse, or use physical space and resources.
- **Upgrades** – virtual platforms can be adapted and re-configured to match corresponding changes to the underlying hardware platform that is under development. These types of changes can be costly or impossible with physical hardware.
83 changes: 83 additions & 0 deletions DoxyGen/overview/src/history.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# Release History {#History}

<table>
<tr>
<th>Version</th>
<th>Changes</th>
</tr>
<tr>
<td>2.0.0 (June 5, 2024)</td>
<td>
- Removed beta status.
- VIO/VSI python script path is moved into model configuration. See [Using AVH FVPs](../../simulation/html/using.html).
- Added [Arm Tools Artifactory](../../infrastructure/html/avh_fvp_artifactory.html) support.
- Added [Arm GitHub Actions](../../infrastructure/html/avh_gh_actions.html) support.
- Added [Arm Keil Studio VsCode](../../infrastructure/html/run_mdk_vscode.html) support.
- Added AVH FVP models:
- FVP_Corstone_SSE-315
- FVP_MPS2_Cortex-M85
- FVP_MPS2_Cortex-M55
- FVP_MPS2_Cortex-M52
- FVP_MPS2_Cortex-M35P
- Reworked documentation
- AWS AMI and custom GitHub Runner support are kept as [experimental](../../infrastructure/html/avh_beta.html).
</td>
</tr>
<tr>
<td>1.3.1-beta (Jan 26, 2023)</td>
<td>
- License validity period for installed Arm tools is extended.
- EULA for AVH AMI is updated on AWS marketplace.
</td>
</tr>
<tr>
<td>1.3.0-beta (Sept 22, 2022)</td>
<td>
- Arm Corstone SSE-300 model is supported with [Keil Studio Cloud](https://www.keil.arm.com/boards/arm-v2m-mps3-sse-300-fvp-610bb98/).
- Provided [eventlist utility](https://github.com/ARM-software/CMSIS-View/tree/main/tools/eventlist) to process Event Recorder logs obtained with Arm FVP targets.
- Added new FVP model - VHT_Corstone_SSE-310_Ethos-U65 to the AMI, see [Using Arm Fixed Virtual Platforms](../../simulation/html/Using.html).
- Added installation of [CMSIS-Toolbox v1.0.0](https://github.com/Open-CMSIS-Pack/CMSIS-Toolbox) to the AMI, that also includes CMSIS-Build for command-line project builds.
- Updated [examples](../../examples/html/index.html) to use dynamic credentials (IAM Role) in the GitHub CI workflow, removing the need for storing AWS credentials in GitHub Secrets.
- Removed preinstalled Bootloader and OpenSuSE software for Corstone-1000.
- Removed preinstalled CMSIS Packs.
</td>
</tr>
<tr>
<td>1.2.3-beta (July 9, 2022)</td>
<td>
- Enabled timing annotations in FVPs by default ([FASTSIM_DISABLE_TA](https://developer.arm.com/documentation/100965/1117/Timing-Annotation/Enabling-and-disabling-timing-annotation) is set to 0).<br/>If disabled (FASTSIM_DISABLE_TA set to 1), VSI streams data too quickly and prevents normal execution of [ATS-Keyword Example] (https://github.com/ARM-software/open-iot-sdk/tree/main/examples/ats-keyword).
</td>
</tr>
<tr>
<td>1.2.2-beta (May 10, 2022)</td>
<td>
- New versioning scheme to match the AMI version (see [AMI Inventory](../../infrastructure/html/ami_inventory.html)).
- [CMSIS-RTOS2 Validation](https://github.com/ARM-software/CMSIS-RTOS2_Validation): Advanced test suite for validating CMSIS-RTOS2 implementations on supported Cortex-M cores runs using AVH.
- Corstone-310 model fixes: NPU access fix as well as a parameter for the flash region size allowing it to be a maximum of 64MB.
</td>
</tr>
<tr>
<td>0.3-beta (Apr 2022)</td>
<td>Added features:
- [Corstone-310 and Corstone-1000](../../simulation/html/Using.html): added new simulation models.
- [Integration with Jenkins](../../infrastructure/html/run_ami_jenkins.html): example of AVH AMI usage in Jenkins CI pipelines.
- [Event Recorder Semihosting Support](https://www.keil.com/pack/doc/compiler/EventRecorder/html/er_use.html#er_semihosting): allows to generate Event Recorder logs in AVH AMI environment.
- [AWS MQTT Example](../../examples/html/aws_mqtt.html): IoT application with MQTT connectivity to AWS cloud service.
- [ATS-Keyword Example](https://github.com/ARM-software/open-iot-sdk/tree/main/examples/ats-keyword): keyword detection application based on [Arm Total Solutions for IoT](https://github.com/ARM-software/ATS-Keyword/).
</td>
</tr>
<tr>
<td>0.2-beta (Feb 2022)</td>
<td>Added features:
- [Extended Target support](../../simulation/html/Using.html): additional Cortex-M processors are supported: Cortex-M0/M0+/M3/M4/M7/M23/M33.
- [Support in MDK-Professional](../../infrastructure/html/run_mdk_pro.html): enables desktop development in classic tooling.
- [VIO Interface](../../simulation/html/group__arm__vio.html): simple interface to control I/O such as switches and LEDs via Python scripts.
- [VSocket Interface](../../simulation/html/group__arm__vsocket.html): BSD socket interface that connects the application under test to networks, including public Internet.
- [Get-Started example](../../examples/html/GetStarted.html): added simple example demonstrating how to setup a Continuous Integration (CI) workflow using Arm Virtual Hardware.
</td>
</tr>
<tr>
<td>0.1-beta (Nov 2021)</td>
<td>Initial release</td>
</tr>
</table>
File renamed without changes
134 changes: 2 additions & 132 deletions DoxyGen/overview/src/main.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ Various Resources explain how to integrate Arm Virtual Hardware into workflows c

Usage examples show typical use cases and range from audio processing, ML algorithm testing, up to IoT applications that interface to Cloud Service providers and Over-the-Air Firware Updates (OTAU).

**This documentation** is largely dedicated to the **AVH FVPs** and has following sections that can be accessed as document tabs as well:
**This documentation** is dedicated to the **AVH FVPs** and has following sections that can be accessed as document tabs as well:

Section | Description
:----------------------------------------------------------|:--------------------
Expand All @@ -50,136 +50,6 @@ Section | Description

For more details about AVH Corellium models refer to [AVH Users's Guide](https://developer.arm.com/docs/107660).

Check warning on line 51 in DoxyGen/overview/src/main.md

View workflow job for this annotation

GitHub Actions / Build main documentation

URL 'https://developer.arm.com/docs/107660' results to '200 OK'

\page User_Benefits User Benefits

# Test without Hardware {#No_Hardware}

AVH allows to verify your code without the need for physical hardware which provides a robust test environment that enables:
- Early software development for faster time-to-market
- Select optimal target device once the software workload is analysed
- Re-target applications to production hardware with driver abstractions

# Verify Correctness {#Verify}

**Arm Fixed Virtual Platforms (FVPs)** are Arm simulation models validated with the same process as the CPU IP. Specially it allows you to:
- Perform algorithm testing with identical logical behaviour of the target device
- Precisely repeat complex input patterns in CI/CD test environments
- Analyse software behaviour with event annotations

# Evaluate Performance {#Evaluate}

Software algorithms for Digital Signal Processing (DSP) or Machine Learning (ML) frequently require significant CPU resources and need to be optimized for the target hardware. Comparing performance of such "load heavy" algorithms requires that they can be automatically executed with different configurations parameters but using identical input.

**Arm Virtual Hardware Services** allows users to test their programs at scale with reproducible input patterns and so validate and optimize application performance which allows you to:
- Compare speed of different implementations of an algorithm
- Identify timing issues during system integration
- Optimize resources (i.e. data buffers) towards application requirements

# Continuous Testing {#CI}

Applying continuous integration work flows for embedded applications can be complicated by the specifics of development environments and the need of executing the program on target hardware. So the development teams are often reluctant to spend initial effort setting up the continuous integration (CI) workflow even though the long-term benefits are undisputed as shown on the Figure below

![Comparison of test efforts in CI and no CI workflows](./images/effort_comparison.png)

**Arm Virtual Hardware** simplifies the setup and use of CI workflows in embedded projects.

For unit and integration tests virtual targets offer additional advantages over hardware, including:
- **Speed** - no overhead for flashing the application on physical hardware. This saves time on small and fast unit tests.
- **Scale** - virtual platforms can scale to run many tests in parallel. This makes virtual platforms more cost-effective than a farm of physical hardware.
- **Maintenance** – unlike physical hardware, virtual platforms do not overheat, wear out from overuse, break from misuse, or use physical space and resources.
- **Upgrades** – virtual platforms can be adapted and re-configured to match corresponding changes to the underlying hardware platform that is under development. These types of changes can be costly or impossible with physical hardware.

\page History Release History

<table>
<tr>
<th>Version</th>
<th>Changes</th>
</tr>
<tr>
<td>2.0.0 (June 5, 2024)</td>
<td>
- Removed beta status.
- VIO/VSI python script path is moved into model configuration. See [Using AVH FVPs](../../simulation/html/using.html).
- Added [Arm Tools Artifactory](../../infrastructure/html/avh_fvp_artifactory.html) support.
- Added [Arm GitHub Actions](../../infrastructure/html/avh_gh_actions.html) support.
- Added [Arm Keil Studio VsCode](../../infrastructure/html/run_mdk_vscode.html) support.
- Added AVH FVP models:
- FVP_Corstone_SSE-315
- FVP_MPS2_Cortex-M85
- FVP_MPS2_Cortex-M55
- FVP_MPS2_Cortex-M52
- FVP_MPS2_Cortex-M35P
- Reworked documentation
- AWS AMI and custom GitHub Runner support are kept as [experimental](../../infrastructure/html/avh_beta.html).
</td>
</tr>
<tr>
<td>1.3.1-beta (Jan 26, 2023)</td>
<td>
- License validity period for installed Arm tools is extended.
- EULA for AVH AMI is updated on AWS marketplace.
</td>
</tr>
<tr>
<td>1.3.0-beta (Sept 22, 2022)</td>
<td>
- Arm Corstone SSE-300 model is supported with [Keil Studio Cloud](https://www.keil.arm.com/boards/arm-v2m-mps3-sse-300-fvp-610bb98/).
- Provided [eventlist utility](https://github.com/ARM-software/CMSIS-View/tree/main/tools/eventlist) to process Event Recorder logs obtained with Arm FVP targets.
- Added new FVP model - VHT_Corstone_SSE-310_Ethos-U65 to the AMI, see [Using Arm Fixed Virtual Platforms](../../simulation/html/Using.html).
- Added installation of [CMSIS-Toolbox v1.0.0](https://github.com/Open-CMSIS-Pack/CMSIS-Toolbox) to the AMI, that also includes CMSIS-Build for command-line project builds.
- Updated [examples](../../examples/html/index.html) to use dynamic credentials (IAM Role) in the GitHub CI workflow, removing the need for storing AWS credentials in GitHub Secrets.
- Removed preinstalled Bootloader and OpenSuSE software for Corstone-1000.
- Removed preinstalled CMSIS Packs.
</td>
</tr>
<tr>
<td>1.2.3-beta (July 9, 2022)</td>
<td>
- Enabled timing annotations in FVPs by default ([FASTSIM_DISABLE_TA](https://developer.arm.com/documentation/100965/1117/Timing-Annotation/Enabling-and-disabling-timing-annotation) is set to 0).<br/>If disabled (FASTSIM_DISABLE_TA set to 1), VSI streams data too quickly and prevents normal execution of [ATS-Keyword Example] (https://github.com/ARM-software/open-iot-sdk/tree/main/examples/ats-keyword).
</td>
</tr>
<tr>
<td>1.2.2-beta (May 10, 2022)</td>
<td>
- New versioning scheme to match the AMI version (see [AMI Inventory](../../infrastructure/html/ami_inventory.html)).
- [CMSIS-RTOS2 Validation](https://github.com/ARM-software/CMSIS-RTOS2_Validation): Advanced test suite for validating CMSIS-RTOS2 implementations on supported Cortex-M cores runs using AVH.
- Corstone-310 model fixes: NPU access fix as well as a parameter for the flash region size allowing it to be a maximum of 64MB.
</td>
</tr>
<tr>
<td>0.3-beta (Apr 2022)</td>
<td>Added features:
- [Corstone-310 and Corstone-1000](../../simulation/html/Using.html): added new simulation models.
- [Integration with Jenkins](../../infrastructure/html/run_ami_jenkins.html): example of AVH AMI usage in Jenkins CI pipelines.
- [Event Recorder Semihosting Support](https://www.keil.com/pack/doc/compiler/EventRecorder/html/er_use.html#er_semihosting): allows to generate Event Recorder logs in AVH AMI environment.
- [AWS MQTT Example](../../examples/html/aws_mqtt.html): IoT application with MQTT connectivity to AWS cloud service.
- [ATS-Keyword Example](https://github.com/ARM-software/open-iot-sdk/tree/main/examples/ats-keyword): keyword detection application based on [Arm Total Solutions for IoT](https://github.com/ARM-software/ATS-Keyword/).
</td>
</tr>
<tr>
<td>0.2-beta (Feb 2022)</td>
<td>Added features:
- [Extended Target support](../../simulation/html/Using.html): additional Cortex-M processors are supported: Cortex-M0/M0+/M3/M4/M7/M23/M33.
- [Support in MDK-Professional](../../infrastructure/html/run_mdk_pro.html): enables desktop development in classic tooling.
- [VIO Interface](../../simulation/html/group__arm__vio.html): simple interface to control I/O such as switches and LEDs via Python scripts.
- [VSocket Interface](../../simulation/html/group__arm__vsocket.html): BSD socket interface that connects the application under test to networks, including public Internet.
- [Get-Started example](../../examples/html/GetStarted.html): added simple example demonstrating how to setup a Continuous Integration (CI) workflow using Arm Virtual Hardware.
</td>
</tr>
<tr>
<td>0.1-beta (Nov 2021)</td>
<td>Initial release</td>
</tr>
</table>

# Known Limitations {#Issues}

The current beta version of of Arm Virtual Hardware has the following known issues:

[Virtual Interfaces](../../simulation/html/group__arm__cmvp.html):
- After processor reset virtual interfaces may not work correctly. So it is required to restart the debug/run session.

# Feedback and Support {#Support}

Arm Virtual Hardware is supported during public beta via this [Arm forum](https://community.arm.com/support-forums/f/arm-virtual-hardware-forum). Your feedback will influence our future roadmap and we try to help you promptly with your questions.
Arm Virtual Hardware is supported via this [Arm forum](https://community.arm.com/support-forums/f/arm-virtual-hardware-forum). Your feedback will influence our future roadmap and we try to help you promptly with your questions.
Loading

0 comments on commit 2cb64d4

Please sign in to comment.