Correct and Compositional Hardware Generators (2401.02570v1)
Abstract: Hardware generators help designers explore families of concrete designs and their efficiency trade-offs. Both parameterized hardware description languages (HDLs) and higher-level programming models, however, can obstruct composability. Different concrete designs in a family can have dramatically different timing behavior, and high-level hardware generators rarely expose a consistent HDL-level interface. Composition, therefore, is typically only feasible at the level of individual instances: the user generates concrete designs and then composes them, sacrificing the ability to parameterize the combined design. We design Parafil, a system for correctly composing hardware generators. Parafil builds on Filament, an HDL with strong compile-time guarantees, and lifts those guarantees to generators to prove that all possible instantiations are free of timing bugs. Parafil can integrate with external hardware generators via a novel system of output parameters and a framework for invoking generator tools. We conduct experiments with two other generators, FloPoCo and Google's XLS, and we implement a parameterized FFT generator to show that Parafil ensures correct design space exploration.
- IEEE Standard for Verilog Hardware Description Language. IEEE Std 1364-2005 (Revision of IEEE Std 1364-2001), 2006.
- Cλ𝜆\lambdaitalic_λaSH: Structural descriptions of synchronous hardware using Haskell. In Euromicro Conference on Digital System Design: Architectures, Methods and Tools, 2010.
- Chisel: constructing hardware in a Scala embedded language. In Design Automation Conference (DAC), 2012.
- Experience with embedding hardware description languages in HOL. In Proceedings of the IFIP TC10/WG 10.2 International Conference on Theorem Provers in Circuit Design (TPCD): Theory, Practice and Experience, 1993.
- The essence of bluespec: a core language for rule-based hardware design. In ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), 2020.
- Cadence Inc. Jasper Gold FPV App, 2022.
- LegUp: High-level synthesis for FPGA-based processor/accelerator systems. In International Symposium on Field-Programmable Gate Arrays (FPGA), 2011.
- Edmund M Clarke. Model checking. In International Conference on Foundations of Software Technology and Theoretical Computer Science, pages 54–56. Springer, 1997.
- A Pythonic approach for rapid hardware prototyping and instrumentation. In International Conference on Field-Programmable Logic and Applications (FPL), 2017.
- An algorithm for the machine calculation of complex fourier series. Mathematics of computation, 1965.
- Designing custom arithmetic data paths with flopoco. IEEE Design & Test of Computers, 2011.
- Type-directed scheduling of streaming accelerators. In ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), 2020.
- Gemmini: An agile systolic array generator enabling systematic evaluations of deep-learning architectures. arXiv preprint arXiv:1911.09925, 2019.
- Google Inc. Add capability to reuse expensive resources, 2023.
- Google Inc. XLS: Accelerated Hardware Design, 2023.
- Darkroom: Compiling high-level image processing code into hardware pipelines. 2014.
- Formal verification of high-level synthesis. In ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA), 2021.
- Paul Hudak. Modular domain specific languages and tools. In International Conference on Software Reuse (ICSR), 1998.
- Jane Street. HardCaml: Register transfer level hardware design in OCaml, 2022.
- Spatial: A language and compiler for application accelerators. In ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), 2018.
- Hygienic macro expansion. In ACM Conference on LISP and Functional Programming, 1986.
- HeteroCL: A multi-paradigm programming infrastructure for software-defined reconfigurable computing. In International Symposium on Field-Programmable Gate Arrays (FPGA), 2019.
- PyMTL: A unified framework for vertically integrated computer architecture research. In IEEE/ACM International Symposium on Microarchitecture (MICRO), 2014.
- CoSA: Integrated Verification for Agile Hardware Design. In Formal Methods in Computer-Aided Design (FMCAD), 2018.
- Computer generation of hardware for linear digital signal processing transforms. ACM Transactions on Design Automation of Electronic Systems, 2012.
- VM Milovanović and ML Petrović. A highly parametrizable chisel HCL generator of single-path delay feedback FFT processors. In International Conference on Microelectronics (MIEL). IEEE, 2019.
- Quantifying the cost and benefit of latency insensitive communication on FPGAs. In International Symposium on Field-Programmable Gate Arrays (FPGA), 2014.
- Predictable accelerator design with time-sensitive affine types. In ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), 2020.
- Modular hardware design with timeline types. In ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), 2023.
- Modular hardware design with timeline types. arXiv preprint arXiv:2304.10646, 2023.
- Rishiyur Nikhil. Bluespec System Verilog: Efficient, correct RTL from high level specifications. In Conference on Formal Methods and Models for Co-Design (MEMOCODE), 2004.
- Formal verification of the stall invariant property for latency-insensitive rtl modules. In Conference on Formal Methods and Models for Co-Design, 2023.
- Marshall C. Pease. An adaptation of the fast fourier transform for parallel processing. Journal of the ACM, 1968.
- Bambu: A modular framework for the high level synthesis of memory-intensive applications. In International Conference on Field-Programmable Logic and Applications (FPL), 2013.
- Dfiant: A dataflow hardware description language. In International Conference on Field-Programmable Logic and Applications (FPL). IEEE, 2017.
- Warehouse-scale video acceleration: co-design and deployment in the wild. In ACM International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS), 2021.
- Lightweight modular staging: A pragmatic approach to runtime code generation and compiled DSLs. In International Conference on Generative Programming and Component Engineering (GPCE), 2010.
- Avoiding game over: Bringing design to the next level. In Design Automation Conference (DAC), 2012.
- Multi-stage programming with explicit annotations. In ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation (PEPM), 1997.
- Muralidaran Vijayaraghavan et al. Bounded dataflow networks and latency-insensitive circuits. In Conference on Formal Methods and Models for Co-Design. IEEE, 2009.
- A practical guide for SystemVerilog assertions. Springer Science & Business Media, 2005.
- AutoPilot: A platform-based ESL synthesis system. In High-Level Synthesis, pages 99–112. 2008.