From C/C++ to Dynamically Scheduled Circuits

Dynamically scheduled dataflow circuits overcome static high-level synthesis limits to enable out-of-order memory and speculative execution from C/C++ code.

High-level synthesis (HLS) tools traditionally rely on static, centralized controllers that struggle to extract parallelism from general-purpose C/C++ code, particularly when facing irregular memory access patterns or variable loop bounds. By transitioning from statically scheduled pipelines to dynamically scheduled dataflow circuits, developers can achieve significantly higher throughput and enable advanced behaviors like out-of-order memory accesses directly from high-level code.

Key Takeaways

  • Dynamically scheduled circuits resolve standard HLS limitations by using local handshake signals instead of a centralized, static controller.
  • Dataflow circuits enable out-of-order memory accesses and speculative execution, significantly increasing performance for code with irregular dependencies.
  • A Petri-net-based mathematical model automatically optimizes buffer placement and sizing to maximize pipeline throughput and area efficiency.
  • The open-source Dynamatic compiler systematically translates C/C++ code into high-performance, dynamically scheduled dataflow circuits.

Workshop Format & Takeaways

The session detailed the architectural differences between traditional static HLS and dynamic dataflow scheduling, walking through practical limitations in standard pipelines. When standard HLS encounters variable loop bounds or irregular memory access patterns (like those found in sparse matrix-vector multiplication or histogram generation), it defaults to conservative, sequential scheduling.

To overcome this, dynamically scheduled circuits implement decentralized control, utilizing handshake signals between operators. This structure acts similarly to an out-of-order superscalar processor, featuring load-store queues to manage read-after-write dependencies dynamically and safe commit/save mechanisms for speculative execution.

As noted in the session, incorporating these advanced dynamic mechanisms requires additional logic overhead—specifically for handshaking and distributed memory interfaces—but formal verification methods are currently in development to automatically prune redundant dataflow logic and minimize resource usage up to 50% without compromising correctness.

What This Means for Digital Hardware Design

Bringing out-of-order execution and speculative evaluation to high-level synthesis is a major step toward making hardware acceleration accessible to non-hardware experts. By automating the extraction of parallelism from general-purpose code, standard software engineers and machine learning practitioners can generate highly efficient digital circuits without mastering low-level hardware description languages like VHDL or Verilog.

Resources

About the Speakers

Lana Josipović

Lana Josipović

Assistant Professor at ETH Zurich, PhD from EPFL. Researches reconfigurable computing, HLS for dynamically scheduled circuits. Developer of Dynamatic.
Fabrizio Ottati

Fabrizio Ottati

AI/ML Processor Engineer at NXP, PhD from Politecnico di Torino. Focuses on event cameras, digital hardware, and deep learning. Maintains Tonic & Expelliarmus.
Social share preview for From C/C++ to Dynamically Scheduled Circuits

Upcoming Workshops

No workshops are currently scheduled. Check back soon for new events!

Are you an expert in a neuromorphic topic? We invite you to share your knowledge with our community.

Inspired? Share your work.

Share your expertise with the community by speaking at a workshop, student talk, or hacking hour. It’s a great way to get feedback and help others learn.

Related Workshops

PEPITA - A Forward-Forward Alternative to Backpropagation

PEPITA - A Forward-Forward Alternative to Backpropagation

PEPITA is a biologically plausible learning algorithm that replaces backpropagation with a dual forward-pass mechanism utilizing error-modulated network inputs.

Hands-On with snnTorch

Hands-On with snnTorch

snnTorch applies surrogate gradients to overcome the non-differentiability of spikes, enabling SNN training and quantization using standard PyTorch pipelines.

Programming Scalable Neuromorphic Algorithms with Fugu

Programming Scalable Neuromorphic Algorithms with Fugu

Discover how the Fugu framework provides a hardware-agnostic intermediate representation for programming scalable, non-deep-learning neuromorphic algorithms.