Compiler + runtime / M6

From ONNX to exact command results.

01 / ONNX path

How does the model become commands?

The compiler validates connected Conv → Sigmoid → Mul patterns for nodes 0–5 of the pinned opset-13 graph. It extracts constants, uses recorded activation scales and SiLU lookup tables, packs INT8 weights, derives INT32 bias records, and writes a deterministic experimental .hxb package. Its reusable scheduler handles boundary halos, channel chunks, output groups, and both retained intermediates.

Pin the input

The workload guide records model hash, export environment, graph audit, and calibration artifacts.

Load and execute

The Python runtime validates hashes and relocations, binds an exact-size input, submits commands, retains both tensors, and returns completion or a structured fault.

02 / Simulator execution

What runs today?

One package submits 16,245 candidate ABI commands through the functional simulator. Its 1,999,320 DMA bytes and FIFO refill counts describe software command behavior, not cycles, latency, or FPGA throughput. The first block produces a 16×160×160 INT8 tensor; the second produces a 32×80×80 tensor.

Data movement

DMA and boundary fills bring input patches and constants into modeled local storage; output DMA retains each layer result.

Integer arithmetic

CONV_I8 accumulates INT8 products into INT32; EPILOGUE applies bias, requantization, and the documented SiLU lookup.

03 / Boundary

What is supported?

The package schema and Python runtime are experimental research interfaces.

Implemented and tested

  • First two connected Conv-SiLU blocks
  • Boundary halos and input-channel chunks
  • Deterministic package and strict loader
  • Simulator completion, reset, and error handling
  • Exact comparisons at both retained boundaries

Unfinished

  • C2f split, concat, and residual lowering
  • Remaining detector graph and host tail
  • Stable package and C runtime interfaces
  • Tensor-accelerator RTL and FPGA driver
  • End-to-end detector execution through HASLAB commands
04 / Next work

The first C2f block is next.

The development plan calls for 1×1 convolution, split/view, concat liveness, and residual-scale handling. M6 remains active until whole-model lowering, the declared host tail, and layerwise comparisons pass.