feat: export_model.py + working AXON inference on nRF54LM20DK #4
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # 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." |