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" + } +} +