Vectorization — Python model
The Python model is how Waveflow holds and computes array values: NumPy-backed, loop-free, and
bit-exact with the hardware it generates. These pages cover the per-element-type numerics — the
integer, float, fixed-point, and complex
vectorized models, including the two paths (the .val NumPy escape hatch vs. the type-preserving
operators) and the result-format rules.
For the synthesizable side — packing these arrays into Vitis C++ words, the lane loop, and the storage modes — see HLS.
Table of contents
- Numerical operations - The numerical model shared by every vectorized element type — defining a vector, and the two compute paths: the raw .val NumPy escape hatch, and the type-preserving operators (a*b + c then an explicit quantize). Includes when to use which.
- Integer vectorization - The integer vectorized model — IntField arrays as NumPy integer arrays, stored-integer semantics, and the single-64-bit dtype with a fail-fast guard above it.
- Float vectorization - The float vectorized model — FloatField arrays as native NumPy float arrays, and when float fits versus fixed-point or integer.
- Fixed-point vectorization - The fixed-point vectorized model — FixedField arrays, the two paths (.val NumPy escape hatch vs type-preserving operators), and the ap_fixed result-format growth.
- Complex vectorization - The complex vectorized model — ComplexField arrays, complex arithmetic (cmult/cadd/conj), and the NumPy-vs-hardware complex-multiply edge.