Skip to content
heliaEstimator
Reference
HELIA HUB

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.

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.

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..{read_latency_cycles, write_latency_cycles, max_outstanding, max_outstanding_writes, burst_length, ports_used, bandwidth, rate_window_cycles}, and sram_port_hash (the address mask that picks the NPU’s SRAM port, e.g. 0x80; U85 FVP runs only).
contention dict[str, Any] or null none Emulated application traffic: .{share_taken (0 to below 1, the fraction of the memory’s bandwidth other traffic uses), extra_latency_ns (queueing latency added), rate_window_cycles (timing-adapter window, at least 256; default: the run’s own)}, and apply_to_vela (default false: only the FVP sees it; true: Vela compiles for it too).
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.

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.

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).

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.

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.

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.

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.

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.

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.

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.

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.