Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
101 commits
Select commit Hold shift + click to select a range
ee018ed
Add CI workflow
Oct 21, 2025
45b6806
update CI
Oct 21, 2025
5fdce29
update CI OS
Oct 22, 2025
9b3db7a
update CI new
Oct 22, 2025
4f6f715
update CI OSs
Oct 22, 2025
3677655
update CI newm
Oct 22, 2025
78ba1c8
update CI neww
Oct 22, 2025
c69ae0a
update CI neww
Oct 22, 2025
8d76039
update CI newupadtes
Oct 22, 2025
44fbc1c
update CI newwww
Oct 22, 2025
3e2b776
update CI newweded
Oct 22, 2025
352b539
update CI latest1137
Oct 22, 2025
67b432d
update CI latest1205
Oct 22, 2025
1d78b65
update CI latest1226
Oct 22, 2025
cd3033e
update CI latest1243
Oct 22, 2025
81af8b3
update CI latest0109
Oct 22, 2025
2ea60f6
update CI latest0132
Oct 22, 2025
25d72db
update CI latest0202
Oct 22, 2025
8373c7a
update CI latest0232
Oct 22, 2025
6d597c9
update CI latest0240
Oct 22, 2025
0dcb767
update CI latest0456
Oct 22, 2025
288155d
update CI latest512
Oct 22, 2025
395baa1
update CI latest0520
Oct 22, 2025
27ad1f5
update CI latest0531
Oct 22, 2025
4e6b222
update CI latest957
Oct 23, 2025
92e3ee9
update CI latest1013
Oct 23, 2025
f52713b
update CI latest1020
Oct 23, 2025
ef8a073
update CI latest1024
Oct 23, 2025
f51ebc9
update CI latest1035
Oct 23, 2025
e650451
update CI latest1050
Oct 23, 2025
d9fdc0e
update CI latest1057
Oct 23, 2025
f8ba04f
update CI latest1106
Oct 23, 2025
d11458f
update CI latest1115
Oct 23, 2025
44d4831
update CI latest1136
Oct 23, 2025
203a001
update CI latest1156
Oct 23, 2025
a9da87e
update CI latest1207
Oct 23, 2025
d60823f
update CI latest1220
Oct 23, 2025
52411b4
update CI latest1236
Oct 23, 2025
13b9d3e
update CI latest1251
Oct 23, 2025
4763e91
update CI latest0110
Oct 23, 2025
8872d76
update CI latest0203
Oct 23, 2025
02a933c
update CI latest0222
Oct 23, 2025
d2d25f6
update CI latest0230
Oct 23, 2025
4b9d314
update CI latest0316
Oct 23, 2025
944bf94
update CI latest0335
Oct 23, 2025
8ed2b3d
update CI latest0343
Oct 23, 2025
e25161c
update CI latest0349
Oct 23, 2025
91267b4
update CI latest0357
Oct 23, 2025
29d0350
update CI latest0407
Oct 23, 2025
9e2c029
Latest CI 0732
Oct 23, 2025
45c6e91
update CI latest0739
Oct 23, 2025
572d79e
update CI latest0148
Oct 24, 2025
f9f54bf
Latest CI 154
Oct 24, 2025
628fac7
update CI latest204
Oct 24, 2025
328f9f4
Latest CI 220
Oct 24, 2025
0ab8d9c
update CI latest229
Oct 24, 2025
8702903
Latest CI 235
Oct 24, 2025
5158e73
Latest CI 239
Oct 24, 2025
0a13b28
update CI latest301
Oct 24, 2025
cfb3bb9
Latest CI 2395
Oct 24, 2025
53c8819
Latest CI 322
Oct 24, 2025
3d0ab10
update CI latest335
Oct 24, 2025
2501c21
Latest CI 355
Oct 24, 2025
5693729
Latest CI 404
Oct 24, 2025
096a1d6
update CI latest404
Oct 25, 2025
a823455
Latest CI 405
Oct 25, 2025
8c26c7f
Latest CI 410
Oct 25, 2025
b411fac
update CI latest411
Oct 25, 2025
7e35fa5
Latest CI 405
Oct 25, 2025
33f055b
Latest CI 404
Oct 25, 2025
5ac7372
Latest CI 355
Oct 25, 2025
e0d3242
Latest CI 322
Oct 25, 2025
ed60e5b
update CI latest301
Oct 25, 2025
ea4ccb6
Latest CI 239
Oct 25, 2025
8bc40f8
Latest CI 2395
Oct 25, 2025
153fbf6
Latest CI 2395
Oct 25, 2025
b6e4bea
update CI latest335
Oct 25, 2025
33df89c
update CI latest335
Oct 25, 2025
fc72f3a
Update .github/workflows/CI.yml
silabs-JeevanRH Oct 29, 2025
788b000
generate apps matrix dynamically based on templates.xml, split upload…
Oct 30, 2025
1338010
Fix genarte_build.py filename issues
Oct 30, 2025
f43181c
Fix genarte_build.py filename issues
Oct 30, 2025
e8a05c5
Fix genarte_build.py building issues
Oct 30, 2025
ffaff82
Fix genarte_build.py filename issues
Oct 30, 2025
2f9cf66
Fix genarte_build.py filename issues
Oct 30, 2025
cb1b94a
Update template.xml path in genarte_build.py
Oct 30, 2025
e3ae418
ensure generate_matrix.py outputs valid JSON for fromJSON() and fix …
Oct 30, 2025
5869f67
removw unwanted print statement in genarte_build.py
Oct 30, 2025
ffb8bb0
ensure generate_matrix.py outputs valid JSON for fromJSON() and fix …
Oct 30, 2025
8a5b430
ensure generate_matrix.py outputs valid JSON for fromJSON() and fix …
Oct 30, 2025
df31e44
debug file structure
Oct 30, 2025
e0ba1f9
update file structure
Oct 30, 2025
52801a2
Update Board compatibility
Oct 30, 2025
b476ee8
Remove unsupported example from template xml and add CI trigger condi…
Oct 31, 2025
f0d2069
CI trigger on push
Oct 31, 2025
0c9f5f6
CI trigger on push
Oct 31, 2025
44c026d
CI trigger condition update
Oct 31, 2025
e730a6c
Retrigger CI to see if json modification works
Oct 31, 2025
2c75fc2
CI trigger on push
Oct 31, 2025
78e6e42
CI trigger condition update
Oct 31, 2025
cc5e167
Rename CI.yml to ci.yml (fix case sensitivity)
Nov 6, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
152 changes: 152 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
name: Continuous Integration for Machine Learning Applications
on:
push:
branches:
- main
- feature/*
tags:
- v*
pull_request:
branches:
- main
- feature/*
workflow_dispatch:

permissions:
id-token: write
contents: read

jobs:
generate-matrix:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- uses: actions/checkout@v5

- name: Generate dynamic matrix from templates.xml
id: set-matrix
run: |
matrix=$(python3 .github/workflows/scripts/generate_matrix.py | jq -c .)
echo "matrix=$matrix" >> $GITHUB_OUTPUT

get-sdk:
runs-on: ubuntu-latest
steps:
- name: Clone GSDK and ai-ml app
shell: bash
run: |
set -e
mkdir src
echo "==> Creating developer directories..."
cd src
echo "==> Cloning public GSDK"
git clone https://github.com/SiliconLabs/simplicity_sdk.git gsdk
cd gsdk
git checkout v2025.6.2
mkdir extension
cd extension
git clone --recurse-submodules https://github.com/SiliconLabsSoftware/aiml-extension.git aiml-extension
cd aiml-extension
git checkout v2.1.2
git submodule update --init --recursive
git lfs pull || true

- name: Checkout machine_learning_applications (this repo)
uses: actions/checkout@v5
with:
path: src/gsdk/extension/machine_learning_applications

- name: Upload SDK
uses: actions/upload-artifact@v5
with:
name: sisdk-and-extensions
path: .
include-hidden-files: true

get-tools:
runs-on: ubuntu-latest
steps:
- name: Download ARM-GNU and SLC toolchain
run: |
mkdir -p tools && cd tools
wget -q https://developer.arm.com/-/media/Files/downloads/gnu/12.2.rel1/binrel/arm-gnu-toolchain-12.2.rel1-x86_64-arm-none-eabi.tar.xz
tar -xf arm-gnu-toolchain-12.2.rel1-x86_64-arm-none-eabi.tar.xz
mv arm-gnu-toolchain-12.2.rel1-x86_64-arm-none-eabi armgnu
rm arm-gnu-toolchain-12.2.rel1-x86_64-arm-none-eabi.tar.xz
wget -q https://www.silabs.com/documents/public/software/slc_cli_linux.zip
unzip -q slc_cli_linux.zip -d slc_cli
rm slc_cli_linux.zip

- name: Upload Tools
uses: actions/upload-artifact@v5
with:
name: arm-gnu-toolchain-and-slc
path: .
include-hidden-files: true

build:
runs-on: ubuntu-latest
needs: [generate-matrix, get-sdk, get-tools]
strategy:
fail-fast: false
matrix: ${{ fromJSON(needs.generate-matrix.outputs.matrix) }}
steps:
- name: Download GSDK
uses: actions/download-artifact@v5
with:
name: sisdk-and-extensions
path: .

- name: Download ARM-GNU and SLC toolchain
uses: actions/download-artifact@v5
with:
name: arm-gnu-toolchain-and-slc
path: .

- name: Install Java 21
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '21'
check-latest: true

- name: Configure SLC,ARM-GNU, JAVA paths
run: |
set -e
tree -L 3
chmod -R +x ${{ github.workspace }}/tools/armgnu
echo "ARM_GCC_DIR=${{ github.workspace }}/tools/armgnu" >> "$GITHUB_ENV"
echo "${{ github.workspace }}/tools/armgnu/bin/" >> "$GITHUB_PATH"

SLC_DIR="${{ github.workspace }}/tools/slc_cli/slc_cli/bin/slc-cli"
chmod +x "$SLC_DIR/slc-cli"
ln -sf "$SLC_DIR/slc-cli" "$SLC_DIR/slc"
echo "UC_CLI_DIR=$SLC_DIR" >> "$GITHUB_ENV"
echo "$SLC_DIR" >> "$GITHUB_PATH"

echo "SLC_JAVA_HOME=$JAVA_HOME" >> "$GITHUB_ENV"

- name: Trust sdk's
run: |
set -e
slc configuration --sdk "${{ github.workspace }}/src/gsdk"
slc signature trust --sdk "${{ github.workspace }}/src/gsdk"
slc signature trust --extension-path "${{ github.workspace }}/src/gsdk/extension/aiml-extension"
slc signature trust --extension-path "${{ github.workspace }}/src/gsdk/extension/machine_learning_applications"

- name: Generate + Build
working-directory: ${{ github.workspace }}/src/gsdk/extension/machine_learning_applications
env:
APP: ${{ matrix.app }}
BOARD: ${{ matrix.board }}
run: |
set -e
echo "App: $APP"
echo "BOARD: $BOARD"
slc generate -d target/$APP/$BOARD -p $APP.slcp --with $BOARD -s "${{ github.workspace }}/src/gsdk"
cmake --preset project -S target/$APP/$BOARD/${APP##*/}_cmake
cmake --build target/$APP/$BOARD/${APP##*/}_cmake/build --parallel
echo "==> Listing generated .s37 files"
find ./target -name "*.s37"

41 changes: 41 additions & 0 deletions .github/workflows/scripts/generate_matrix.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#!/usr/bin/env python3
import os, json
from pathlib import Path
import xml.etree.ElementTree as ET

ROOT = Path(__file__).resolve().parents[3]
TEMPLATES_XML = ROOT / "templates.xml"

def get_prop(desc, key):
# <properties key="boardCompatibility" value="...">
p = desc.find(f'properties[@key="{key}"]')
return (p.get("value") if p is not None else "").strip()

def split_ws(s):
# boardCompatibility is space-separated: "brd2601a brd2601b"
return [x for x in s.replace(",", " ").split() if x]

def main():
tree = ET.parse(TEMPLATES_XML)
root = tree.getroot()

rows = []
for desc in root.findall("descriptors"):
app = get_prop(desc, "projectFilePaths").split(".")[0] # e.g. application/voice/.../series_2.slcp -> application/voice/.../series_2
boards = split_ws(get_prop(desc, "boardCompatibility")) # e.g. ["brd2601a", "brd2601b"]

for board in boards:
rows.append({
"app": app,
"board": board
})

if not rows:
# Avoid empty matrix which makes Actions error out
rows = [{"app":"noop","board":"noop"}]

matrix = {"include": rows}
print(json.dumps(matrix, indent=2))

if __name__ == "__main__":
main()
14 changes: 0 additions & 14 deletions templates.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,20 +13,6 @@
<properties key="stockConfigCompatibility" value="com.silabs.ss.framework.project.toolchain.core.default"/>
<properties key="filters" value="Capability|Machine\ Learning Device\ Type|SoC MCU|32-bit\ MCU Project\ Difficulty|Advanced"/>
</descriptors>
<descriptors name="sensory_wakeupword" label="Machine Learning - Sensory Wakeup Word" description="This example project demos wakeup word detection using Sensory's TrulyHandsFree (THF) solution for Series 1 boards. Several models implementing different wake word phrases are included in the provided example projects. You can also create you own wake word model on Sensory's VoiceHub and include it in this demo to try it out.&#xA;">
<properties key="namespace" value="template.uc"/>
<properties key="keywords" value="universal\ configurator"/>
<properties key="projectFilePaths" value="application/voice/sensory_wakeupword/app/sensory_wakeupword_series_1.slcp"/>
<properties key="readmeFiles" value="application/voice/sensory_wakeupword/README.md"/>
<properties key="boardCompatibility" value="brd4166a"/>
<properties key="partCompatibility" value=".*efr32mg12p.*"/>
<properties key="ideCompatibility" value="iar-embedded-workbench makefile-ide segger-embedded-studio simplicity-ide"/>
<properties key="toolchainCompatibility" value="gcc iar segger"/>
<properties key="category" value="Example|Machine Learning"/>
<properties key="quality" value="EXPERIMENTAL"/>
<properties key="stockConfigCompatibility" value="com.silabs.ss.framework.project.toolchain.core.default"/>
<properties key="filters" value="Capability|Machine\ Learning Device\ Type|SoC MCU|32-bit\ MCU Project\ Difficulty|Advanced"/>
</descriptors>
<descriptors name="people_flow_counter_mlx90640" label="Machine Learning - People Flow Counter" description="A demo displaying how xG24-DK2601B can be used to to gain information about people flow using an IR camera.&#xA;">
<properties key="namespace" value="template.uc"/>
<properties key="keywords" value="universal\ configurator"/>
Expand Down