Skip to content

hpx validate#

Run the hardware-in-the-loop validation suite (MLPerf Tiny models).

Synopsis#

hpx validate [--models IDS] [--engines LIST] [--boards LIST]
             [--toolchains LIST] [--interfaces LIST] [--memories LIST]
             [--power off|on|both] [--suite NAME] [--repeat N]
             [--jlink-serials BOARD=SERIAL,...] [--power-serials BOARD=SERIAL,...]
             [--power-gpios BOARD=GATE:STATE:GO,...] [--timeout SECONDS]
             [--output-dir DIR] [--junit-xml FILE] [-k EXPR] [--list]

Description#

Runs canonical MLPerf Tiny models end-to-end against a real EVB and J-Link probe (and optionally a Joulescope for power runs). Each selected case is a full profile run — build, flash, capture, report — with pass/fail criteria, making this the recommended way to validate a board setup or gate hardware changes in CI.

See Validating a Board Setup and Hardware CI for workflow-oriented guidance.

Options#

Flag Description
--models Comma-separated model IDs (default: all). See hpx validate --list.
--engines Comma-separated engines: helia-rt, helia-aot, tflm (aliases rt, aot). Default: all. TFLM validation uses upstream CMSIS-NN.
--boards Comma-separated board IDs (default: apollo510_evb).
--toolchains Comma-separated toolchains: gcc, armclang/acfe, atfe (default: board defaults).
--interfaces, --transports Comma-separated transports: rtt, uart, swo, usb_cdc (default: board defaults).
--memories Comma-separated placement presets: auto, tcm, sram, mram, psram (default: board defaults).
--power Power matrix: off (default), on (only Joulescope runs), or both.
--suite Preset suite: smoke, models-rt, models-aot, or complete. Explicit axis flags always win.
--jlink-serials board=serial entries for multi-board validation.
--power-serials board=Joulescope-serial entries for powered multi-board validation; required when multiple Joulescopes are visible.
--power-gpios board=gate:state:go entries for boards without registered power-sync wiring (for example, apollo330mP_evb=5:6:7).
--repeat Repeat each selected case N times for stress testing (default: 1).
--timeout Per-case timeout in seconds (default: 900).
--output-dir Per-case artifacts + summary report location (default: ./results/validation).
--junit-xml Emit a JUnit-XML report (for CI consumption).
-k Pytest-style keyword expression to filter cases (e.g. kws-aot).
--list List matching cases and exit without running.

Preset suites#

  • smoke — quick single-case check: KWS, heliaRT, gcc, RTT, auto memory.
  • models-rt — RT sweep across all MLPerf Tiny models on Apollo510 + Apollo330mP with gcc + ATfE.
  • models-aot — AOT sweep across all MLPerf Tiny models on Apollo510 + Apollo330mP with gcc + ATfE.
  • complete — combined RT + AOT + TFLM/CMSIS-NN sweep across all MLPerf Tiny models on Apollo510 + Apollo330mP with gcc + ATfE.

Examples#

hpx validate                          # default reliability matrix, power off
hpx validate --list                   # preview what would run
hpx validate --models kws,ic          # subset by model
hpx validate --suite smoke            # quick single-case sanity check
hpx validate --suite complete         # full RT + AOT + TFLM/CMSIS-NN hardware sweep
hpx validate -k kws-aot               # pytest-style keyword filter
hpx validate --boards apollo3p_evb --repeat 2