Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1007/978-3-031-52038-9_10guideproceedingsArticle/Chapter ViewAbstractPublication PagesConference Proceedingsacm-pubtype
Article

Hardware Implementation of OCaml Using a Synchronous Functional Language

Published: 15 January 2024 Publication History

Abstract

We present a hardware implementation of the high-level multi-paradigm language OCaml using a declarative language called EclatEclat is tailored for programming reactive hardware applications mixing interaction with physical devices and long-running computations. It is compiled to synthesizable hardware descriptions for configuring Field Programmable Gate Arrays (FPGAs).
We have implemented the OCaml Virtual Machine as an Eclat function to execute complex computations (programmed in OCaml) in reactive applications (programmed in Eclat). This implementation comprises a bytecode interpreter and a runtime system with automatic memory management. The OCaml programmers can customize this runtime by defining external Eclat functions, i.e., hardware accelerators.

References

[1]
Baaij, C., Kooijman, M., Kuper, J., Boeijink, A., Gerards, M.: CλaSH: structural descriptions of synchronous hardware using haskell. In: 2010 13th Euromicro Conference on Digital System Design: Architectures, Methods and Tools (DSD 2010), pp. 714–721. IEEE (2010).
[2]
Barker, M., Edwards, S.A., Kim, M.A.: Synthesized in-BramGarbage collection for accelerators with immutable memory. In: 2022 32nd International Conference on Field-Programmable Logic and Applications (FPL 2022), pp. 47–53. IEEE (2022).
[3]
Berry G A hardware implementation of pure ESTEREL Sadhana 1992 17 95-130
[4]
Berry G and Gonthier G The ESTEREL synchronous programming language: design, semantics, implementation Sci. Comput. Program. (SCP) 1992 19 2 87-152
[5]
Berry, G., Serrano, M.: HipHop.js: (a)synchronous reactive web programming. In: Proceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2020), pp. 533–545 (2020).
[6]
Bourgeat, T., Pit-Claudel, C., Chlipala, A., Arvind: The essence of Bluespec: a core language for rule-based hardware design. In: 41st ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2020), pp. 243–257 (2020).
[7]
Caspi, P., Pilaud, D., Halbwachs, N., Plaice, J.A.: LUSTRE: a declarative language for programming synchronous systems. In: 14th Annual ACM Symposium on Principles of Programming Languages (POPL 1987), vol. 178, pp. 178–188. ACM (1987).
[8]
Cheney CJ A nonrecursive list compacting algorithm Commun. ACM 1970 13 11 677-678
[9]
Colaço, J.L., Pagano, B., Pouzet, M.: SCADE 6: a formal language for embedded critical software development. In: 2017 International Symposium on Theoretical Aspects of Software Engineering (TASE), pp. 1–11. IEEE (2017).
[10]
Fidjeland, A., Luk, W.: Archlog: high-level synthesis of reconfigurable multiprocessors for logic programming. In: 2006 International Conference on Field Programmable Logic and Applications, pp. 1–6. IEEE (2006).
[11]
Fidjeland, A., Luk, W., Muggleton, S.: Scalable acceleration of inductive logic programs. In: 2002 IEEE International Conference on Field-Programmable Technology 2002 (FPT). Proceedings, pp. 252–259. IEEE (2002).
[12]
Gammie P Synchronous digital circuits as functional programs ACM Comput. Surv. (CSUR) 2013 46 2 1-27
[13]
Gautier T, Le Guernic P, and Besnard L Kahn G SIGNAL: a declarative language for synchronous programming of real-time systems Functional Programming Languages and Computer Architecture 1987 Heidelberg Springer 257-277
[14]
Johnsson T Jouannaud J-P Lambda lifting: transforming programs to recursive equations Functional Programming Languages and Computer Architecture 1985 Heidelberg Springer 190-203
[15]
Kennedy, A.: Compiling with continuations, continued. In: 12th ACM SIGPLAN International Conference on Functional programming (ICFP 2007), pp. 177–190 (2007).
[16]
Krivine JL A call-by-name lambda-calculus machine High.-Order Symb. Comput. 2007 20 199-207
[17]
Leroy, X.: The ZINC experiment: an economical implementation of the ML language. Technical report, INRIA (1990)
[18]
Li Y and Leeser M HML, a novel hardware description language and its translation to VHDL IEEE Trans. Very Large Scale Integr. (VLSI) Syst. 2000 8 1 1-8
[19]
Mycroft A and Sharp R Montanari U, Rolim JDP, and Welzl E A statically allocated parallel functional language Automata, Languages and Programming 2000 Heidelberg Springer 37-48
[20]
Pizani Flor, J.P., Swierstra, W., Sijsling, Y.: Π-Ware: hardware description and verification in Agda. In: 21st International Conference on Types for Proofs and Programs (TYPES 2015). Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik (2018).
[21]
Potop-Butucaru, D., De Simone, R., Talpin, J.P.: The synchronous hypothesis and synchronous languages. In: The Embedded Systems Handbook, pp. 1–21 (2005)
[22]
Rocheteau F and Halbwachs N de Bakker JW, Huizing C, de Roever WP, and Rozenberg G Implementing reactive programs on circuits a hardware implementation of LUSTRE Real-Time: Theory in Practice 1992 Heidelberg Springer 195-208
[23]
Saint-Mleux, X., Feeley, M., David, J.P.: SHard: a Scheme to hardware compiler. In: Workshop on Scheme and Functional Programming (2006)
[24]
Sylvestre L, Chailloux E, and Sérot J Accelerating OCaml programs on FPGA Int. J. Parallel Program. (IJPP) 2023 51 2–3 186-207
[25]
Sylvestre, L., Chailloux, E., Sérot, J.: Work-in-Progress: mixing computation and interaction on FPGA. In: 2023 International Conference on Embedded Software (EMSOFT 2023), pp. 5–6. IEEE (2023).
[26]
Townsend, R., Kim, M.A., Edwards, S.A.: From functional programs to pipelined dataflow circuits. In: 26th International Conference on Compiler Construction (CC 2017), pp. 76–86 (2017).
[27]
Varoumas S, Pesin B, Vaugon B, and Chailloux E Programming microcontrollers through high-level abstractions: the OMicroB project J. Comput. Lang. (COLA) 2023 77
[28]
Zhai, K., Townsend, R., Lairmore, L., Kim, M.A., Edwards, S.A.: Hardware synthesis from a recursive functional language. In: 2015 International Conference on Hardware/Software Codesign and System Synthesis (CODES+ISSS 2015), pp. 83–93. IEEE (2015).

Index Terms

  1. Hardware Implementation of OCaml Using a Synchronous Functional Language
        Index terms have been assigned to the content through auto-classification.

        Recommendations

        Comments

        Please enable JavaScript to view thecomments powered by Disqus.

        Information & Contributors

        Information

        Published In

        cover image Guide Proceedings
        Practical Aspects of Declarative Languages: 26th International Symposium, PADL 2024, London, UK, January 15–16, 2024, Proceedings
        Jan 2024
        237 pages
        ISBN:978-3-031-52037-2
        DOI:10.1007/978-3-031-52038-9
        • Editors:
        • Martin Gebser,
        • Ilya Sergey

        Publisher

        Springer-Verlag

        Berlin, Heidelberg

        Publication History

        Published: 15 January 2024

        Author Tags

        1. synchronous programming
        2. functional programming
        3. language design and implementation
        4. FPGA
        5. virtual machine
        6. OCaml

        Qualifiers

        • Article

        Contributors

        Other Metrics

        Bibliometrics & Citations

        Bibliometrics

        Article Metrics

        • 0
          Total Citations
        • 0
          Total Downloads
        • Downloads (Last 12 months)0
        • Downloads (Last 6 weeks)0
        Reflects downloads up to 22 Sep 2024

        Other Metrics

        Citations

        View Options

        View options

        Get Access

        Login options

        Media

        Figures

        Other

        Tables

        Share

        Share

        Share this Publication link

        Share on social media