Skip to main content

Hardware Specification with C \(\varvec{\lambda }\) aSH

  • Chapter
  • First Online:
Central European Functional Programming School (CEFP 2013)

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 8606))

Included in the following conference series:

  • 779 Accesses

Abstract

C\(\lambda \)aSH is a recently developed system to specify and synthesize hardware architectures, strongly based on the functional programming language Haskell. Different from other existing approaches to describe hardware in a functional style, C\(\lambda \)aSH is not defined as an embedded language inside Haskell, but instead, C\(\lambda \)aSH uses Haskell itself to specify hardware architectures. In fact, every C\(\lambda \)aSH specification is an executable Haskell program. Hence, the simulation of a hardware architecture is immediate, and all abstraction mechanisms that are available in Haskell are maintained in C\(\lambda \)aSH, insofar they are directly applicable to the specification of hardware.

This paper describes several examples of specifications of hardware architectures in C\(\lambda \)aSH to illustrate the various abstraction mechanisms that C\(\lambda \)aSH offers. The emphasis is more on the C\(\lambda \)aSH-style of specification, than on the concrete technical details of C\(\lambda \)aSH. Often, the specifications are given in plain Haskell, to avoid some of the specific C\(\lambda \)aSH details that will be indicated in a separate section.

The given examples include regular architectures such as a ripple carry adder, a multiplier, vector and matrix multiplications, finite impulse response filters, and also irregular architectures such as a simple Von Neumann style processor and a reduction circuit. Finally, some specific technicalities of C\(\lambda \)aSH will be discussed, among others the processing pipeline of C\(\lambda \)aSH and the hardware oriented type constructions of C\(\lambda \)aSH.

Jan Kuper—This work is partly supported by EU project POLCA, FP7-ICT-2013-10, grant agreement no. 610686.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 1.

    Note that we follow the convention used in Haskell, and write \(f\ s\ x\) instead of \(f(s,x)\).

References

  1. Baaij, C.P.R., Kooijman, M., Kuper, J., Boeijink, W.A., Gerards, M.E.T.: C\(\lambda \)ash: Structural descriptions of synchronous hardware using haskell. In: Proceedings of the 13th EUROMICRO Conference on Digital System Design: Architectures. Methods and Tools, Lille, France, pp. 714–721. IEEE Computer Society, USA, September 2010

    Google Scholar 

  2. Baaij, C.P.: Digital Circuits in C\(\lambda \)ash – Functional Specification and Type-Driven Synthesis. Ph.D. thesis, University of Twente, The Netherlands (2014, forthcoming)

    Google Scholar 

  3. Bjesse, P., Claessen, K., Sheeran, M., Singh, S.: Lava: Hardware design in Haskell. In: Proceedings of the Third ACM SIGPLAN International Conference on Functional Programming, pp. 174–184. ACM (1998)

    Google Scholar 

  4. Cardelli, L., Plotkin, G.D.: An algebraic approach to vlsi design. In: Gray, J.P. (ed.) Proceedings of the first International Conference on Very Large Scale Integration, pp. 173–182. Academic Press (1981)

    Google Scholar 

  5. Chen, G.: A short historical survey of functional hardware languages. ISRN Electronics (2012)

    Google Scholar 

  6. Coussy, P., Morawiec, A. (eds.): High-level Synthesis. From Algorithm to Digital Circuit. Springer Publishers, New York (2008)

    Google Scholar 

  7. Gerards, M.E.T., Baaij, C.P.R., Kuper, J., Kooijman, M.: Higher-order abstraction in hardware descriptions with C\(\lambda \)ash. In: Kitsos, P. (ed.) Proceedings of the 14th EUROMICRO Conference on Digital System Design, DSD 2011, Oulu, Finland, pp. 495–502. IEEE Computer Society, USA (2011)

    Chapter  Google Scholar 

  8. Gill, A., Bull, T., Kimmell, G., Perrins, E., Komp, E., Werling, B.: Introducing kansas lava. In: Morazán, M.T., Scholz, S.-B. (eds.) IFL 2009. LNCS, vol. 6041, pp. 18–35. Springer, Heidelberg (2010)

    Chapter  Google Scholar 

  9. IEEE Standard: VHDL Language Reference Manual. IEEE (2008)

    Google Scholar 

  10. Johnson, S.: Applicative programming and digital design. In: Proceedings of the 11th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages, pp. 218–227. ACM (1984)

    Google Scholar 

  11. Kuper, J., Baaij, C.P.R., Kooijman, M., Gerards, M.E.T.: Architecture specifications in C\(\lambda \)aSH. In: Kaźmierski, T.J., Morawiec, A. (eds.) System Specification and Design Languages. LNEE, vol. 106, pp. 191–206. Springer, New York (2011)

    Chapter  Google Scholar 

  12. Niedermeier, A., Wester, R., Rovers, K.C., Baaij, C.P.R., Kuper, J., Smit, G.J.M.: Designing a dataflow processor using c\(\lambda \)ash. In: 28th Norchip Conference, NORCHIP 2010, Tampere, Finland, p. 69. IEEE Circuits and Systems Society, November 2010

    Google Scholar 

  13. Nikhil, R.: Bluespec: A general-purpose approach to high-level synthesis based on parallel atomic transactions. In: Coussy, P., Morawiec, A. (eds.) High-Level Synthesis - From Algorithm to Digital Circuit, pp. 129–146. Springer, Netherlands (2008)

    Google Scholar 

  14. Sander, I., Jantsch, A.: System modeling and transformational design refinement in ForSyDe. IEEE Trans. Comput. Aided Des. Integr. Circuits Syst. 23, 17–32 (2004)

    Article  Google Scholar 

  15. Sheeran, M.: \(\mu \)FP, a language for VLSI design. In: Proceedings of the 1984 ACM Symposium on LISP and Functional Programming, pp. 104–112. ACM (1984)

    Google Scholar 

  16. Smit, G.J.M., Kuper, J., Baaij, C.P.R.: A mathematical approach towards hardware design. In: Athanas, P.M., Becker, J., Teich, J., Verbauwhede, I. (eds.) Dagstuhl Seminar on Dynamically Reconfigurable Architectures, Dagstuhl, Germany. Dagstuhl Seminar Proceedings, vol. 10281, p. 11. Internationales Begegnungs- und Forschungszentrum für Informatik (IBFI), Dagstuhl, Germany, December 2010

    Google Scholar 

  17. Wester, R., Baaij, C.P.R., Kuper, J.: A two step hardware design method using c\(\lambda \)ash. In: 22nd International Conference on Field Programmable Logic and Applications, FPL 2012, Oslo, Norway, pp. 181–188. IEEE Computer Society, USA, August 2012

    Google Scholar 

  18. Wester, R., Sarakiotis, D., Kooistra, E., Kuper, J.: Specification of apertif polyphase filter bank in c\(\lambda \)ash. In: Communicating Process Architectures 2012, Scotland, pp. 53–64. Open Channel Publishing, United Kingdom, August 2012

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Jan Kuper .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2015 Springer International Publishing Switzerland

About this chapter

Cite this chapter

Kuper, J. (2015). Hardware Specification with C \(\varvec{\lambda }\) aSH . In: Zsók, V., Horváth, Z., Csató, L. (eds) Central European Functional Programming School. CEFP 2013. Lecture Notes in Computer Science(), vol 8606. Springer, Cham. https://doi.org/10.1007/978-3-319-15940-9_8

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-15940-9_8

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-15939-3

  • Online ISBN: 978-3-319-15940-9

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics