Skip to content

Commit

Permalink
Extended Workflow description
Browse files Browse the repository at this point in the history
  • Loading branch information
vovamarch committed Jun 28, 2024
1 parent c647120 commit a4c4dfe
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 12 deletions.
12 changes: 6 additions & 6 deletions DoxyGen/overview/src/benefits.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,33 +2,33 @@

## 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:
AVH FVP models allow 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}
## Verify Correctness {#Verify_Benefits}

**AVH FVP** simulation models are validated with the same process as the CPU IP. Specially it allows you to:
AVH FVP simulation 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}
## Evaluate Performance {#Perf_Benefits}

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. The timing in AVH FVP models is based on a instruction could, therefore it is not timing accurate. However the results can still be used for performance estimation and A/B comparison of algorithms.

**AVH FVP** simulation models allow users to test their programs at scale with reproducible input patterns. This allows you to validate and optimize application performance. Usage examples are:
- Compare speed of different implementations of an algorithm (A/B test).
- Optimize resources (i.e. RTOS memory buffers for stream processing) towards application requirements.

## Continuous Testing {#CI}
## Continuous Testing {#CI_Benefits}

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. 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)

**AVH FVP** simplifies the setup and use of CI workflows in embedded projects. The integration in tools such as Keil MDK and GitHub Actions simplifies setup of CI workflows.
[AVH FVP Infrastructure](../../infrastructure/html/index.html) with integration in tools such as Keil MDK and GitHub Actions simplifies setup of CI workflows.

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.
Expand Down
Binary file modified DoxyGen/overview/src/images/img_src.pptx
Binary file not shown.
Binary file removed DoxyGen/overview/src/images/vht_overview.png
Binary file not shown.
4 changes: 2 additions & 2 deletions DoxyGen/overview/src/main.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@

AVH supports the software development cycle of embedded, IoT, and ML applications and provides essential components for effective integration into Continuous Integration/Continuous Delivery ([CI/CD](https://en.wikipedia.org/wiki/CI/CD)) and [MLOps](https://en.wikipedia.org/wiki/MLOps) development flows.

**This documentation** is dedicated to the **AVH FVPs**: Arm Virtual Hardware with Fixed Virtual Platforms, for details about AVH Corellium refer to [AVH Corellium Users's Guide](https://developer.arm.com/docs/107660).

![AVH FVP: Arm Virtual Hardware with Fixed Virtual Platforms - Overview](./images/avh_overview.png)

Note that this documentation is dedicated to the **AVH FVPs**: Arm Virtual Hardware with Fixed Virtual Platforms, for details about AVH Corellium refer to [AVH Corellium Users's Guide](https://developer.arm.com/docs/107660).

Check warning on line 11 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'

# AVH FVP Models {#avh_models}

AVH FVP simulation models are standalone programs that gets executed in the target environment and enable execution of firmware programs on virtual targets.
Expand Down
17 changes: 13 additions & 4 deletions DoxyGen/overview/src/workflow.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,21 @@
# Development Workflow {#Development_Workflow}

Arm Virtual Hardware enables a flexible approach that combines desktop and cloud-native development tools thus simplifying and accelerating the development workflow.
Using AVH FVP models enables a flexible approach that combines desktop and cloud-native development tools thus simplifying and accelerating the development of embedded software.

Using software layers, it is possible to develop a new functionality with a physical board and the commit the changes to a cloud based version control system which executes a complete CI/CD integration flow. This ensures that new product innovations are thoroughly tested before they are integrate into final systems.
# Continuous Integration (CI) {#CI_workflow}

![Development Workflow](./images/workflow.png "Development Workflow")
New functionality can be quickly developed on a simulation model with frequent changes being automatically verified upon the code commits to a cloud based version control system such as GitHub which executes a complete CI/CD integration flow. Figure below illustrates the concept.

For ailure analysis, it is currently recommended to use desktop tools such as [Keil MDK](https://www.keil.arm.com/).
![Continuous Integration (CI) workflow](./images/basic_ci_workflow.png "Continuous Integration (CI) workflow")

1. **Local development** is done by engineers on local machines using common embedded tools such as Keil MDK with AVH FVP models used for MCU simulation. See [AVH FVPs on Desktop](../../infrastructure/html/avh_desktop.html) for details. The software can also be already prepared for real hardware as explained in \ref Physical_Hardware.
2. **Code repository** is used as a source code management system for synchronization, storage and version control. For example GitHub.
3. **CI pipeline** implements the Continuous Integration flow (for example GitHub Actions) that gets triggered on every code update in the target repository.
4. **CI execution** includes automated program build and testing and is performed in the cloud using the AVH Infrastructure, with results being reported back to the repository and user. See [Infrastructure](../../infrastructure/html/index.html) for details.
5.**Failure analysis and local debug**: developer can observe the CI test results and in case of any failures also uses local setup to reproduce
and debug the issues.

Learn more about benefits from CI workflow at \ref CI_Benefits.

# Migration to Physical Hardware {#Physical_Hardware}

Expand Down

0 comments on commit a4c4dfe

Please sign in to comment.