Abstract
We present a library in Haskell for programming Field Programmable Gate Arrays (FPGAs), including hardware software co-design. Code for software (in C) and hardware (in VHDL) is generated from a single program, along with the code to support communication between hardware and software. We present type-based techniques for the simultaneous implementation of more than one embedded domain specific language (EDSL). We build upon a generic representation of imperative programs that is loosely coupled to instruction and expression types, allowing the individual parts to be developed and improved separately. Code generation is implemented as a series of translations between progressively smaller, typed EDSLs, safeguarding against errors that arise in untyped translations. Initial case studies show promising performance.
- H. Apfelmus. 2017. The Operational Monad Tutorial (Blog Post). http://apfelmus.nfshost.com/articles/operational-monad.html. (2017).Google Scholar
- Markus Aronsson, Emil Axelsson, and Mary Sheeran. 2015. Stream Processing for Embedded Domain Specific Languages. In Revised Selected Papers from 26th Int. Symp. on Implementation and Application of Functional Languages (IFL). ACM. Google Scholar
Digital Library
- Joshua Auerbach et al. 2012. A Compiler and Runtime for Heterogeneous Computing. In Proc. 49th Design Automation Conference (DAC). ACM. Google Scholar
Digital Library
- E. Axelsson. 2016. Compilation as a Typed EDSL-to-EDSL Transformation (Blog post). http://fun-discoveries.blogspot.se/2016/03/ . (2016).Google Scholar
- E. Axelsson and A. Persson. 2015. Programmable Signatures. In Trends in Functional Programming, Revised Selected Papers. Springer. Google Scholar
Digital Library
- Christiaan Baaij, Matthijs Kooijman, Jan Kuper, Arjan Boeijink, and Marco Gerards. 2010. C λaSH: structural descriptions of synchronous hardware using Haskell. In Proc. 13th Euromicro Conference on Digital System Design: Architectures, Methods and Tools (DSD). IEEE. Google Scholar
Digital Library
- Jonathan Bachrach et al. 2012. Chisel: Constructing Hardware in a Scala Embedded Language. In Proc. 49th Design Automation Conference (DAC). ACM. Google Scholar
Digital Library
- P. Bjesse, K. Claessen, M. Sheeran, and S. Singh. 1998. Lava: Hardware Design in Haskell. In Proc. Third Int. Conf. on Functional Programming (ICFP). ACM. Google Scholar
Digital Library
- Jan Bracker and Andy Gill. 2014. Sunroof: A Monadic DSL for Generating JavaScript. In Proc. 16th Int. Symp. on Practical Aspects of Declarative Languages. Springer International Publishing, 65–80. Google Scholar
Digital Library
- Sally Browning and Philip Weaver. 2010. Designing tunable, verifiable cryptographic hardware using Cryptol. In Design and Verification of Microprocessor Systems for High-Assurance Applications. Springer, 89–143.Google Scholar
- K. Claessen, M. Sheeran, and S. Singh. 2003. Using Lava to design and verify recursive and periodic sorters. IJSTTT 4, 3 (2003).Google Scholar
- Nirav Dave. 2011. A Unified Model for Hardware/Software Codesign. Ph.D. Dissertation. EECS Dept., MIT. Google Scholar
Digital Library
- Peter Gammie. 2013. Synchronous Digital Circuits As Functional Programs. ACM Comput. Surv. 46, 2, Article 21 (Nov. 2013), 27 pages. Google Scholar
Digital Library
- N. George, D. Novo, T. Rompf, M. Odersky, and P. Ienne. 2013. Making domainspecific hardware synthesis tools cost-efficient. In 2013 International Conference on Field-Programmable Technology (FPT). 120–127.Google Scholar
- Dan R. Ghica, Alex Smith, and Satnam Singh. 2011. Geometry of Synthesis IV: Compiling Affine Recursion into Static Hardware. In Proc. 16th Int. Conf. on Functional Programming (ICFP). ACM. Google Scholar
Digital Library
- Andy Gill et al. 2010. Introducing Kansas Lava. In Proc. 21st Int. Conf. on Implementation and Application of Functional Languages (IFL). Springer-Verlag. Google Scholar
Digital Library
- Patrick C. Hickey, Lee Pike, Trevor Elliott, James Bielman, and John Launchbury. 2014. Building Embedded Systems with Embedded DSLs (Experience Report). In Proc. 19th Int. Conf. on Functional Programming (ICFP). ACM. Google Scholar
Digital Library
- Myron King. 2013. A Methodology for Hardware-Software Codesign. Ph.D. Dissertation. EECS Dept., MIT. Google Scholar
Digital Library
- K. Moriarty. 2017. Password-Based Cryptography Specification Version 2.1. (2017). https://tools.ietf.org/html/rfc2898Google Scholar
- Robert Morris and Ken Thompson. 1979. Password Security: A Case History. Commun. ACM 22, 11 (Nov. 1979), 594–597. Google Scholar
Digital Library
- Alan Mycroft and Richard Sharp. 2001. Hardware/Software Co-design Using Functional Languages. Springer-Verlag, 236–251. Google Scholar
Digital Library
- M. Naylor and S. Moore. 2015. A generic synthesisable test bench. In ACM/IEEE Int. Conf. on Formal Methods and Models for Codesign (MEMOCODE). 128–137. Google Scholar
Digital Library
- Matthew Naylor, Colin Runciman, and Jason Reich. 2009. The Reduceron home page, fetched May 2017. (2009). https://www.cs.york.ac.uk/fp/reduceron/Google Scholar
- Rishiyur Nikhil. 2004. Bluespec System Verilog: efficient, correct RTL from high level specifications. In ACM/IEEE Int. Conf. on Formal Methods and Models for Co-Design (MEMOCODE). IEEE, 69–70. Google Scholar
Digital Library
- M. Puschel et al. 2005. SPIRAL: Code Generation for DSP Transforms. In Proc. IEEE, Vol. 93. Issue 2.Google Scholar
Cross Ref
- Josef David Svenningsson and Bo Joel Svensson. 2013. Simple and Compositional Reification of Monadic Embedded Languages. Proc. 18th Int. Conf. on Functional Programming (ICFP) (2013). Google Scholar
Digital Library
- Bo Joel Svensson. 2017. OpenCL Reduction on the ZYNQ. (2017). http://svenssonjoel. github.io/writing/zynqreduce.pdfGoogle Scholar
- Wouter Swierstra. 2008. Data Types à La Carte. J. Funct. Program. 18, 4 (July 2008). Google Scholar
Digital Library
- David Tarditi, Sidd Puri, and Jose Oglesby. 2006. Accelerator: Using Data Parallelism to Program GPUs for General-purpose Uses. SIGPLAN Not. 41, 11 (Oct. 2006), 325–335. Google Scholar
Digital Library
- J Teich. 2012. Hardware Software Codesign: the Past, the Present, and Predicting the Future. Proc. of the IEEE 100 (2012).Google Scholar
Cross Ref
- The OpenSSL Project. 2003. OpenSSL: The Open Source toolkit for SSL/TLS. (April 2003). www.openssl.org .Google Scholar
- Michael Vollmer, Bo Joel Svensson, Eric Holk, and Ryan R. Newton. 2015. Metaprogramming and Auto-tuning in the Search for High Performance GPU Code. In Proc. 4th Int. Workshop on Functional High-Performance Computing (FHPC). ACM. Google Scholar
Digital Library
- J.J. Vossen. 2016. Offloading Haskell functions onto an FPGA. Master’s thesis. Univ. Twente.Google Scholar
- Kuangya Zhai, Richard Townsend, Lianne Lairmore, Martha A. Kim, and Stephen A. Edwards. 2015. Hardware Synthesis from a Recursive Functional Language. In Proc. 10th Int. Conf. on Hardware/Software Codesign and System Synthesis (CODES). IEEE. Google Scholar
Digital Library
- Hamid Reza Zohouri, Naoya Maruyama, Satoshi Matsuoka, and Aaron Smith. 2016. Evaluating and Optimizing OpenCL Kernels for High Performance Computing with FPGAs. In Proc. SuperComputing Conference. IEEE. Google Scholar
Digital Library
Index Terms
Hardware software co-design in Haskell
Recommendations
Hardware software co-design in Haskell
Haskell 2017: Proceedings of the 10th ACM SIGPLAN International Symposium on HaskellWe present a library in Haskell for programming Field Programmable Gate Arrays (FPGAs), including hardware software co-design. Code for software (in C) and hardware (in VHDL) is generated from a single program, along with the code to support ...
An Integrated Prime-Field ECDLP Hardware Accelerator with High-Performance Modular Arithmetic Units
RECONFIG '11: Proceedings of the 2011 International Conference on Reconfigurable Computing and FPGAsThis paper reports a successful demonstration of Pollard rho algorithm on a hardware-software co-integrated platform. It targets the Elliptic curve discrete logarithmic problem (ECDLP) for a NIST-standardized curve over 112- bit prime field. To the best ...
Hardware Software Partitioning Using Genetic Algorithm
VLSID '97: Proceedings of the Tenth International Conference on VLSI Design: VLSI in Multimedia ApplicationsHardware software co-design is gaining importance with the advent of CAD for embedded systems. A key phase in such designs is partitioning the specification into hardware and software implementation sets. The problem being combinatorically explosive, ...







Comments