Teaching functional circuit specification in Hydra

  • John O'Donnell
From Transistors to Computer Architecture
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1022)


Hydra is a set of methods and software tools for carrying out digital circuit design using Haskell. It has been used successfully for three years in the third-year course on Computer Architecture at the University of Glasgow, with plans to extend its use to the advanced fourth-year course. Some of its innovative features are: Signal type classes; support for CMOS and NMOS design; a large family of higher order combining forms; a set of tools for simulation; a language for expressing control algorithms; and automated tools for deriving control circuits from control algorithms. The system contains a rich library of circuits, ranging from low level implementations of logic gates using pass transistors to complete processor designs. The chief benefit of using functional circuit specification to teach computer architecture is that a complete computer system design can be presented, at all levels of abstraction, with no details omitted, giving students a genuine understanding of how computers work.


Clock Cycle Logic Gate Computer Architecture Register File Flip Flop 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    R. Bird and P. Wadler, Introduction to Functional Programming, Prentice Hall (1988).Google Scholar
  2. 2.
    P. Hudak, S. Peyton Jones and P. Wadler (editors). Report on the Programming Language Haskell, A Nonstrict Purely Functional Language (Version 1.2), ACM SIGPLAN Notices 27(5) (May 1992).Google Scholar
  3. 3.
    S. D. Johnson. Synthesis of Digital Designs from Recursion Equations, The MIT Press (1984).Google Scholar
  4. 4.
    S. D. Johnson. Applicative Programming and Digital Design, 11th ACM Symp. on Principles of Programming Languages (POPL) (1984) 218–227.Google Scholar
  5. 5.
    A. Gupta, Formal Hardware Verification Methods: A Survey, Formal Methods in System Design, Vol. 1 No. 2/3 (1992) 151–238.Google Scholar
  6. 6.
    C. Mead and L. Conway, Introduction to VLSI Systems, Addison-Wesley (1980).Google Scholar
  7. 7.
    J. O'Donnell, Hardware description with recursion equations, 8th Int. Symp. on Computer Hardware Description Languages and their Applications (CHDL), North-Holland (1987) 363–382.Google Scholar
  8. 8.
    J. O'Donnell, Hydra: Hardware description in a functional language using recursion equations and high order combining forms, The Fusion of Hardware Design and Verification, G. J. Milne (ed), North-Holland (1988) 309–328.Google Scholar
  9. 9.
    J. O'Donnell, Generating netlists from executable circuit specifications in a pure functional language, Functional Programming: Glasgow 1992, Springer-Verlag Workshops in Computing (1993) 178–194.Google Scholar
  10. 10.
    J. O'Donnell, Bidirectional fold and scan, Functional Programming: Glasgow 1993, Springer (1994) 193–200.Google Scholar
  11. 11.
    M. Sheeran. muFP, A language for VLSI design, Proc. ACM Symp. on Lisp and Functional Programming, (1984) 104–112.Google Scholar
  12. 12.
    M. Sheeran. Designing regular array architectures using higher order functions, Proc. Conf. Functional Programming Languages and Computer Architecture (FPCA), Springer-Verlag LNCS 201 (1985) 220–237.Google Scholar
  13. 13.
    F. P. Prosser and D. E. Winkel, The Art of Digital Design, Prentice-Hall International (1987).Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1995

Authors and Affiliations

  • John O'Donnell
    • 1
  1. 1.University of GlasgowUK

Personalised recommendations