# Synchronous Data Flow

> Mediated Wiki article. Canonical URL: https://mediated.wiki/source/Synchronous_Data_Flow
> Markdown URL: https://mediated.wiki/source/Synchronous_Data_Flow.md
> Source: https://en.wikipedia.org/wiki/Synchronous_Data_Flow
> Source revision: 1310096913
> License: Creative Commons Attribution-ShareAlike 4.0 International (https://creativecommons.org/licenses/by-sa/4.0/)

**Synchronous Data Flow (SDF)** is a restriction on [Kahn process networks](/source/Kahn_process_networks) where the number of tokens read and written by each process is known ahead of time. In some cases, processes can be scheduled such that channels have bounded [FIFOs](/source/FIFO_(computing_and_electronics)).[1]

## Limitations

SDF does not account for asynchronous processes as their token read/write rates will vary. Practically, one can divide the network into synchronous sub-networks connected by asynchronous links. Alternatively a runtime supervisor can enforce [fairness](/source/Unbounded_nondeterminism#Fairness) and other desired properties.[1]

## Applications

SDF is useful for modeling [digital signal processing (DSP)](/source/Digital_signal_processing) routines. Models can be compiled to target parallel hardware like [FPGAs](/source/Field-programmable_gate_array), processors with DSP instruction sets like [Qualcomm's Hexagon](/source/Qualcomm_Hexagon#Digital_Signal_Processing), and other systems.

## See also

- [Kahn process networks](/source/Kahn_process_networks)
- [Petri net](/source/Petri_net)
- [Dataflow architecture](/source/Dataflow_architecture)
- [Digital signal processing § Implementation](/source/Digital_signal_processing#Implementation)

## References

1. Lee, Edward Ashford & Messerschmitt, David G. (January 1987). "Static Scheduling of Synchronous Data Flow Programs for Digital Signal Processing". *IEEE Transactions on Computers*. **C-36** (1): 24–35. [doi:10.1109/TC.1987.5009446](https://doi.org/10.1109/TC.1987.5009446). [ISSN 0018-9340](https://www.worldcat.org/issn/0018-9340). [S2CID 9981963](https://api.semanticscholar.org/CorpusID:9981963)

## External links

- [Synchronous Data Flow, Edward A. Lee and David G. Messerschmitt, 1987](https://ptolemy.eecs.berkeley.edu/publications/papers/87/synchdataflow/)
- [Embedded Software Systems course - Synchronous Dataflow](https://users.ece.utexas.edu/~bevans/courses/ee382c/lectures/08_sdf/)
- [SDF analysis and visualization tools](https://www.es.ele.tue.nl/sdf3/)
- [Kahn Process Networks and a Reactive Extension](http://www.lorentzcenter.nl/lc/web/2010/427/presentations/Basten.pdf)

---
Adapted from the Wikipedia article [Synchronous Data Flow](https://en.wikipedia.org/wiki/Synchronous_Data_Flow) by Wikipedia contributors ([contributor history](https://en.wikipedia.org/wiki/Synchronous_Data_Flow?action=history)). Available under [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/). Changes may have been made.
