diff --git a/.github/workflows/runtest.yaml b/.github/workflows/runtest.yaml
new file mode 100644
index 00000000..732dbe66
--- /dev/null
+++ b/.github/workflows/runtest.yaml
@@ -0,0 +1,86 @@
+name: Compile and Run
+on:
+ workflow_dispatch:
+ pull_request:
+ branches: [main]
+ push:
+ branches: [main]
+
+permissions:
+ actions: read
+ security-events: write
+
+jobs:
+ CI_test_run:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Setup Python 3.10
+ uses: actions/setup-python@v5
+ with:
+ python-version: '3.10'
+
+ - name: Install system packages
+ run: |
+ sudo add-apt-repository ppa:deadsnakes/ppa
+ sudo apt-get install libpython3.9 libtinfo5
+
+ - name: Activate vcpkg
+ uses: ARM-software/cmsis-actions/vcpkg@v1
+
+ - name: Activate Arm tool license
+ uses: ARM-software/cmsis-actions/armlm@v1
+
+ - name: Prepare framework
+ run: |
+ cd Testing
+ echo "Create missing folders"
+ mkdir FullBenchmark
+ mkdir Output
+ mkdir GeneratedInclude
+ mkdir GeneratedSource
+ mkdir GeneratedIncludeBench
+ mkdir GeneratedSourceBench
+
+ echo "Install missing python packages"
+ pip install -r requirements.txt
+
+ echo "Preprocess test description"
+ python preprocess.py -f desc.txt -o Output.pickle
+ python preprocess.py -f desc_f16.txt -o Output_f16.pickle
+
+ echo "Generate missing CPP headers"
+ python processTests.py -gen . -p Patterns -d Parameters -f Output.pickle -e
+ python processTests.py -gen . -p Patterns -d Parameters -f Output_f16.pickle -e
+
+ cd cmsis_build
+
+ echo "Load missing pack"
+ csolution list packs -s test_ac6.csolution.yml -m > required_packs.txt
+
+ cat required_packs.txt
+ cpackget add -f required_packs.txt
+
+ - name: Execute
+ run: |
+ cd Testing/cmsis_build
+ echo "Running tests"
+
+ python runall.py -avh $AVH_FVP_PLUGINS/../bin
+
+ - name: Upload test report
+ uses: actions/upload-artifact@v4
+ with:
+ name: test-report
+ path: Testing/cmsis_build/summary.html
+
+
+ - name: Check error
+ run: |
+ cd Testing/cmsis_build
+
+ echo "Checking output..."
+ test "$(grep "Error" summary.html | wc -l)" -eq 0
diff --git a/Testing/cmsis_build/runall.py b/Testing/cmsis_build/runall.py
index 277369ba..114d5679 100644
--- a/Testing/cmsis_build/runall.py
+++ b/Testing/cmsis_build/runall.py
@@ -12,9 +12,11 @@
parser.add_argument('-n', action='store_true', help="No force rebuild")
parser.add_argument('-r', action='store_true', help="Raw results only")
parser.add_argument('-c', action='store_true', help="Display cycles (so passing test are displayed)")
+parser.add_argument('-l', action='store_true', help="Local run (not github action)")
args = parser.parse_args()
+
DEBUG=False
if args.d:
DEBUG=True
@@ -112,9 +114,19 @@ def run(*args,mustPrint=False,dumpStdErr=True):
}
# Windows executable
-# (At some point this script will also support
-# unix)
-avhExe={
+avhUnixExe={
+ "CS310":"FVP_Corstone_SSE-310_Ethos-U65",
+ "CS300":"FVP_Corstone_SSE-300_Ethos-U55",
+ "M55":"FVP_MPS2_Cortex-M55",
+ "M33_DSP_FP":"FVP_MPS2_Cortex-M33",
+ "M7DP":"FVP_MPS2_Cortex-M7",
+ "M4FP":"FVP_MPS2_Cortex-M4",
+ "M3":"FVP_MPS2_Cortex-M3",
+ "M23":"FVP_MPS2_Cortex-M23",
+ "M0plus":"FVP_MPS2_Cortex-M0plus",
+}
+
+avhWindowsExe={
"CS310":"VHT_Corstone_SSE-310.exe",
"CS300":"VHT_Corstone_SSE-300_Ethos-U55.exe",
"M55":"VHT_MPS2_Cortex-M55.exe",
@@ -138,7 +150,20 @@ def runAVH(build,core):
if os.path.exists(elf):
app = elf
config = os.path.join("configs",configFiles[core])
- avh = os.path.join(AVHROOT,avhExe[core])
+
+ if AVHROOT:
+ avhAttempt = os.path.join(AVHROOT,avhWindowsExe[core])
+ if os.path.exists(avhAttempt):
+ avh = avhAttempt
+
+ avhAttempt = os.path.join(AVHROOT,avhUnixExe[core])
+ if os.path.exists(avhAttempt):
+ avh = avhAttempt
+ else:
+ avh = avhUnixExe[core]
+
+
+
res=run(avh,"-f",config,app)
return(res)
@@ -160,50 +185,14 @@ def runAVH(build,core):
# Test suite and output pickle needed to decode the result
#print(allSuites)
-#allSuites=[
-#("MFCCQ15","../Output.pickle"),
-#("MFCCQ31","../Output.pickle"),
-#("SupportTestsF16","../Output_f16.pickle"),
-#]
-#allSuites=[("ComplexTestsF32","../Output.pickle"),
-#("DistanceTestsF32","../Output.pickle"),
-#("UnaryTestsF32","../Output.pickle"),
-#("QuaternionTestsF32","../Output.pickle"),
-#("StatsTestsF32","../Output.pickle")
-#]
#allSuites=[
-#("TransformCF64","../Output.pickle"),
-#("TransformCF32","../Output.pickle"),
-#("TransformCQ31","../Output.pickle"),
-#("TransformCQ15","../Output.pickle"),
-#
-#("TransformRF64","../Output.pickle"),
-#("TransformRF32","../Output.pickle"),
-#("TransformRQ31","../Output.pickle"),
-#("TransformRQ15","../Output.pickle"),
-#
-#("MFCCF32","../Output.pickle"),
-#("MFCCQ31","../Output.pickle"),
-#("MFCCQ15","../Output.pickle"),
-#
-#("MFCCF16","../Output_f16.pickle"),
-#("TransformCF16","../Output_f16.pickle"),
-#("TransformRF16","../Output_f16.pickle")
+#("DECIMF64","../Output.pickle"),
+#("UnaryTestsF32","../Output.pickle"),
+#("UnaryTestsF16","../Output_f16.pickle"),
#]
-#allSuites=[("StatsTestsQ7","../Output.pickle")]
-
-allSuites=[
-("UnaryTestsF64","../Output.pickle"),
-("UnaryTestsF32","../Output.pickle"),
-("UnaryTestsF16","../Output_f16.pickle"),
-#("MISCQ15","../Output.pickle"),
-#("MISCQ7","../Output.pickle"),
-#("FIRF16","../Output_f16.pickle")
-]
-
# Solution and build file for all
# the tests
# It is a pair : csolution target type and AVH identification
@@ -213,7 +202,7 @@ def runAVH(build,core):
'test_ac6.csolution.yml':[
# ("VHT-Corstone-310","CS310"),
("VHT-Corstone-300","CS300"),
- # ("VHT-Corstone-300-NOMVE","CS300"),
+ ("VHT-Corstone-300-NOMVE","CS300"),
("VHT_M33","M33_DSP_FP"),
("VHT_M7","M7DP"),
("VHT_M7_UNROLLED","M7DP"),
@@ -222,24 +211,31 @@ def runAVH(build,core):
# #("VHT_M23","M23"),
("VHT_M0P","M0plus")
],
- 'test_gcc.csolution.yml':[
- #("VHT-Corstone-310","CS310"),
+ #'test_gcc.csolution.yml':[
+ # ("VHT-Corstone-300","CS300"),
#("VHT_M55","M55"),
##("VHT_M33","M33_DSP_FP"),
- ("VHT_M7","M7DP"),
- ("VHT_M7_UNROLLED","M7DP"),
- ("VHT_M4","M4FP"),
+ # ("VHT_M7","M7DP"),
+ # ("VHT_M7_UNROLLED","M7DP"),
+ # ("VHT_M4","M4FP"),
##("VHT_M3","M3"),
##("VHT_M23","M23"),
- ("VHT_M0P","M0plus")
- ]
+ # ("VHT_M0P","M0plus")
+ #]
}
# Override previous solutions for more restricted testing.
#solutions={
# 'test_ac6.csolution.yml':[
-# #("VHT-Corstone-300","CS300"),
-# ("VHT_M7_UNROLLED","M7DP"),
+# ("VHT-Corstone-300","CS300"),
+# #("VHT_M7_UNROLLED","M7DP"),
+# ]
+#}
+#
+#solutions={
+# 'test_gcc.csolution.yml':[
+# ("VHT-Corstone-300","CS300"),
+# #("VHT_M7_UNROLLED","M7DP"),
# ]
#}
@@ -336,7 +332,8 @@ def runAVH(build,core):
print(res.msg,file=f)
print(HTMLFOOTER,file=f)
-if ERROR_OCCURED:
- sys.exit("Error occurred")
-else:
- sys.exit(0)
\ No newline at end of file
+if args.l:
+ if ERROR_OCCURED:
+ sys.exit("Error occurred")
+ else:
+ sys.exit(0)
\ No newline at end of file
diff --git a/Testing/cmsis_build/test.Release+VHT-Corstone-310.cprj b/Testing/cmsis_build/test.Release+VHT-Corstone-310.cprj
index 95a6cf53..d7ddada3 100644
--- a/Testing/cmsis_build/test.Release+VHT-Corstone-310.cprj
+++ b/Testing/cmsis_build/test.Release+VHT-Corstone-310.cprj
@@ -1,198 +1,26 @@
-
+
Automatically generated project
-
-
-
-
-
+
-
+
-
+
EMBEDDED;NORMALFVP;CORTEXM
../../Include;../../PrivateInclude;../FrameworkInclude;../GeneratedInclude;../Include/Tests
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ARM_MATH_ROUNDING
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Testing/cmsis_build/test.Release+VHT_M0P.cprj b/Testing/cmsis_build/test.Release+VHT_M0P.cprj
index b7e1f252..eb832a42 100644
--- a/Testing/cmsis_build/test.Release+VHT_M0P.cprj
+++ b/Testing/cmsis_build/test.Release+VHT_M0P.cprj
@@ -1,6 +1,6 @@
-
+
Automatically generated project
@@ -80,6 +80,7 @@
+
diff --git a/Testing/cmsis_build/test.Release+VHT_M23.cprj b/Testing/cmsis_build/test.Release+VHT_M23.cprj
index 9adcb358..85b82897 100644
--- a/Testing/cmsis_build/test.Release+VHT_M23.cprj
+++ b/Testing/cmsis_build/test.Release+VHT_M23.cprj
@@ -1,6 +1,6 @@
-
+
Automatically generated project
@@ -80,6 +80,7 @@
+
diff --git a/Testing/cmsis_build/test.Release+VHT_M3.cprj b/Testing/cmsis_build/test.Release+VHT_M3.cprj
index 48d5e8e1..1ac4ce95 100644
--- a/Testing/cmsis_build/test.Release+VHT_M3.cprj
+++ b/Testing/cmsis_build/test.Release+VHT_M3.cprj
@@ -1,6 +1,6 @@
-
+
Automatically generated project
@@ -80,6 +80,7 @@
+
diff --git a/Testing/cmsis_build/test.Release+VHT_M33.cprj b/Testing/cmsis_build/test.Release+VHT_M33.cprj
index e3e50e6a..4a643b0a 100644
--- a/Testing/cmsis_build/test.Release+VHT_M33.cprj
+++ b/Testing/cmsis_build/test.Release+VHT_M33.cprj
@@ -1,6 +1,6 @@
-
+
Automatically generated project
@@ -80,6 +80,7 @@
+
diff --git a/Testing/cmsis_build/test.Release+VHT_M4.cprj b/Testing/cmsis_build/test.Release+VHT_M4.cprj
index 32802d59..0914c574 100644
--- a/Testing/cmsis_build/test.Release+VHT_M4.cprj
+++ b/Testing/cmsis_build/test.Release+VHT_M4.cprj
@@ -1,6 +1,6 @@
-
+
Automatically generated project
@@ -80,6 +80,7 @@
+
diff --git a/Testing/cmsis_build/test.Release+VHT_M55.cprj b/Testing/cmsis_build/test.Release+VHT_M55.cprj
index 70ae1c58..090adfd0 100644
--- a/Testing/cmsis_build/test.Release+VHT_M55.cprj
+++ b/Testing/cmsis_build/test.Release+VHT_M55.cprj
@@ -1,6 +1,6 @@
-
+
Automatically generated project
@@ -81,6 +81,7 @@
+
diff --git a/Testing/cmsis_build/test.Release+VHT_M7.cprj b/Testing/cmsis_build/test.Release+VHT_M7.cprj
index a838f77d..9cdd2588 100644
--- a/Testing/cmsis_build/test.Release+VHT_M7.cprj
+++ b/Testing/cmsis_build/test.Release+VHT_M7.cprj
@@ -1,6 +1,6 @@
-
+
Automatically generated project
@@ -80,6 +80,7 @@
+
diff --git a/Testing/cmsis_build/test.cproject.yml b/Testing/cmsis_build/test.cproject.yml
index 9017336b..8cec783d 100644
--- a/Testing/cmsis_build/test.cproject.yml
+++ b/Testing/cmsis_build/test.cproject.yml
@@ -68,6 +68,7 @@ project:
- file: ../Source/Tests/ComplexTestsF64.cpp
- file: ../Source/Tests/ComplexTestsQ15.cpp
- file: ../Source/Tests/ComplexTestsQ31.cpp
+ - file: ../Source/Tests/DECIMF64.cpp
- file: ../Source/Tests/DECIMF32.cpp
- file: ../Source/Tests/DECIMQ15.cpp
- file: ../Source/Tests/DECIMQ31.cpp
diff --git a/Testing/cmsis_build/test_gcc.cbuild-pack.yml b/Testing/cmsis_build/test_gcc.cbuild-pack.yml
index 9fe7b88c..208d9ee7 100644
--- a/Testing/cmsis_build/test_gcc.cbuild-pack.yml
+++ b/Testing/cmsis_build/test_gcc.cbuild-pack.yml
@@ -9,9 +9,9 @@ cbuild-pack:
- resolved-pack: ARM::V2M_MPS3_SSE_300_BSP@1.3.0
selected-by-pack:
- ARM::V2M_MPS3_SSE_300_BSP@1.3.0
- - resolved-pack: ARM::V2M_MPS3_SSE_310_BSP@1.1.0
+ - resolved-pack: ARM::V2M_MPS3_SSE_310_BSP@1.3.0
selected-by-pack:
- - ARM::V2M_MPS3_SSE_310_BSP@1.1.0
+ - ARM::V2M_MPS3_SSE_310_BSP@1.3.0
- resolved-pack: Keil::ARM_Compiler@1.7.2
selected-by-pack:
- Keil::ARM_Compiler@1.7.2
diff --git a/Testing/cmsis_build/test_gcc.csolution.yml b/Testing/cmsis_build/test_gcc.csolution.yml
index ec216856..8980c77a 100644
--- a/Testing/cmsis_build/test_gcc.csolution.yml
+++ b/Testing/cmsis_build/test_gcc.csolution.yml
@@ -37,7 +37,7 @@ solution:
packs:
- pack: ARM::CMSIS@5.9.0
- pack: ARM::V2M_MPS3_SSE_300_BSP@1.3.0
- - pack: ARM::V2M_MPS3_SSE_310_BSP@1.1.0
+ - pack: ARM::V2M_MPS3_SSE_310_BSP@1.3.0
- pack: Keil::ARM_Compiler@1.7.2
- pack: ARM::DMA350@1.0.0
@@ -45,11 +45,14 @@ solution:
# There is no gcc support in the pack
# for Corstone CS300.
- - type: VHT-Corstone-310
- device: ARM::SSE-310-MPS3
+ - type: VHT-Corstone-300
+ device: ARM::SSE-300-MPS3
+ board: ARM::V2M-MPS3-SSE-300-FVP
define:
- CORTEXM
+ - SSE300MPS3
+
- type: VHT_M55
device: ARMCM55
define:
diff --git a/Testing/requirements.txt b/Testing/requirements.txt
new file mode 100644
index 00000000..4683276d
--- /dev/null
+++ b/Testing/requirements.txt
@@ -0,0 +1,8 @@
+python-matrix-runner~=1.1.0
+arm-avhclient~=0.1.10
+PyYAML~=6.0
+pyparsing~=3.0.9
+colorama~=0.4.6
+statsmodels~=0.13.5
+numpy~=1.24.3
+panda~=0.3.1
diff --git a/vcpkg-configuration.json b/vcpkg-configuration.json
new file mode 100644
index 00000000..efd106f4
--- /dev/null
+++ b/vcpkg-configuration.json
@@ -0,0 +1,19 @@
+{
+ "registries": [
+ {
+ "name": "arm",
+ "kind": "artifact",
+ "location": "https://artifacts.tools.arm.com/vcpkg-registry"
+ }
+ ],
+ "requires": {
+ "arm:tools/open-cmsis-pack/cmsis-toolbox": "2.4.0",
+ "arm:tools/kitware/cmake": "3.28.4",
+ "arm:tools/ninja-build/ninja": "1.12.0",
+ "arm:compilers/arm/armclang": "6.22.0",
+ "arm:compilers/arm/arm-none-eabi-gcc": "^13.2.1",
+ "arm:models/arm/avh-fvp": "^11.22.39",
+ "arm:debuggers/arm/armdbg": "6.1.2"
+ }
+}
+