Abstract
In previous work we have demonstrated how the functional language SAFL can be used as a behavioural hardware description language. Other work (such as μFP and Lava) has demonstrated that functional languages are apposite for structural hardware description.
One of the strengths of systems such as VHDL and Verilog is their ability to mix structural- and behavioural-level primitives in a single specification. Motivated by this observation, we describe a unified framework in which a stratified functional language is used to specify hardware across different levels of abstraction: Lava-style structural expansion is used to generate acyclic combinatorial circuits; these combinatorial fragments are composed at the SAFL-level. We demonstrate the utility of this programming paradigm by means of a realistic case-study. Our tools have been used to specify, simulate and synthesise a DES encryption/ decryption circuit. Area-time performance figures are presented.
Finally, we show how similar integration techniques can be used to embed languages such as Magma/Lava into industrial HDLs such as Verilog and VHDL. Our methodology offers significant advantages over the “Perlscript” technique so commonly employed in practice.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Haskell98 report. Available from http://www.haskell.org/.
Bjesse, P., Claessen, K., Sheeran, M., and Singh, S. Lava: Hardware description in Haskell. In Proceedings of the 3rd International Conference on Functional Programming (1998), SIGPLAN, ACM.
Bose, B. DDD: A transformation system for digital design derivation. Tech. Rep. 331, Computer Science Department, Indiana University, 1991.
Claessen, K., and Sands, D. Observable sharing for functional circuit description. In Advances in Computing Science ASIAN’99; 5th Asian Computing Science Conference (1999), vol. 1742 of LNCS, Springer Verlag, pp. 62–73.
Classen, K., Sheeran, M., and Singh, S. The design and verification of a sorter core. In Proceedings of the 11th Advanced Working Conference on Correct Hardware Design and Verification Methods (2001), vol. 2144 of LNCS, Springer-Verlag, pp. 355–369.
De Micheli, G. Synthesis and Optimization of Digital Circuits. McGraw-Hill Inc., 1994.
IEEE. Verilog HDL language reference manual. IEEE Standard 1364-2001.
EEE. Standard VHDL Reference Manual, 1993. IEEE Standard 1076-1993.
Kaps, J.-P., and Paar, C. Fast DES implementation for FPGAs and its application to a universal key-search machine. In Selected Areas in Cryptography (1998), vol. 1556 of Lecture Notes in Computer Science, Springer Verlag, pp. 234–247.
Matthews, J., Cook, B., and Launchbury, J. Microprocessor specification in Hawk. In Proceedings of the IEEE International Conference on Computer Languages (1998).
Milner, R., Tofte, M., Harper, R., and MacQueen, D. The Definition of Standard ML (Revised). MIT Press, 1997.
Mycroft, A., and Sharp, R. A statically allocated parallel functional language. In Proceedings of the International Conference on Automata, Languages and Programming (2000), vol. 1853 of LNCS, Springer-Verlag.
Mycroft, A., and Sharp, R. Hardware/software co-design using functional languages. In Proceedings of TACAS (2001), vol. 2031 of LNCS, Springer-Verlag.
Mycroft, A., and Sharp, R. Higher-level techniques for hardware description and synthesis. To appear. International Journal on Software Tools for Technology Transfer (STTT) (2002).
O’Donnell, J. Hardware description with recursion equations. In Proceedings of the IFIP 8th International Symposium on Computer Hardware Description Languages and their Applications (April 1987), North-Holland, pp. 363–382.
O’Donnell, J. Generating netlists from executable circuit specifications in a pure functional language. In Functional Programming, Workshops in Computing, Proceedings, (1992), Springer-Verlag, pp. 178–194.
Paulson, L. ML for the working programmer. Cambridge University Press, 1996.
Schneier, B. Applied cryptography: protocols, algorithms, and sourcecode in C John Wiley and Sons, New York, 1994.
Sharp, R., and Mycroft, A. Soft scheduling for hardware. In Proceedings of the 8th International Static Analysis Symposium (2001), vol. 2126 of LNCS, Springer-Verlag.
Sheeran, M. muFP, a language for VLSI design. In Proceedings of the ACM Symposium on LISP and Functional Programming (1984).
Wadler, P. Monads for functional programming. In Advanced Functional Programming (1995), vol. 925 of LNCS, Springer-Verlag.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2002 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Sharp, R. (2002). Functional Design Using Behavioural and Structural Components. In: Aagaard, M.D., O’Leary, J.W. (eds) Formal Methods in Computer-Aided Design. FMCAD 2002. Lecture Notes in Computer Science, vol 2517. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-36126-X_20
Download citation
DOI: https://doi.org/10.1007/3-540-36126-X_20
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-00116-4
Online ISBN: 978-3-540-36126-8
eBook Packages: Springer Book Archive