Skip to content

feat: export_model.py + working AXON inference on nRF54LM20DK #4

feat: export_model.py + working AXON inference on nRF54LM20DK

feat: export_model.py + working AXON inference on nRF54LM20DK #4

Workflow file for this run

# Copyright (c) 2026 iote.ai
# SPDX-License-Identifier: Apache-2.0
#
# Three-tier CI for the AXON ExecuTorch backend.
#
# Tier 1: TOSA lowering tests — GitHub-hosted, no SDK required
# Tier 2: Compile tests — self-hosted runner with Nordic SDK
# Tier 3: Hardware tests — self-hosted runner with nRF54LM20DK
name: AXON CI
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
jobs:
# ── Tier 1: TOSA lowering tests (no SDK required) ──────────────
tosa-tests:
name: TOSA Lowering Tests
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Checkout axon-ai
uses: actions/checkout@v4
- name: Checkout executorch fork
uses: actions/checkout@v4
with:
repository: ioteai/executorch
ref: nordic-axon-backend
path: executorch
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install dependencies
run: |
pip install --upgrade pip
pip install -e executorch --no-build-isolation
pip install -r executorch/backends/nordic/requirements.txt
pip install tosa-tools pytest
- name: Run TOSA lowering tests
run: |
pytest executorch/backends/nordic/test/test_tosa_lowering.py -v
# ── Tier 2: Compile tests (requires Nordic SDK) ─────────────────
compile-tests:
name: AXON Compile Tests
runs-on: [self-hosted, linux, axon-sdk]
timeout-minutes: 30
if: github.event_name == 'push' || github.event_name == 'workflow_dispatch'
steps:
- name: Checkout axon-ai
uses: actions/checkout@v4
- name: Checkout executorch fork
uses: actions/checkout@v4
with:
repository: ioteai/executorch
ref: nordic-axon-backend
path: executorch
- name: Run compile tests
env:
SDK_EDGE_AI_PATH: ${{ secrets.SDK_EDGE_AI_PATH }}
run: |
pytest executorch/backends/nordic/test/test_axon_compile.py -v
# ── Tier 3: Hardware tests (requires nRF54LM20DK) ──────────────
hardware-tests:
name: Hardware Tests
runs-on: [self-hosted, linux, axon-hardware]
timeout-minutes: 60
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
steps:
- name: Checkout axon-ai
uses: actions/checkout@v4
- name: Checkout executorch fork
uses: actions/checkout@v4
with:
repository: ioteai/executorch
ref: nordic-axon-backend
path: executorch
- name: Build and flash hello_axon
env:
SDK_EDGE_AI_PATH: ${{ secrets.SDK_EDGE_AI_PATH }}
run: |
echo "TODO: Build firmware, flash to nRF54LM20DK, validate output"
echo "This requires west, Zephyr SDK, and physical hardware."