Abstract
Creating correct hardware is hard. Though there is much talk of using formal and semi-formal methods to develop designs and implementations, in practice most implementations are written without the support of any formal or semi-formal methodology. Having such a methodology brings many benefits, including improved likelihood of a correct implementation, lowering the cost of design exploration and lowering the cost of certification. In this paper, we introduce a semi formal methodology for connecting executable specifications written in the functional language Haskell to efficient VHDL implementations. The connection is performed by manual edits, using semi-formal equational reasoning facilitated by the worker/wrapper transformation, and directed using commutable functors. We explain our methodology on a full-scale example, an efficient Low-Density Parity Check forward error correcting code, which has been implemented on a Virtex-5 FPGA.
Supplemental Material
- K. S. Andrews, D. Divsalar, S. Dolinar, J. Hamkins, C. R. Jones, and F. Pollara. The development of turbo and LDPC codes for deep-space applications. Proc. IEEE, 95 (11): 2142--2156, Nov. 2007.Google Scholar
Cross Ref
- A. W. Appel. Compiling with Continuations. Cambridge University Press, 1992. Google Scholar
Digital Library
- G. Berry. The constructive semantics of pure Esterel. http://www-sop.inria.fr/esterel.org/files/, 1999.Google Scholar
- R. Bird. Pearls of Functional Algorithm Design. Cambridge University Press, 2010. ISBN 9780521513388. URL http://www.cambridge.org/gb/knowledge/isbn/item5600469. Google Scholar
Cross Ref
- P. Bjesse, K. Claessen, M. Sheeran, and S. Singh. Lava: Hardware design in Haskell. In International Conference on Functional Programming, pages 174--184, 1998. Google Scholar
Digital Library
- R. Burstall and J. Darlington. A transformation system for developing recursive programs. Journal of the ACM, 24 (1), January 1977. Google Scholar
Digital Library
- M. M. T. Chakravarty, G. Keller, and S. P. Jones. Associated type synonyms. In ICFP '05: Proceedings of the Tenth ACM SIGPLAN International Conference on Functional Programming, pages 241--253, New York, NY, USA, 2005. ACM. ISBN 1-59593-064-7. Google Scholar
Digital Library
- Consultive Committee for Space Data Systems (CCSDS). Low density parity check codes for use in near-Earth and deep space applications (131.1-O-2 Orange Book), Sep. 2007.Google Scholar
- R. G. Gallager. Low density parity check codes. Transactions of the IRE Professional Group on Information Theory, IT-8: 2l--28, January 1962.Google Scholar
- A. Gill. Type-safe observable sharing in Haskell. In Proceedings of the 2009 ACM SIGPLAN Haskell Symposium, Sep 2009. Google Scholar
Digital Library
- A. Gill and G. Hutton. The worker/wrapper transformation. Journal of Functional Programming, 19 (2): 227--251, March 2009. Google Scholar
Digital Library
- A. Gill, T. Bull, A. Farmer, G. Kimmell, and E. Komp. Types and type families for hardware simulation and synthesis: The internals and externals of Kansas Lava. In Proceedings of Trends in Functional Programming, May 2010. Google Scholar
Digital Library
- A. Gill, T. Bull, D. DePardo, A. Farmer, E. Komp, and E. Perrins. Using functional programming to generate an LDPC forward error corrector. In IEEE Symposium on Field-Programmable Custom Computing Machines, May 2011. Google Scholar
Digital Library
- C. A. R. Hoare. Proof of correctness of data representations. Acta Informatica, 1: 271--281, 1972. ISSN 0001-5903. URL http://dx.doi.org/10.1007/BF00289507.10.1007/BF00289507.Google Scholar
Digital Library
- R. J. M. Hughes. A novel representation of lists and its application to the function "reverse". Information Processing Letters, 22 (3): 141--144, 1986. ISSN 0020-0190. DOI: 10.1016/0020-0190(86)90059-1. URL http://www.sciencedirect.com/science/article/B6V0F-482YK2S-3X/2/a570cfef125ec3167fe6bda9571e095f. Google Scholar
Digital Library
- G. Hutton. Programming in Haskell. Cambridge University Press, Jan. 2007. Google Scholar
Digital Library
- A. Jantsch and I. Sander. Models of computation and languages for embedded system design. IEE Proceedings on Computers and Digital Techniques, 152 (2): 114--129, March 2005. URL http://www.imit.kth.se/~axel/papers/2005/IEE-Proceedings.pdf. Special issue on Embedded Microelectronic Systems.Google Scholar
Cross Ref
- G. Jones and M. Sheeran. Circuit design in ruby. In Staunstrup, editor, Formal Methods for VLSI Design. Elsevier Science Publications, 1990.Google Scholar
- S. P. Jones and W. Partain. Measuring the effectiveness of a simple strictness analyser. In Hammond and O'Donnell, editors, Functional Programming, Springer Verlag Workshops in Computing, pages 201--220, 1993.Google Scholar
- J. Launchbury and T. Sheard. Warm fusion: deriving build-catas from recursive definitions. In FPCA '95: Proceedings of the 7th international conference on Functional programming languages and computer architecture, pages 314--323. ACM Press, 1995. Google Scholar
Digital Library
- D. Michie. Memo Functions and Machine Learning. Nature, 218: 19--22, 1968.Google Scholar
Cross Ref
- T. K. Moon. Error correction coding : mathematical methods and algorithms. Wiley-Interscience, Hoboken, N.J., 2005. ISBN 0471648000 (cloth). URL http://www.loc.gov/catdir/toc/ecip055/2004031019.html. Google Scholar
Digital Library
- C. Okasaki. Purely Functional Data Structures. Cambridge University Press, 1998. Google Scholar
Cross Ref
- S. P. Jones. Call-pattern specialisation for Haskell programs. In Proceedings of the 12th ACM SIGPLAN international conference on Functional programming, ICFP '07, pages 327--337, New York, NY, USA, 2007. ACM. ISBN 978-1-59593-815-2. http://doi.acm.org/10.1145/1291151.1291200. URL http://doi.acm.org/10.1145/1291151.1291200. Google Scholar
Digital Library
- S. L. Peyton Jones and J. Launchbury. Unboxed values as first class citizens in a non-strict functional language. In Proceedings of the 5th ACM conference on Functional programming languages and \ computer architecture, pages 636--666, New York, NY, USA, 1991. Springer-Verlag New York, Inc. ISBN 0-387-54396-1. Google Scholar
Digital Library
- M. Sheeran. mufp, a language for vlsi design. In LFP '84: Proceedings of the 1984 ACM Symposium on LISP and functional programming, pages 104--112, New York, NY, USA, 1984. ACM. ISBN 0-89791-142-3. http://doi.acm.org/10.1145/800055.802026. Google Scholar
Digital Library
- G. J. Sussman and G. L. Steele, Jr. An interpreter for extended lambda calculus. Technical report, Cambridge, MA, USA, 1975. Google Scholar
Digital Library
Index Terms
Deriving an efficient FPGA implementation of a low density parity check forward error corrector
Recommendations
Deriving an efficient FPGA implementation of a low density parity check forward error corrector
ICFP '11: Proceedings of the 16th ACM SIGPLAN international conference on Functional programmingCreating correct hardware is hard. Though there is much talk of using formal and semi-formal methods to develop designs and implementations, in practice most implementations are written without the support of any formal or semi-formal methodology. ...
A novel approach of error detection and correction for efficient energy in wireless networks
This paper presents a novel linear error detection and correction approach for single and multiple bit error codes called low complexity parity check (LCPC) code. The LCPC code detects and corrects consecutive and non-consecutive bit errors. It can be ...
An FPGA implementation of (3, 6)-regular low-density parity-check code decoder
Because of their excellent error-correcting performance, low-density parity-check (LDPC) codes have recently attracted a lot of attention. In this paper, we are interested in the practical LDPC code decoder hardware implementations. The direct fully ...







Comments