The CMSIS-DSP tests are publicly available, and are used for validation of the library. They can be run on the Corstone-300 Fixed Virtual Platform (FVP).
These tests are primarily for Arm internal use, but users can replicate if they wish. Else proceed to the next step .
These instructions assume an Ubuntu Linux host machine, or use of Arm Virtual Hardware .
The Corstone-300 FVP is available from the Arm Ecosystem FVP page. Setup instructions are given in the install guide .
Alternatively, you can access the FVP with Arm Virtual Hardware . Setup instructions are given in the Arm Virtual Hardware install guide .
The examples can be built with Arm Compiler for Embedded (default) or Arm GNU Toolchain .
Both toolchains are installed within Arm Virtual Hardware.
To install locally see:
Install python 3 prerequisites for the CMSIS-DSP test suite:
sudo apt update
sudo ln -s /usr/local/bin/pip3 /usr/bin/pip3.8
pip install --upgrade pip
pip install pyparsing
pip install Colorama
Next, clone the CMSIS-DSP git repository:
git clone https://github.com/ARM-software/CMSIS-DSP/
Now, build the test framework and generate all the C files needed using the steps below:
cd CMSIS-DSP/Testing
./createDefaultFolder.sh
python preprocess.py -f desc.txt
python preprocess.py -f desc_f16.txt -o Output_f16.pickle
python processTests.py -e
python processTests.py -e -f Output_f16.pickle
Select the test suite you would like to build the tests for.
For example, run the command below to build all the BasicTests for F32 data type
python processTests.py -e BasicTestsF32
CMSIS-DSP repository has a cmsis_build directory with all the files to build the tests for different AVH simulation targets. Run the commands below to first install the CMSIS-DSP pack and then build the selected tests for Corstone-300 AVH FVP.
Check the CMSIS-DSP GitHub project for the latest released version.
cd cmsis_build
cpackget pack add https://github.com/ARM-software/CMSIS-DSP/releases/download/v1.14.4/ARM.CMSIS-DSP.1.14.4.pack
cbuild.sh "test.Release+VHT-Corstone-300.cprj" --outdir=Objects --intdir=Tmp --packs
The output executables from the build are created in the Objects
directory as specified by the command.
The CMSIS-DSP suite of tests are ready to be run on the Corstone-300 FVP that is already installed on the AMI.
Use a command such as the below to run:
VHT_Corstone_SSE-300_Ethos-U55 -a Objects/test.axf -f configs/ARM_VHT_Corstone_300_config.txt > results.txt
You will see raw output similar to the below in the results.txt
file. This output needs be post-processed to understand the results.
S: g 1
S: g 1
S: g 6
S: s 2
S: t
S: 1 0 0 362 Y
E:
b
S: t
S: 2 0 0 494 Y
E:
...
To post-process the raw output and view the results, run the command below:
python ../processResult.py -f ../Output.pickle -e -r results.txt
Now, you will see the test pass/fail status for each of the CMSIS-DSPs tests that you run.
Group : Root (1)
Group : DSP Tests (1)
Group : Basic Tests (6)
Suite : Basic Tests F32 (2)
Test nb=3 arm_add_f32 (test_add_f32 - 1) : PASSED (cycles = 362)
Test nb=4n arm_add_f32 (test_add_f32 - 2) : PASSED (cycles = 494)
Test nb=4n+1 arm_add_f32 (test_add_f32 - 3) : PASSED (cycles = 580)
Test nb=3 arm_sub_f32 (test_sub_f32 - 4) : PASSED (cycles = 361)
Test nb=4n arm_sub_f32 (test_sub_f32 - 5) : PASSED (cycles = 496)
Test nb=4n+1 arm_sub_f32 (test_sub_f32 - 6) : PASSED (cycles = 582)
Test nb=3 arm_mult_f32 (test_mult_f32 - 7) : PASSED (cycles = 325)
...
A warning will be generated to say that the cycle information is not accurate on the FVP. This can be ignored for the purposes of pass/fail.
The cycles displayed by this script must not be trusted.
They are just an indication. The timing code has not yet been validated.