An Intermediate Representation for Composable Typed Streaming Dataflow Designs (2308.13436v3)
Abstract: Tydi is an open specification for streaming dataflow designs in digital circuits, allowing designers to express how composite and variable-length data structures are transferred over streams using clear, data-centric types. These data types are extensively used in a many application domains, such as big data and SQL applications. This way, Tydi provides a higher-level method for defining interfaces between components as opposed to existing bit and byte-based interface specifications. In this paper, we introduce an open-source intermediate representation (IR) which allows for the declaration of Tydi's types. The IR enables creating and connecting components with Tydi Streams as interfaces, called Streamlets. It also lets backends for synthesis and simulation retain high-level information, such as documentation. Types and Streamlets can be easily reused between multiple projects, and Tydi's streams and type hierarchy can be used to define interface contracts, which aid collaboration when designing a larger system. The IR codifies the rules and properties established in the Tydi specification and serves to complement computation-oriented hardware design tools with a data-centric view on interfaces. To support different backends and targets, the IR is focused on expressing interfaces, and complements behavior described by hardware description languages and other IRs. Additionally, a testing syntax for the verification of inputs and outputs against abstract streams of data, and for substituting interdependent components, is presented which allows for the specification of behavior. To demonstrate this IR, we have created a grammar, parser, and query system, and paired these with a backend targeting VHDL.
- Advanced Micro Devices, Inc. 2022a. Intellectual Property. https://www.xilinx.com/products/intellectual-property.html
- Advanced Micro Devices, Inc. 2022b. Interfaces for Vivado IP Flow • Vitis High-Level Synthesis User Guide (UG1399) • Reader • Documentation Portal. https://docs.xilinx.com/r/en-US/ug1399-vitis-hls/Interfaces-for-Vivado-IP-Flow
- OctoRay: Framework for Scalable FPGA Cluster Acceleration of Python Big Data Applications. In 2023 IEEE/ACM International Workshop on Heterogeneous High-performance Reconfigurable Computing (H2RC).
- Arm Limited. 2010. AMBA 4 AXI4-Stream Protocol Specification. https://developer.arm.com/documentation/ihi0051/a/Introduction/About-the-AXI4-Stream-protocol
- Arm Limited. 2021. An Introduction to AMBA AXI. https://developer.arm.com/documentation/102202/0200/
- Increasing Design Productivity through Core Reuse, Meta-data Encapsulation, and Synthesis. In 2010 International Conference on Field Programmable Logic and Applications. 538–543. https://doi.org/10.1109/FPL.2010.106
- Lime: A Java-compatible and Synthesizable Language for Heterogeneous Architectures. In Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications (OOPSLA ’10). Association for Computing Machinery, New York, NY, USA, 89–108. https://doi.org/10.1145/1869459.1869469
- Chisel: Constructing Hardware in a Scala Embedded Language. In DAC Design Automation Conference 2012. 1212–1221. https://doi.org/10.1145/2228360.2228584
- Joshua Barretto. 2022. Chumsky. https://github.com/zesterer/chumsky
- A Survey on the Evolution of Stream Processing Systems. https://doi.org/10.48550/arXiv.2008.00842 arXiv:2008.00842 [cs]
- FPGA Acceleration for Big Data Analytics: Challenges and Opportunities. IEEE Circuits and Systems Magazine 21, 2 (2021), 30–47. https://doi.org/10.1109/MCAS.2021.3071608
- Optimus: Efficient Realization of Streaming Applications on FPGAs. In Proceedings of the 2008 International Conference on Compilers, Architectures and Synthesis for Embedded Systems (CASES ’08). Association for Computing Machinery, New York, NY, USA, 41–50. https://doi.org/10.1145/1450095.1450105
- Intel Corporation. 2021. 1. Introduction to Intel® FPGA IP Cores. https://www.intel.com/content/www/us/en/docs/programmable/683102/21-3/introduction-to-cores.html
- Intel Corporation. 2022. 5. Avalon® Streaming Interfaces. https://www.intel.com/content/www/us/en/docs/programmable/683091/20-1/streaming-interfaces.html
- A Survey of Distributed Data Stream Processing Frameworks. IEEE Access 7 (2019), 154300–154316. https://doi.org/10.1109/ACCESS.2019.2946884
- Reusability Is FIRRTL Ground: Hardware Construction Languages, Compiler Frameworks, and Transformations. In 2017 IEEE/ACM International Conference on Computer-Aided Design (ICCAD). 209–216. https://doi.org/10.1109/ICCAD.2017.8203780
- M.F. Jacome and H.P. Peixoto. 2001. A Survey of Digital Design Reuse. IEEE Design Test of Computers 18, 3 (May 2001), 98–107. https://doi.org/10.1109/54.922806
- HPVM: Heterogeneous Parallel Virtual Machine. In Proceedings of the 23rd ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP ’18). Association for Computing Machinery, New York, NY, USA, 68–80. https://doi.org/10.1145/3178487.3178493
- LLVM Community. 2022. ”CIRCT” / Circuit IR Compilers and Tools. LLVM. https://github.com/llvm/circt
- A Survey and Evaluation of FPGA High-Level Synthesis Tools. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems 35, 10 (Oct. 2016), 1591–1604. https://doi.org/10.1109/TCAD.2015.2513673
- Stream-Dataflow Acceleration. In 2017 ACM/IEEE 44th Annual International Symposium on Computer Architecture (ISCA). 416–429. https://doi.org/10.1145/3079856.3080255
- Tydi: An Open Specification for Complex Data Structures Over Hardware Streams. IEEE Micro 40, 4 (July 2020), 120–130. https://doi.org/10.1109/MM.2020.2996373
- Supporting Columnar In-memory Formats on FPGA: The Hardware Design of Fletcher for Apache Arrow. In Applied Reconfigurable Computing. 32–47.
- Fletcher: A Framework to Efficiently Integrate FPGA Accelerators with Apache Arrow. In 2019 29th International Conference on Field Programmable Logic and Applications (FPL). 270–277. https://doi.org/10.1109/FPL.2019.00051
- Franjo Plavec. 2010. Stream Computing on Fpgas. Ph. D. Dissertation. University of Toronto, CAN.
- SCAFFI: An Intrachip FPGA Asynchronous Interface Based on Hard Macros. In 2007 25th International Conference on Computer Design. IEEE, Lake Tahoe, CA, USA, 541–546. https://doi.org/10.1109/ICCD.2007.4601950
- Rust Compiler Team. 2021. Queries: Demand-Driven Compilation - Guide to Rustc Development. https://rustc-dev-guide.rust-lang.org/query.html
- salsa-rs. 2022. Salsa. salsa. https://github.com/salsa-rs/salsa
- Matthias J. Sax. 2018. Apache Kafka. In Encyclopedia of Big Data Technologies, Sherif Sakr and Albert Zomaya (Eds.). Springer International Publishing, Cham, 1–8. https://doi.org/10.1007/978-3-319-63962-8_196-1
- LLHD: A Multi-level Intermediate Representation for Hardware Description Languages. arXiv:2004.03494 [cs] (April 2020). arXiv:2004.03494 [cs] http://arxiv.org/abs/2004.03494
- StreamIt: A Language for Streaming Applications. In International Conference on Compiler Construction. Grenoble, France. http://groups.csail.mit.edu/commit/papers/02/streamit-cc.pdf
- Fleet: A Framework for Massively Parallel Streaming on FPGAs. In Proceedings of the Twenty-Fifth International Conference on Architectural Support for Programming Languages and Operating Systems. Association for Computing Machinery, New York, NY, USA, 639–651. http://doi.org/10.1145/3373376.3378495
- Tydi-lang: a language for typed streaming hardware. In 2023 IEEE/ACM International Workshop on Heterogeneous High-performance Reconfigurable Computing (H2RC).
- Introduction - Tydi. https://abs-tudelft.github.io/tydi/index.html
- Physical Streams - Tydi. https://abs-tudelft.github.io/tydi/specification/physical.html