1# CMSIS-Core Validation 2 3This folder contains a test suite that validates CMSIS-Core implementations. It uses [**Fixed Virtual Platforms**](https://developer.arm.com/Tools%20and%20Software/Fixed%20Virtual%20Platforms) to run tests to verify correct operation of the CMSIS-Core functionality on various Arm Cortex based processors. 4 5## Folder structure 6 7```txt 8 CoreValidation 9 ┣ Include Include files for test cases etc. 10 ┣ Layer Layers for creating the projects. 11 ┣ Project Solution and project files to build tests for various configurations. 12 ┗ Source Test case source code. 13``` 14 15## Test matrix 16 17Currently, the following build configurations are provided: 18 191. Compiler 20 - Arm Compiler 6 (AC6) 21 - GNU Compiler (GCC) 22 - LLVM/Clang (Clang) 232. Devices 24 - Cortex-M0 25 - Cortex-M0+ 26 - Cortex-M3 27 - Cortex-M4 (with FPU) 28 - Cortex-M7 (with DP FPU) 29 - Cortex-M23 30 - w/o security extensions (TrustZone) 31 - in secure mode 32 - in non-secure mode 33 - Cortex-M33 (with FPU and DSP extensions) 34 - w/o security extensions (TrustZone) 35 - in secure mode 36 - in non-secure mode 37 - Cortex-M35P (with FPU and DSP extensions) 38 - w/o security extensions (TrustZone) 39 - in secure mode 40 - in non-secure mode 41 - Cortex-M55 (with FPU and DSP extensions) 42 - w/o security extensions (TrustZone) 43 - in secure mode 44 - in non-secure mode 45 - Cortex-M85 (with FPU and DSP extensions) 46 - w/o security extensions (TrustZone) 47 - in secure mode 48 - in non-secure mode 49 - Cortex-A5 50 - w/o NEON extensions 51 - Cortex-A7 52 - w/o NEON extensions 53 - Cortex-A9 54 - w/o NEON extensions 553. Optimization Levels 56 - none 57 - balanced 58 - size 59 - speed 60 61## Prerequisites 62 63The following tools are required to build and run the CoreValidation tests: 64 65- [CMSIS-Toolbox 2.1.0](https://artifacts.keil.arm.com/cmsis-toolbox/2.1.0/)* 66- [CMake 3.25.2](https://cmake.org/download/)* 67- [Ninja 1.10.2](https://github.com/ninja-build/ninja/releases)* 68- [Arm Compiler 6.20](https://artifacts.keil.arm.com/arm-compiler/6.20/21/)* 69- [GCC Compiler 13.2.1](https://artifacts.keil.arm.com/arm-none-eabi-gcc/13.2.1/)* 70- [Clang Compiler 17.0.1](https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm/releases/tag/release-17.0.1)* 71- [Arm Virtual Hardware for Cortex-M based on FastModels 11.22.39](https://artifacts.keil.arm.com/avh/11.22.39/)* 72- [Python 3.9](https://www.python.org/downloads/) 73 74The executables need to be present on the `PATH`. 75For tools distributed via vcpkg (*) this can be achieved automatically: 76 77```bash 78 ./CMSIS/CoreValidation/Project $ vcpkg activate 79``` 80 81Install the Python packages required by `build.py`: 82 83```bash 84 ./CMSIS/CoreValidation/Project $ pip install -r requirements.txt 85``` 86 87## Build and run 88 89To build and run the CoreValidation tests for one or more configurations use the following command line. 90Select the `<compiler>`, `<device>`, and `<optimize>` level to `build` and `run` for. 91 92```bash 93 ./CMSIS/CoreValidation/Project $ ./build.py -c <compiler> -d <device> -o <optimize> [build] [run] 94``` 95 96For example, build and run the tests using GCC for Cortex-M3 with low optimization, execute: 97 98```bash 99 ./CMSIS/CoreValidation/Project $ ./build.py -c GCC -d CM3 -o none build run 100[GCC][Cortex-M3][none](build:csolution) csolution convert -s Validation.csolution.yml -c Validation.GCC_low+CM3 101[GCC][Cortex-M3][none](build:csolution) csolution succeeded with exit code 0 102[GCC][Cortex-M3][none](build:cbuild) cbuild Validation.GCC_low+CM3/Validation.GCC_low+CM3.cprj 103[GCC][Cortex-M3][none](build:cbuild) cbuild succeeded with exit code 0 104[GCC][Cortex-M3][none](run:model_exec) VHT_MPS2_Cortex-M3 -q --simlimit 100 -f ../Layer/Target/CM3/model_config.txt -a Validation.GCC_low+CM3/Validation.GCC_low+CM3_outdir/Validation.GCC_low+CM3.elf 105[GCC][Cortex-M3][none](run:model_exec) VHT_MPS2_Cortex-M3 succeeded with exit code 0 106 107Matrix Summary 108============== 109 110compiler device optimize build clean extract run 111---------- --------- ---------- ------- ------- --------- ----- 112GCC Cortex-M3 none success (skip) (skip) 35/35 113``` 114 115The full test report is written to `Core_Validation-GCC-none-CM3-<timestamp>.junit` file. 116 117## License 118 119[](https://opensource.org/licenses/Apache-2.0) 120