CMSIS-Pack Integration
heliaRT can be packaged as a source-only CMSIS-Pack for teams that use Keil MDK, CMSIS-Toolbox, CMSIS-Pack Manager, or Arm ecosystem IDEs. The pack is generated from the same CMake source manifest used by the source, Zephyr, and NSX builds.
Current scope
The repository builds and validates a local source pack. Checked-in csolution examples are still tracked by #124; pack-index publication is out of scope there — see below.
Local Pack vs Published Distribution
heliaRT's CMSIS-Pack is generated and validated, not distributed. There is no
published pack you can cpackget add by name — you build it from a checkout of
this repository, as described below.
| Aspect | Status |
|---|---|
| Pack generated from the CMake source manifest | Yes — tools/cmsis_pack/build_pack.py |
| Pack built and validated on every relevant change | Yes — the Build CMSIS-Pack from SSoT manifest job in .github/workflows/smoke_cmake.yml |
| Pack available as a CI build artifact | Yes — uploaded as helia-rt-cmsis-pack |
| Pack attached to GitHub Releases | No |
Pack published to a public pack index (.pidx) or the Keil index |
No |
What CI checks on each run, in order: it builds the pack, runs
packchk --disable-validation against the staged PDSC, asserts the archive's
size and structure and that every source file referenced by the PDSC resolves
inside the archive, asserts the three component variants (Reference,
CMSIS-NN, HELIA) are present, and runs the repository PDSC contract check
(tools/cmsis_pack/check_pdsc.py) for pack identity and the ns-cmsis-nn pin.
Publishing to the public Keil pack index and hosting a .pidx pack index are
explicitly out of scope for #124,
which tracks the remaining consumer-validation work. Index publication is not
currently tracked — it has not been declined, but no issue or milestone plans
it. Build the pack locally and expect to keep doing so.
What this means for you
Pin the repository (tag or commit) rather than a pack version, build the
pack as part of your own setup or CI step, and install it with
cpackget add from the file you built. Treat the generated pack as
reproducible output of a known revision, not as a released artifact with an
independent lifecycle.
Build A Local Pack
Build the pack from a checkout:
The output follows CMSIS-Pack naming conventions:
The pack version comes from the release-please-managed HELIA_RT_VERSION macro in tensorflow/lite/micro/helia_rt_version.h.
Validate The Pack
The CI pack job runs the repository's PDSC contract checker and packchk from CMSIS-Toolbox. To reproduce the same checks locally, install CMSIS-Toolbox, then run:
python3 tools/cmsis_pack/build_pack.py --output dist --keep-stage
PACK=$(ls dist/Ambiq.helia-rt.*.pack | head -1)
STAGE="${PACK%.pack}.stage"
python3 tools/cmsis_pack/check_pdsc.py "${PACK}"
packchk --disable-validation "${STAGE}/Ambiq.helia-rt.pdsc"
packchk --disable-validation keeps the semantic pack checks enabled while avoiding a CMSIS-Toolbox 2.13.0 XSD-validation crash seen on this generated PDSC. The workflow still parses and validates the archive structure and PDSC contract separately.
Install With cpackget
After building the pack, add it to a local CMSIS-Pack installation:
Use the exact file name generated in dist/. A consumer project can then select one of the pack's component variants.
Component Variants
The generated pack exposes these source-build variants:
| Variant | Backend | Notes |
|---|---|---|
Reference |
Portable TFLM kernels | No external NN library dependency. |
CMSIS-NN |
Arm CMSIS-NN kernels | Uses the open CMSIS-NN backend source set. |
HELIA |
Ambiq HELIA kernels | Requires the Ambiq ns-cmsis-nn / heliaCORE pack dependency. |
Current Recommendation
Use CMSIS-Pack when your application is already built around CMSIS-Toolbox or Keil tooling. For Zephyr or neuralSPOT projects, the native integration paths remain more direct:
| Path | Best for |
|---|---|
| Zephyr module | Product integration, Kconfig backend selection, source or prebuilt bundles. |
| neuralSPOT | Fast model profiling and deployment on Ambiq evaluation boards. |
| Source build | Custom build systems, direct static library linkage, and source-level debugging. |
Compatibility Goals
The CMSIS-Pack flow should not change the application-facing runtime model. Teams should still use the familiar .tflite model format, MicroInterpreter lifecycle, resolver registration pattern, and static tensor arena strategy.
Next Steps
- Zephyr setup — current recommended product integration path
- Toolchains — compare GCC, Arm Compiler 6, and ATfE
- SPEED vs SIZE — understand HELIA source-build kernel profiles