Dynamatic + XLS: integrating dynamic and static HLS
Description #
My master’s thesis, currently in progress at ETH Zürich with the Digital Systems and Design Automation group.
Dynamatic compiles software-like descriptions into dynamically scheduled circuits: dataflow units wired together over handshake interfaces that decide when to fire at runtime. That lets a circuit exploit parallelism a static schedule has to give up on, because classical HLS has to budget for the longest possible execution path up front.
Dynamism isn’t free everywhere, though. A loop with a mostly linear body and no inter-loop dependencies can be scheduled statically at an initiation interval of 1 — wrapping it in ready-valid handshaking buys nothing and costs timing and area. Hybrid circuits, with statically scheduled islands embedded in a dynamic one, are known to open up new Pareto frontiers, but the prior work largely leans on closed-source commercial HLS, which makes a genuinely end-to-end hybrid flow hard to build.
Google’s XLS is the piece that makes this tractable: it’s open source, it generates the kind of statically scheduled dataflow units Dynamatic needs, and it exposes an MLIR interface. The thesis builds the integration:
- A static region in the IR — a new MLIR operation in Dynamatic holding a nested region that describes a statically scheduled unit, with XLS synthesising that region down to RTL.
- Making the dynamic circuit aware of it — exposing the timing characteristics of XLS-generated units (latency, initiation interval, and above all the combinational delays at their interfaces) to Dynamatic’s buffer placement, so the surrounding dynamic circuit is buffered correctly.
- Memory accesses inside static regions, which the handshake-based memory interfaces don’t accommodate for free.
- Evaluation against purely dynamic Dynamatic output, against a commercial static HLS flow, and against the improvements reported in the literature.
If time allows, two extensions: automatically identifying which regions benefit from static scheduling, and supporting more complex static regions, such as internal loops built on XLS’s state-feedback mechanism.
The work is being upstreamed into Dynamatic as a series of pull requests.