Guide
Welcome to Waveflow. This folder will have guides to use the Waveflow functionality as we develop it.
- Installation
- Data Schemas
- Vectorization
- Memory Modeling
- Timing Models
- Timing Analysis Tools
- Hardware Interfaces
- Build System
- AI Tooling
Table of contents
- Installation
- Data Schemas
- Vectorization
- Simulation - Run a whole system in Python: a SimPy discrete-event simulation that wires components through Interface objects and drives the pre_sim / run_proc / post_sim lifecycle — the milestone of validating a design before any C++.
- Interfaces - The Python transactional interface model — how components communicate over streams, memory-mapped ports, register maps, and schema/array transfers in the SimPy simulation.
- Hardware Components - The Python HwComponent model: a synthesizable hardware module defined by its interface endpoints, wired to other components by binding endpoints to interfaces, with behavior expressed as the methods on those endpoints. Covers defining a component, the endpoint methods, and HwParam / HwConst / HwTestbench (its lifecycle lives in Simulation).
- Component Code Generation - How a Python HwComponent is generated into Vitis-ready C++: the HLS realization of a component (top function, endpoint ports, execution model), the HwStmt extractor over the synthesizable subset, the emitted file structure, and HwParam parameterization. Hand-written kernel bodies are Custom Hooks.
- Custom Hooks - The hand-written codegen path: when the HwStmt extractor can't lower a datapath, you attach a hand-written Vitis C++ kernel to a component method with @synthesizable. Covers the boundary with auto-generated codegen, the hook mechanism, and a decision guide over the three hook patterns (block / stream / complex).
- Build System
- Memory Modeling
- Timing Analysis Tools
- Timing Models - How an HwComponent specifies its timing model — not just what it computes, but how long that takes and what event it pends on to complete. Teaches three processing flows as a continuum of load/compute/store overlap: block, double-buffered, and streaming.
- Developers
- Calibration - The waveflow.calib package: a small, reusable corpus + model layer for fitting physically-reasonable timing and resource models from synth/cosim measurements. A CalibDataFrame holds one row per measurement; per-target models (LinCalibModel, InterpCalibModel) fit, predict, score, and report held-out error — deliberately a DataFrame wrapper plus sklearn/interp models, not an ML framework.
- AI Tooling