Guide

Welcome to Waveflow. This folder will have guides to use the Waveflow functionality as we develop it.


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

This site uses Just the Docs, a documentation theme for Jekyll.