Row-wise FIR — free-running streaming HLS sandbox

Standalone, hand-authored Vitis HLS de-risk for the rowwise_fir free-running streaming dataflow kernel (see plans/fir_freerun_sandbox.md). No Waveflow framework code — the ground-truth kernel the later Waveflow dataflow exec_model reproduces.

Design: ap_ctrl_hs top → one #pragma HLS DATAFLOW → three persistent while(!done) processes (load / compute / store) over plain hls::stream FIFOs; compute is a streaming shift-register FIR (a T-tap tapped delay line, II=1, no row buffer); ap_uint<MEM_DW>* memory accessed only via read_array_slice / write_array_slice; an END-sentinel drains the pipeline → ap_done (per-batch restart); per-job error status on the response stream (no global halt).

What it proves (cosim, real Vitis HLS 2025.1): bit-exact vs the golden; inter-job overlap — steady 704 cyc/job, below the 1086 single-job latency, i.e. jobs are in flight simultaneously (load reads job N+1’s X while store writes job N’s Y on the full-duplex bundle), 2.08× faster than the older control-driven sequential kernel; clean restart; per-job errors without a global halt. Full findings: freerun_notes.md.

Files

| File | Role | |—|—| | fir_freerun_sandbox.hpp / .cpp | the free-running streaming FIR kernel | | fir_freerun_tb.cpp | self-contained TB (single / multi / clean-varying / error / restart; bit-exact golden) | | run_freerun.{py,tcl} | Vitis driver (csim + csynth + cosim) → results_freerun/measurements.json | | freerun_notes.md | the findings (inter-job overlap, restart, per-job errors, §2b serialization) |

Run

PYTHONPATH=../../.. ../../../pysilicon-venv/Scripts/python.exe run_freerun.py --smoke   # csim + csynth
PYTHONPATH=../../.. ../../../pysilicon-venv/Scripts/python.exe run_freerun.py --cosim   # + RTL cosim

The earlier control-driven (per-job err-return barrier) and Phase-1 (per-row DATAFLOW, the AXI full-duplex finding) sandboxes were removed once this free-running design superseded them; their findings live in the project memory + git history.


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