A conversion is described by the configuration model below. Write settings in a YAML file passed to --path; scalar paths also have CLI flags such as --model.path. Structured lists of nested models, such as operator and tensor rules, belong in YAML. Explicit CLI values override matching YAML settings; see the configuration guide for precedence and validation.
The tables are generated from the configuration model. Use the configuration guide for complete examples, precedence and rule matching.
Output path for the generated module. Use a directory for an unpacked module, a ‘.zip’ suffix for a generic zip archive, or a ‘.pack’ suffix for an Open-CMSIS-Pack archive (requires module.type=cmsis_pack).
module.type
ModuleType
neuralspot
one of neuralspot, zephyr, cmake, nsx, cmsis_pack
--module.type
Module type
module.name
str
helia_aot_nn
pattern ^[A-Za-z_][A-Za-z0-9_-]*$
--module.name
Module name
module.prefix
str
aot
pattern ^[A-Za-z_][A-Za-z0-9_]*$
--module.prefix
Prefix added to sources for unique namespace
module.schedule
ScheduleMode
table
one of table, static
--module.schedule
Operator dispatch shape in the generated model: ‘table’ (default) keeps the runtime function-pointer table and per-node callback seam; ‘static’ emits straight-line direct calls (no table, no loop, no indirect dispatch).
If true, the module will use internal, statically allocated arenas. If false, the caller must bind every region via <prefix>_bind_arena() / <prefix>_bind_arenas() before model_init.
Deprecated — retained for backwards compatibility but no longer changes generated runtime behavior. model_init always invokes hydrate_constants between context_init and the operator init loop. Override the weak hydrate_constants symbol for custom hydration mechanisms (DMA / async pre-stage / model swap).
If true, write a machine-readable residency report (<prefix>_residency.json) alongside the emitted module. Mirrors the verbose log summary as JSON for tooling that needs to introspect arena layout, staged-vs-cold residency, and per-tensor placement post-planning.
one of mram, sram, dtcm, itcm, dram, psram; required
configuration file only
Memory type (e.g., DTCM, ITCM)
memory.constraints[].max_size
int
—
—
configuration file only
Maximum size in bytes, or None for no limit
memory.constraints[].arena_alignment
int
—
—
configuration file only
Optional per-arena alignment floor in bytes. When set, applied to both the arena base symbol and every slot. When None, only the 16-byte implementation floor applies to the base; per-slot alignment is driven by platform / dtype / tensor hints.
Allow auto knob values that change numerics relative to the knob’s default (e.g. fast accumulation)
optimization.accumulation
Accumulation
auto
one of auto, precise, fast
--optimization.accumulation
FP16 accumulation: precise (standard layout, the library’s default accumulation), fast (packed FP16 weights, one FP16 chain per output) or auto
optimization.kernel
KernelChoice
auto
one of auto, specialized, generic
--optimization.kernel
Int8 convolution and depthwise entry: specialized (shape-specialized ns-cmsis-nn direct entries where they apply), generic (the general entries, fewer kernels linked) or auto; both are exact
optimization.budget
dict[str, float]
—
—
configuration file only
Reserved: constraints for the optimizer, e.g. accuracy_drop or tcm_bytes
optimization.plan
Path
—
—
configuration file only
Reserved: path to a resolved optimization plan to reproduce