How michaela1224/sda_code works
SDA_code is an HLS implementation of low-bit stable-diffusion acceleration for edge FPGAs. Its user-facing workflow is a host-driven layer computation: provide activations, weights, bias/scale data and layer parameters, then receive results in DDR. The code supports convolution/matrix-multiply paths and post-processing such as normalization, softmax, GELU and shortcut handling. The sampled top-level excerpt confirms activation extraction and stream-oriented processing, but omits much of the wiring; uncertain stage-to-stage links are therefore left out.
Main entry points: block_top.cpp Layer compute top · block_top.h Compute interface · sa_tools.h Systolic array · load_param.h Parameter loading
Components 18
Accelerator interface
- Layer compute top
block_top.cpp - Compute interface
block_top.h
Low-bit compute
- Activation extraction
block_top.cpp - Systolic array
sa_tools.h - Packed low-bit MAC
sa_tools.h - Convolution path
block_top.cpp - Matrix multiply path
block_top.cpp
Post-processing
- Normalization
block_top.cpp - Softmax
block_top.cpp - GELU / SiLU
block_top.cpp - Shortcut handling
block_top.cpp - Quantization paths
block_top.cpp
Data and stream support
- Parameter loading
load_param.h - Layer state buffers
param_sa.h - Stream routing
stream_tools.h - Hardware parameters
config.h
Other components
- Host / caller
- DDR buffers
Connections 18
- Host / caller → Compute interface: invokes
- Compute interface → Layer compute top: declares entry
- DDR buffers → Layer compute top: provides buffers
- Layer compute top → DDR buffers: writes results
- Layer compute top → Activation extraction: calls extraction
- Layer compute top → Convolution path: selects path
- Layer compute top → Matrix multiply path: selects path
- Layer compute top → Normalization: routes processing
- Layer compute top → Softmax: routes processing
- Layer compute top → GELU / SiLU: routes processing
- Layer compute top → Shortcut handling: routes shortcut
- Layer compute top → Quantization paths: routes processing
- Layer compute top → Parameter loading: loads parameters
- Activation extraction → Systolic array: streams activations
- Systolic array → Packed low-bit MAC: uses packed MAC
- Parameter loading → Layer state buffers: fills buffers
- Stream routing → Layer compute top: routes streams
- Hardware parameters → Layer compute top: sets dimensions