Embedding a Hardware Description Language in Template Haskell

  • John T. O’Donnell
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3016)


Hydra is a domain-specific language for designing digital circuits, which is implemented by embedding within Haskell. Many features required for hardware specification fit well within functional languages, leading in many cases to a perfect embedding. There are some situations, including netlist generation and software logic probes, where the DSL does not fit exactly within the host functional language. A new solution to these problems is based on program transformations performed automatically by metaprograms in Template Haskell.


  1. 1.
    Jones, S.P. (ed.): Haskell 98 language and libraries. Journal of Functional Programming 13(1), 1–255 (2003)Google Scholar
  2. 2.
    Johnson, S.D.: Synthesis of Digital Designs from Recursion Equations. The ACM Distinguished Dissertation Series. MIT Press, Cambridge (1984)Google Scholar
  3. 3.
    Jones, G., Sheeran, M.: Circuit design in Ruby. In: Staunstrup, J. (ed.) Formal Methods in VLSI Design, ch. 1. IFIP WG 10.5 Lecture Notes, pp. 13–70. North-Holland, Amsterdam (1990)Google Scholar
  4. 4.
    O’Donnell, J.: Hardware description with recursion equations. In: Proceedings of the IFIP 8th International Symposium on Computer Hardware Description Languages and their Applications, Amsterdam, April 1987, pp. 363–382. North-Holland, Amsterdam (1987)Google Scholar
  5. 5.
    O’Donnell, J.: Hydra: hardware description in a functional language using recursion equations and high order combining forms. In: Milne, G.J. (ed.) The Fusion of Hardware Design and Verification, pp. 309–328. North-Holland, Amsterdam (1988)Google Scholar
  6. 6.
    O’Donnell, J.: Generating netlists from executable circuit specifications in a pure functional language. In: Functional Programming, Glasgow 1992. Workshops in Computing, pp. 178–194. Springer, Heidelberg (1992)Google Scholar
  7. 7.
    O’Donnell, J.: From transistors to computer architecture: Teaching functional circuit specification in Hydra. In: Hartel, P.H., Plasmeijer, R. (eds.) FPLE 1995. LNCS, vol. 1022, pp. 195–214. Springer, Heidelberg (1995)Google Scholar
  8. 8.
    O’Donnell, J.: Overview of Hydra: A concurrent language for synchronous digital circuit design. In: Proceedings 16th International Parallel & Distributed Processing Symposium, April 2002, p. 234. IEEE Computer Society, Los Alamitos (2002); Workshop on Parallel and Distribued Scientific and Engineering Computing with Applications— PDSECA (abstract)CrossRefGoogle Scholar
  9. 9.
    O’Donnell, J., Rünger, G.: Derivation of a carry lookahead addition circuit. In: Proceedings ACM SIGPLAN Haskell Workshop (HW 2001), September 2001. Electronic Notes in Theoretical Computer Science, vol. 59(2) (2001)Google Scholar
  10. 10.
    Sheard, T., Jones, S.P.: Template metaprogramming for Haskell. In: Chakravarty, M.M.T. (ed.) ACM SIGPLAN Haskell Workshop 2002, October 2002, pp. 1–16. ACM Press, New York (2002)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2004

Authors and Affiliations

  • John T. O’Donnell
    • 1
  1. 1.University of GlasgowUnited Kingdom

Personalised recommendations