Skip to content

Commit

Permalink
Merge pull request #71 from ed-xmos/feature/ap-1
Browse files Browse the repository at this point in the history
Major lib_src update
  • Loading branch information
ed-xmos authored Sep 1, 2023
2 parents 703eb12 + 089441c commit 8251a51
Show file tree
Hide file tree
Showing 491 changed files with 29,515 additions and 110,643 deletions.
57 changes: 57 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Documentation

on:
schedule:
# run at 5am every day
- cron: '0 5 * * *'
push:
paths:
- '.github/workflows/docs.yml'
- 'settings.json'
- 'doc/exclude_patterns.inc'
- '**/doc/**'
pull_request:
paths:
- '.github/workflows/docs.yml'
- 'settings.json'
- 'doc/exclude-patterns.inc'
- '**/doc/**'

# Allow manually triggering the workflow.
workflow_dispatch: {}

env:
XCORE_DOC_BUILDER: 'ghcr.io/xmos/doc_builder:v3.0.0'

jobs:
build_documentation:
name: Build and package documentation
if: github.repository_owner == 'xmos'
runs-on: ubuntu-latest
steps:
- name: Checkout this repo
uses: actions/checkout@v3

- uses: actions/setup-python@v4
with:
python-version: '3.10.x'

- name: Pull doc_builder container
run: |
docker pull ${XCORE_DOC_BUILDER}
- name: Build documentation
run: |
pwd
docker run --user "$(id -u):$(id -g)" --rm -v ${{ github.workspace }}:/build -e EXCLUDE_PATTERNS="/build/doc/exclude-patterns.inc" -e OUTPUT_DIR="/build/doc/_build" -e PDF=1 -e SKIP_LINK=1 ${XCORE_DOC_BUILDER}
tree
DOC_VERSION=$(grep version settings.json | grep -o "[0-9]*\.[0-9]*\.[0-9]")
mv doc/_build/pdf/programming_guide.pdf doc/_build/pdf/programming_guide_v${DOC_VERSION}.pdf
- name: Save documentation artifacts
uses: actions/upload-artifact@v3
with:
name: docs lib_src
path: doc/_build
if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn`
retention-days: 30
9 changes: 5 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,9 @@ xsim.args
tests/src_output
*.bak
**/.venv/**

# waf build files
.lock-waf_*
.waf-*/
build/
tests/tmp
tests/vpu_ff3_test/autogen
tests/vpu_rat_test/autogen
*.csv
python/lib_src.egg-info
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "xmos_cmake_toolchain"]
path = xmos_cmake_toolchain
url = [email protected]:xmos/xmos_cmake_toolchain.git
32 changes: 32 additions & 0 deletions .xmos_ignore_source_check
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
tests/asrc_test/model/ASRC.c
tests/asrc_test/model/ASRC.h
tests/asrc_test/model/FIR.c
tests/asrc_test/model/FIR.h
tests/asrc_test/model/FilterDefs.c
tests/asrc_test/model/FilterDefs.h
tests/asrc_test/model/IntArithmetic.c
tests/asrc_test/model/IntArithmetic.h
tests/asrc_test/model/Main.c
tests/asrc_test/model/Main.h
tests/ds3_test/model/FIRDS3.c
tests/ds3_test/model/FIRDS3.h
tests/ds3_test/model/IntArithmetic.c
tests/ds3_test/model/IntArithmetic.h
tests/ds3_test/model/Main.c
tests/ds3_test/model/Main.h
tests/os3_test/model/FIROS3.c
tests/os3_test/model/FIROS3.h
tests/os3_test/model/IntArithmetic.c
tests/os3_test/model/IntArithmetic.h
tests/os3_test/model/Main.c
tests/os3_test/model/Main.h
tests/ssrc_test/model/FIR.c
tests/ssrc_test/model/FIR.h
tests/ssrc_test/model/FilterDefs.c
tests/ssrc_test/model/FilterDefs.h
tests/ssrc_test/model/IntArithmetic.c
tests/ssrc_test/model/IntArithmetic.h
tests/ssrc_test/model/Main.c
tests/ssrc_test/model/Main.h
tests/ssrc_test/model/SSRC.c
tests/ssrc_test/model/SSRC.h
22 changes: 20 additions & 2 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,24 @@
lib_src change log
==================

2.3.0
-----

* ADDED: XS3 VPU optimised voice fixed factor of 3 upsampling/downsampling
* ADDED: XS3 VPU optimised voice fixed factor of 3/2 upsampling/downsampling
* CHANGED: OS3 uses firos3_144.dat coefficients by default inline with model
* CHANGED: Replaced xmostest with pytest for all SRC automated tests
* CHANGED: Used XMOS doc builder for documentation
* CHANGED: Golden reference test signals now generated automatically by CI
* RESOLVED: Linker warning on channel ends
* REMOVED: AN00231 ASRC App Note. See github.com/xmos/sln_voice/examples

* Changes to dependencies:

- lib_logging: 2.0.1 -> 3.1.1

- lib_xassert: 2.0.1 -> 4.1.0

2.2.0
-----

Expand All @@ -16,7 +34,7 @@ lib_src change log
2.1.0
-----

* CHANGED: Use XMOS Public Licence Version 1
* CHANGED: Use XMOS Public License Version 1

2.0.1
-----
Expand All @@ -27,7 +45,7 @@ lib_src change log
2.0.0
-----

* CHANGED: Build files updated to support new "xcommon" behaviour in xwaf.
* CHANGED: Build files updated to support new "xcommon" behavior in xwaf.

1.1.2
-----
Expand Down
46 changes: 40 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
cmake_minimum_required(VERSION 3.21.0)

project(lib_src LANGUAGES C ASM)

if(PROJECT_IS_TOP_LEVEL)
Expand All @@ -11,14 +12,44 @@ if(PROJECT_IS_TOP_LEVEL)
FetchContent_MakeAvailable(fwk_core)
endif()

if((${CMAKE_SYSTEM_PROCESSOR} STREQUAL XCORE_XS3A) OR (${CMAKE_SYSTEM_PROCESSOR} STREQUAL XCORE_XS2A))
add_subdirectory(tests)

# XS3 only libraries that use the Vector Processing Unit
if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL XCORE_XS3A)
## Source files
file(GLOB_RECURSE LIB_C_SOURCES lib_src/src/*.c )
file(GLOB_RECURSE LIB_XC_SOURCES lib_src/src/*.xc)
file(GLOB_RECURSE LIB_ASM_SOURCES lib_src/src/*.S )
file(GLOB_RECURSE LIB_C_SOURCES_XS3 lib_src/src/fixed_factor_vpu_voice/*.c )
file(GLOB_RECURSE LIB_XC_SOURCES_XS3 lib_src/src/fixed_factor_vpu_voice/*.xc)
file(GLOB_RECURSE LIB_ASM_SOURCES_XS3 lib_src/src/fixed_factor_vpu_voice/*.S )

set(ADDITIONAL_INCLUDE_DIRS_XS3 lib_src/src/fixed_factor_vpu_voice
)
endif()


if((${CMAKE_SYSTEM_PROCESSOR} STREQUAL XCORE_XS3A) OR (${CMAKE_SYSTEM_PROCESSOR} STREQUAL XCORE_XS2A))
## Source files
file(GLOB_RECURSE LIB_C_SOURCES lib_src/src/fixed_factor_of_3/*.c
lib_src/src/fixed_factor_of_3_voice/*.c
lib_src/src/multirate_hifi/*.c
)
file(GLOB_RECURSE LIB_XC_SOURCES lib_src/src/fixed_factor_of_3/*.xc
lib_src/src/fixed_factor_of_3_voice/*.xc
lib_src/src/multirate_hifi/*.xc
)
file(GLOB_RECURSE LIB_ASM_SOURCES lib_src/src/fixed_factor_of_3/*.S
lib_src/src/fixed_factor_of_3_voice/*.S
lib_src/src/multirate_hifi/*.S
)

## Create library target
add_library(lib_src STATIC EXCLUDE_FROM_ALL ${LIB_C_SOURCES} ${LIB_ASM_SOURCES} ${LIB_XC_SOURCES})
add_library(lib_src STATIC EXCLUDE_FROM_ALL ${LIB_C_SOURCES}
${LIB_C_SOURCES_XS3}
${LIB_ASM_SOURCES}
${LIB_XC_SOURCES_XS3}
${LIB_XC_SOURCES}
${LIB_ASM_SOURCES_XS3}
)

target_include_directories(lib_src
PUBLIC
lib_src/api
Expand All @@ -31,15 +62,18 @@ if((${CMAKE_SYSTEM_PROCESSOR} STREQUAL XCORE_XS3A) OR (${CMAKE_SYSTEM_PROCESSOR}
lib_src/src/multirate_hifi
lib_src/src/multirate_hifi/asrc
lib_src/src/multirate_hifi/ssrc
${ADDITIONAL_INCLUDE_DIRS_XS3}
)

target_link_libraries(lib_src
PUBLIC
# defined in fwk_core
framework_core_legacy_compat
)

target_compile_options(lib_src
PRIVATE
-O3
-g
)

endif()
135 changes: 118 additions & 17 deletions Jenkinsfile
Original file line number Diff line number Diff line change
@@ -1,52 +1,153 @@
@Library('[email protected]') _
@Library('[email protected]')

def runningOn(machine) {
println "Stage running on:"
println machine
}

// run pytest with common flags for project. any passed in though extra args will
// be appended
def localRunPytest(String extra_args="") {
catchError{
sh "python -m pytest --junitxml=pytest_result.xml -rA -v --durations=0 -o junit_logging=all ${extra_args}"
}
junit "pytest_result.xml"
}

getApproval()

pipeline {
agent {
label 'x86_64&&macOS'
label 'x86_64&&macOS' // These agents have 24 cores so good for parallel xsim runs
}
environment {
REPO = 'lib_src'
VIEW = getViewName(REPO)
PYTHON_VERSION = "3.10.5"
VENV_DIRNAME = ".venv"
}
options {
skipDefaultCheckout()
}
parameters {
string(
name: 'TOOLS_VERSION',
defaultValue: '15.2.1',
description: 'The XTC tools version'
)
}
stages {
stage('Get view') {
stage('Get repo') {
steps {
sh "mkdir ${REPO}"
// source checks require the directory
// name to be the same as the repo name
dir("${REPO}") {
// checkout repo
checkout scm
sh 'git submodule update --init --recursive --depth 1'
}
}
}
stage ("Create Python environment")
{
steps {
xcorePrepareSandbox("${VIEW}", "${REPO}")
dir("${REPO}") {
createVenv('requirements.txt')
withVenv {
sh 'pip install -r requirements.txt'
}
}
}
}
stage('Library checks') {
steps {
xcoreLibraryChecks("${REPO}")
dir("${REPO}") {
sh 'git clone [email protected]:xmos/infr_apps.git'
sh 'git clone [email protected]:xmos/infr_scripts_py.git'
// These are needed for xmake legacy build and also changelog check
sh 'git clone [email protected]:xmos/lib_logging.git'
sh 'git clone [email protected]:xmos/lib_xassert.git'
withVenv {
sh 'pip install -e infr_scripts_py'
sh 'pip install -e infr_apps'
dir("tests") {
withEnv(["XMOS_ROOT=.."]) {
localRunPytest('-s test_lib_checks.py -vv')
}
}
}
}
}
}
stage('xCORE builds') {
stage('Test xmake build') {
steps {
runningOn(env.NODE_NAME)
dir("${REPO}") {
xcoreAllAppsBuild('examples')
xcoreAllAppNotesBuild('examples')
dir("${REPO}") {
runXdoc('doc')
withTools(params.TOOLS_VERSION) {
withVenv {
dir("tests") {
localRunPytest('-k "legacy" -vv')
}
}
}
}
// Archive all the generated .pdf docs
archiveArtifacts artifacts: "${REPO}/**/pdf/*.pdf", fingerprint: true, allowEmptyArchive: true
}
}
stage('Tests') {
stage('Tests XS2') {
steps {
runXmostest("${REPO}", 'tests')
runningOn(env.NODE_NAME)
dir("${REPO}") {
withTools(params.TOOLS_VERSION) {
withVenv {
sh 'mkdir build'
dir("build") {
sh 'rm -rf'
sh 'cmake --toolchain ../xmos_cmake_toolchain/xs2a.cmake ..'
sh 'make test_ds3_voice test_us3_voice test_unity_gain_voice -j'
}
dir("tests") {
localRunPytest('-n auto -k "xs2" -vv')
}
dir("build") {
sh 'rm -rf' // Cleanup XS2 cmake cache for next stage
}
}
}
}
}
}
stage('Tests XS3') {
steps {
runningOn(env.NODE_NAME)
dir("${REPO}") {
withTools(params.TOOLS_VERSION) {
withVenv {
dir("tests") {
localRunPytest('-m prepare') // Do all pre work like building and generating golden ref where needed

// FF3 HiFi tests for OS3 and DS3
localRunPytest('-m main -n auto -k "hifi_ff3" -vv')

// ASRC and SSRC tests across all in/out freqs and deviations (asrc only)
localRunPytest('-m main -n auto -k "mrhf" -vv')
archiveArtifacts artifacts: "mips_report*.csv", allowEmptyArchive: true

// VPU enabled ff3 and rat tests
localRunPytest('-m main -k "vpu" -vv') // xdist not working yet so no -n auto

// Profile the ASRC
localRunPytest('-m main -k "profile_asrc" -vv')
sh 'tree'
archiveArtifacts artifacts: "gprof_results/*.png", allowEmptyArchive: true
}
}
}
}
}
}
}
post {
success {
updateViewfiles()
}
cleanup {
xcoreCleanSandbox()
}
Expand Down
Loading

0 comments on commit 8251a51

Please sign in to comment.