Config reference (version 2)
Every block and field a helx run config may contain. Blocks are strict: an unknown key is an error. Keys starting with x- are ignored extension keys. Cross-field rules (exactly one model, one memory choice, engine and backend pairing) live in the schema’s validators and are reported by helx validate config.
Generated by scripts/render_references.py from the models; do not edit by hand.
RawPipelineConfig
Section titled “RawPipelineConfig”A version: 2 config: one run block, defaults, and exactly one model.
| Field | Type | Default | Meaning |
|---|---|---|---|
version |
one of 2 |
required | Always 2. |
run |
block RawRunConfig |
required | Where the bundle goes and which platform, mode and target the run is attributed to. |
defaults |
block RawDefaultsConfig |
empty block | Settings every model inherits. |
models |
list[block RawModelConfig] |
required | Exactly one model. |
RawRunConfig
Section titled “RawRunConfig”run: where the bundle goes and which platform, mode and target the experiment is attributed to.
| Field | Type | Default | Meaning |
|---|---|---|---|
results_dir |
str | required | Where the bundle is written, relative to the config. |
workspace_dir |
str or null | none | Working directory for the run; a temporary one when omitted. |
keep_workspace |
bool | false |
Keep the workspace after the bundle is written. |
keep_debug_artifacts |
bool | false |
Keep Vela’s debug database and other debug outputs. |
enable_vela |
bool | true |
Compile with Vela; false hands the original model to the runtime. |
non_vela_tensor_arena_size |
int or null | none | Tensor arena size in bytes when Vela is bypassed. |
energy_model |
str or null | none | Energy model YAML to use instead of the one derived from the platform, relative to the config. |
platform |
str or null | none | A shipped platform name (helx platform list) or a path to a platform YAML. |
platform_mode |
str or null | none | Operating mode of the platform to run in, e.g. ULP or HP. |
platform_overrides |
dict[str, Any] or null | none | Timing overrides for this run: memories. |
contention |
dict[str, Any] or null | none | Emulated application traffic: |
target |
str or null | none | Which realization of the SoC a measurement is attributed to: a packaged helia-npu target id or a YAML path. |
RawDefaultsConfig
Section titled “RawDefaultsConfig”defaults: the vela and fvp blocks a model inherits unless it overrides them.
| Field | Type | Default | Meaning |
|---|---|---|---|
vela |
block RawVelaConfig |
empty block | Vela settings every model inherits unless it overrides them. |
fvp |
block RawFvpConfig |
empty block | FVP settings every model inherits unless it overrides them. |
RawVelaConfig
Section titled “RawVelaConfig”vela: knobs, at the defaults level or per model.
| Field | Type | Default | Meaning |
|---|---|---|---|
arena_cache_size |
int or null | none | Bytes of port 0 memory Vela may use for its weight cache, and for the arena when the arena is on port 0 (Vela’s –arena-cache-size). |
RawFvpConfig
Section titled “RawFvpConfig”fvp: the local runner: whether to build and run, on which subsystem, with which engine and PMU program.
| Field | Type | Default | Meaning |
|---|---|---|---|
enabled |
bool or null | none | Build the local runner; with run, execute it on the FVP. |
subsystem |
one of corstone_300, corstone_320 or null |
none | Corstone FVP subsystem, corstone_300 or corstone_320. Unset, helx runs the FVP that simulates the platform’s NPU: corstone_300 for an Ethos-U55 or U65, corstone_320 for an Ethos-U85. |
build_type |
one of Debug, Release, RelWithDebInfo, MinSizeRel or null |
none | Runner build type: Debug or Release. |
target |
str or null | none | CMake build target of the runner; defaults to helx_inference_runner. |
runtime_engine |
one of tflite_micro, helia_rt, helia_aot or null |
none | Inference runtime linked into the runner: litert (tflite_micro), heliaRT or heliaAOT. |
helia_rt_backend |
one of helia or null |
none | heliaRT uses heliaCORE only (helia-core, with helia/ns-cmsis-nn aliases); defaults to heliaCORE. |
tensor_io |
block TensorIOPolicy or null |
none | Fixed-shape input bytes, retained outputs and optional numerical reference comparisons. |
acquisition |
block AcquisitionPolicy or null |
none | Build-time state, warmup and measured-count policy for all three runtimes; explicit policies exclude tracing. |
pmu_profile |
one of default, ext_stall, default_ext_rd_stall, dv_align, port_stall, sram_stall, sram_transactions or null |
none | Which PMU counter set the runner reports: default, ext_stall, default_ext_rd_stall, dv_align, port_stall or sram_stall or sram_transactions (aggregate SRAM accepted transactions plus energy beats). |
cmake_args |
list[str] | empty | Extra CMake arguments for the runner build. |
build_args |
list[str] | empty | Extra arguments appended to cmake –build, overriding its generated defaults. Main and fenced per-segment runner builds default to up to four parallel jobs, capped at the reported CPU count (one if unknown). Set [“–parallel”, “8”] to choose another runner limit. LiteRT’s nested dependency and library builds use a separate fixed four-job limit. |
run |
bool or null | none | Execute the runner on the FVP after building it. |
skip_fvp_download |
bool or null | none | Do not download the FVP; fail if it is missing. |
simlimit |
int or null | none | Simulated seconds before the FVP gives up. |
host_timeout_seconds |
int or null | none | Wall-clock seconds the host waits for the FVP. |
fvp_args |
list[str] | empty | Extra command-line arguments for the FVP. |
bus_trace |
block RawBusTraceConfig |
empty block | Record and summarise the NPU’s bus traffic during the run (Corstone-320 only). |
helia_aot |
dict[str, Any] | empty | heliaAOT configuration passed through untouched; its shape belongs to helia-aot. |
TensorIOPolicy
Section titled “TensorIOPolicy”Opt-in input binding and output retention for fixed-shape runner tensors.
| Field | Type | Default | Meaning |
|---|---|---|---|
inputs |
tuple or null | none | All input tensors, refilled before every invoke; absent explicitly selects zero bytes. |
references |
tuple | () |
One reference set per measured invocation, or empty for capture without comparison. |
comparison |
ComparisonPolicy | ComparisonPolicy(default=Tolerance(absolute=0.0, relative=0.0), per_tensor=(), nan=<NaNPolicy.NEVER_MATCH: 'never_match'>) |
Stored-value tolerances and NaN policy; same-sign infinities match. |
TensorLiteral
Section titled “TensorLiteral”One tensor’s specification and exact little-endian bytes, independent of external file paths.
| Field | Type | Default | Meaning |
|---|---|---|---|
spec |
TensorSpec | required | Model index, name, storage dtype and fixed dimensions. |
data_hex |
str | required | Lowercase hexadecimal bytes, without a prefix or whitespace. |
TensorReference
Section titled “TensorReference”One measured invocation’s reference outputs and their declared source.
| Field | Type | Default | Meaning |
|---|---|---|---|
tensors |
tuple | required | All reference output tensors in model-index order. |
origin |
one of files, host_litert, producer |
required | Caller-declared source of the reference values. |
description |
str | required | Model, tool/version, dataset or other identifying context for the reference. |
AcquisitionPolicy
Section titled “AcquisitionPolicy”Build-time lifecycle controls; None warmup preserves the runner’s automatic choice.
| Field | Type | Default | Meaning |
|---|---|---|---|
state |
one of carry, single |
carry |
carry retains variables across invokes; single permits one invoke on the initialized instance. |
warmup_invokes |
int or null | none | Uncounted warmup invokes. Unset: carry warms up once when CALL_ONCE is present; single uses zero. |
measured_invokes |
int | 1 |
Measured invokes on one initialized instance; single requires one. |
RawBusTraceConfig
Section titled “RawBusTraceConfig”fvp.bus_trace: record every NPU bus transaction on the FVP and summarise it in the bundle (Corstone-320).
| Field | Type | Default | Meaning |
|---|---|---|---|
enabled |
bool or null | none | Trace the NPU’s AXI masters during the run; the bundle gets a per-interface timeline, transfer sizes, a Perfetto trace and checks against the PMU. With per_layer fencing on, the fenced run is traced too, and each NPU invocation gets its own traffic (per_segment.bus_trace_csv), checked against its PMU counts. Off by default: the FVP writes a raw trace of about 85 bytes per transaction (tens of MB for a model of a few million cycles) while it runs. |
keep_raw |
bool or null | none | Keep the FVP’s raw traces in the bundle (artifacts/bus_trace.txt, and artifacts/fenced_bus_trace.txt for the fenced run) instead of deleting them once summarised. |
RawModelConfig
Section titled “RawModelConfig”One entry of models:: the model, its memory choice, and per-model overrides of the defaults.
| Field | Type | Default | Meaning |
|---|---|---|---|
name |
str or null | none | Model name; defaults to the source file’s stem. |
source |
str or null | none | The model: a path relative to the config, an http or https URL, or an s3 URI. |
memory_modes |
list[str] or null | none | One of Vela’s mode names (Sram_Only, Shared_Sram, Dedicated_Sram): an alias for the placement it means on the platform. |
memory_placement |
list[Any] or null | none | One entry naming the physical memory for const (weights), arena (activations) and cache (Vela’s weight cache). |
vela |
block RawVelaConfig |
empty block | Vela settings for this model, over the defaults. |
fvp |
block RawFvpConfig |
empty block | FVP settings for this model, over the defaults. |
per_layer |
block RawPerLayerConfig |
empty block | Where to cut the model into separately measured segments. |
RawPerLayerConfig
Section titled “RawPerLayerConfig”per_layer: where to cut the model into separately measured segments.
| Field | Type | Default | Meaning |
|---|---|---|---|
mode |
one of off, per_op, per_group, explicit |
off |
off, per_op (a fence after every operator) or per_group (a fence every group_size operators). |
group_size |
int | 1 |
Operators per segment for per_group. |
boundaries |
list[int] or null | none | Explicit operator indices to cut at, instead of a regular grouping. |