Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
100 commits
Select commit Hold shift + click to select a range
e80cfa3
Add CI workflow
Oct 21, 2025
821f3b6
update CI
Oct 21, 2025
f595544
update CI OS
Oct 22, 2025
a3e20a8
update CI new
Oct 22, 2025
5261098
update CI OSs
Oct 22, 2025
f9bb9a4
update CI newm
Oct 22, 2025
f16b11a
update CI neww
Oct 22, 2025
38fa9bc
update CI neww
Oct 22, 2025
c8b025f
update CI newupadtes
Oct 22, 2025
a0cb5d4
update CI newwww
Oct 22, 2025
884d629
update CI newweded
Oct 22, 2025
237b37a
update CI latest1137
Oct 22, 2025
99ca1f4
update CI latest1205
Oct 22, 2025
af60f0d
update CI latest1226
Oct 22, 2025
2964e02
update CI latest1243
Oct 22, 2025
b725bf5
update CI latest0109
Oct 22, 2025
efd9aa9
update CI latest0132
Oct 22, 2025
233399f
update CI latest0202
Oct 22, 2025
192cebd
update CI latest0232
Oct 22, 2025
e8c400b
update CI latest0240
Oct 22, 2025
a24c4c3
update CI latest0456
Oct 22, 2025
2cfd993
update CI latest512
Oct 22, 2025
38f455a
update CI latest0520
Oct 22, 2025
f110ab8
update CI latest0531
Oct 22, 2025
c7031ea
update CI latest957
Oct 23, 2025
785633e
update CI latest1013
Oct 23, 2025
04d120d
update CI latest1020
Oct 23, 2025
1fd5446
update CI latest1024
Oct 23, 2025
eccc103
update CI latest1035
Oct 23, 2025
e2040df
update CI latest1050
Oct 23, 2025
1ba8d45
update CI latest1057
Oct 23, 2025
7d80481
update CI latest1106
Oct 23, 2025
af06a60
update CI latest1115
Oct 23, 2025
fb5849e
update CI latest1136
Oct 23, 2025
38258bf
update CI latest1156
Oct 23, 2025
d0ec482
update CI latest1207
Oct 23, 2025
7b702a6
update CI latest1220
Oct 23, 2025
1dfc200
update CI latest1236
Oct 23, 2025
9cdd536
update CI latest1251
Oct 23, 2025
0c16526
update CI latest0110
Oct 23, 2025
86cd92e
update CI latest0203
Oct 23, 2025
92ba1dd
update CI latest0222
Oct 23, 2025
ba0b3af
update CI latest0230
Oct 23, 2025
124f538
update CI latest0316
Oct 23, 2025
af708d9
update CI latest0335
Oct 23, 2025
6952139
update CI latest0343
Oct 23, 2025
559ea6b
update CI latest0349
Oct 23, 2025
c10d8c0
update CI latest0357
Oct 23, 2025
83abe55
update CI latest0407
Oct 23, 2025
0e68ad1
Latest CI 0732
Oct 23, 2025
b3b9fd2
update CI latest0739
Oct 23, 2025
7a5c23a
update CI latest0148
Oct 24, 2025
7d65d61
Latest CI 154
Oct 24, 2025
5f372e7
update CI latest204
Oct 24, 2025
898a287
Latest CI 220
Oct 24, 2025
9ba8b84
update CI latest229
Oct 24, 2025
447acb0
Latest CI 235
Oct 24, 2025
4b6fa33
Latest CI 239
Oct 24, 2025
2309144
update CI latest301
Oct 24, 2025
14bd446
Latest CI 2395
Oct 24, 2025
6e50743
Latest CI 322
Oct 24, 2025
dceb46f
update CI latest335
Oct 24, 2025
d80f1da
Latest CI 355
Oct 24, 2025
468042c
Latest CI 404
Oct 24, 2025
798a1a9
update CI latest404
Oct 25, 2025
67a8242
Latest CI 405
Oct 25, 2025
ed9c72d
Latest CI 410
Oct 25, 2025
e0160e1
update CI latest411
Oct 25, 2025
9751d9e
Latest CI 405
Oct 25, 2025
93a39c5
Latest CI 404
Oct 25, 2025
843b919
Latest CI 355
Oct 25, 2025
1821252
Latest CI 322
Oct 25, 2025
aff834c
update CI latest301
Oct 25, 2025
dcae63f
Latest CI 239
Oct 25, 2025
dd22856
Latest CI 2395
Oct 25, 2025
bb33727
Latest CI 2395
Oct 25, 2025
58c4d2f
update CI latest335
Oct 25, 2025
c90dc7b
update CI latest335
Oct 25, 2025
3334974
Update .github/workflows/CI.yml
silabs-JeevanRH Oct 29, 2025
831bf62
generate apps matrix dynamically based on templates.xml, split upload…
Oct 30, 2025
23a6dc5
Fix genarte_build.py filename issues
Oct 30, 2025
27de542
Fix genarte_build.py filename issues
Oct 30, 2025
8d3a128
Fix genarte_build.py building issues
Oct 30, 2025
d63e450
Fix genarte_build.py filename issues
Oct 30, 2025
2360778
Fix genarte_build.py filename issues
Oct 30, 2025
d81dc29
Update template.xml path in genarte_build.py
Oct 30, 2025
1c74b6d
ensure generate_matrix.py outputs valid JSON for fromJSON() and fix …
Oct 30, 2025
06550d8
removw unwanted print statement in genarte_build.py
Oct 30, 2025
d5d6e66
ensure generate_matrix.py outputs valid JSON for fromJSON() and fix …
Oct 30, 2025
ba88781
ensure generate_matrix.py outputs valid JSON for fromJSON() and fix …
Oct 30, 2025
1e4b3d2
debug file structure
Oct 30, 2025
8c3a617
update file structure
Oct 30, 2025
94b7cf4
Update Board compatibility
Oct 30, 2025
1f61128
Remove unsupported example from template xml and add CI trigger condi…
Oct 31, 2025
2443f30
CI trigger on push
Oct 31, 2025
f7ed6ba
CI trigger on push
Oct 31, 2025
0272ca3
CI trigger condition update
Oct 31, 2025
fc515da
Retrigger CI to see if json modification works
Oct 31, 2025
932d25d
CI trigger on push
Oct 31, 2025
c01f337
CI trigger condition update
Oct 31, 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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please change the file name to lowercase ci.yml

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

file name is still in uppercase (CI.yml). Please make it lowercase (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: SDK
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
name: SDK
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-and-slc-toolchain
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
name: ARM_GNU-and-slc-toolchain
name: arm-gnu-toolchain-and-slc

path: .
include-hidden-files: true

build-ml:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
build-ml:
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: SDK
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
name: SDK
name: sisdk-and-extensions

path: .

- name: Download ARM-GNU and SLC toolchain
uses: actions/download-artifact@v5
with:
name: ARM_GNU-and-slc-toolchain
path: .
Comment on lines +104 to +105
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
name: ARM_GNU-and-slc-toolchain
path: .
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()
16 changes: 16 additions & 0 deletions application/imu/ble_magic_wand/ble_magic_wand.slcp
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,14 @@ source:
- path: magic_wand.cc
- path: accelerometer.cc
- path: bluetooth.c
sdk_extension:
- id: aiml
version: 2.1.2
component:
- id: sl_system
- id: device_init
- id: tensorflow_lite_micro
from: aiml
- id: imu_driver
- id: iostream_recommended_stream
- id: power_manager
Expand All @@ -43,6 +47,7 @@ component:
- id: gatt_configuration
- id: bluetooth_feature_legacy_advertiser
- id: bluetooth_feature_connection
- id: bluetooth_feature_connection_role_peripheral
- id: bluetooth_feature_gatt_server
- id: bluetooth_feature_legacy_scanner
- id: bluetooth_feature_sm
Expand All @@ -55,6 +60,17 @@ component:
- id: printf
- id: simple_button
instance: [btn0]
- id: tensorflow_debug_log_iostream
from: aiml
- id: tensorflow_lite_micro_accelerated_kernels
from: aiml
condition: [device_has_mvp]
- id: tensorflow_lite_micro_optimized_kernels
from: aiml
condition: [device_has_mvp]
- id: tensorflow_lite_micro_optimized_kernels
from: aiml
condition: [device_compute_basic]
define:
- name: DEBUG_EFM
- name: TF_LITE_STATIC_MEMORY
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ include:
sdk_extension:
- id: machine_learning_applications
version: "1.0.0"
- id: aiml
version: 2.1.2
component:
- id: sl_system
- id: device_init
Expand All @@ -32,6 +34,7 @@ component:
- id: simple_led
instance: [led0, led1]
- id: iostream_recommended_stream
- id: cmsis_dsp
- id: iostream_eusart
instance: [vcom]
- id: iostream_retarget_stdio
Expand All @@ -40,8 +43,28 @@ component:
- id: app_assert
- id: app_log
- id: device_init_dpll
- id: bluetooth_stack
- id: gatt_configuration
- id: bluetooth_feature_legacy_advertiser
- id: bluetooth_feature_connection
- id: bluetooth_feature_connection_role_peripheral
- id: bluetooth_feature_gatt_server
- id: bluetooth_feature_legacy_scanner
- id: bluetooth_feature_sm
- id: bluetooth_feature_system
- id: tensorflow_lite_micro
- id: bt_fp_soc_default
from: aiml
- id: tensorflow_debug_log_iostream
from: aiml
- id: tensorflow_lite_micro_accelerated_kernels
from: aiml
condition: [device_has_mvp]
- id: tensorflow_lite_micro_optimized_kernels
from: aiml
condition: [device_has_mvp]
- id: tensorflow_lite_micro_optimized_kernels
from: aiml
condition: [device_compute_basic]
- id: vision
from: machine_learning_applications
define:
Expand Down
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