skip to main content
tutorial

Semantics Driven Hardware Design, Implementation, and Verification with ReWire

Published:04 June 2015Publication History
Skip Abstract Section

Abstract

There is no such thing as high assurance without high assurance hardware. High assurance hardware is essential, because any and all high assurance systems ultimately depend on hardware that conforms to, and does not undermine, critical system properties and invariants. And yet, high assurance hardware development is stymied by the conceptual gap between formal methods and hardware description languages used by engineers. This paper presents ReWire, a functional programming language providing a suitable foundation for formal verification of hardware designs, and a compiler for that language that translates high-level, semantics-driven designs directly into working hardware. ReWire's design and implementation are presented, along with a case study in the design of a secure multicore processor, demonstrating both ReWire's expressiveness as a programming language and its power as a framework for formal, high-level reasoning about hardware systems.

References

  1. PicoBlaze 8-bit Embedded Microcontroller User Guide. Xilinx, Inc., 2011.Google ScholarGoogle Scholar
  2. C. Baaij and J. Kuper. Using rewriting to synthesize functional languages to digital circuits. In Trends in Fun. Prog., volume 8322 of LNCS, pages 17--33, 2014.Google ScholarGoogle Scholar
  3. P. Bjesse, K. Claessen, and M. Sheeran. Lava: Hardware design in Haskell. In ICFP '98, pages 174--184, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. D. Cock, G. Klein, and T. Sewell. Secure microkernels, state monads and scalable refinement. In Proceedings of the 21st International Conference on Theorem Proving in Higher Order Logics, TPHOLs '08, pages 167--182, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. S. A. Edwards. The challenges of synthesizing hardware from C-like languages. IEEE Design and Test of Computers, 23(5):375--386, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. S. A. Edwards. A finer functional Fibonacci on a fast FPGA. Technical Report CUCS-005-13, Department of Computer Science, Columbia University, February 2013.Google ScholarGoogle Scholar
  7. A. Erosa and L. J. Hendren. Taming control flow: A structured approach to eliminating goto statements. In In Proceedings of 1994 IEEE International Conference on Computer Languages, pages 229--240. IEEE Computer Society Press, 1994.Google ScholarGoogle ScholarCross RefCross Ref
  8. A. Fox and M. O. Myreen. A trustworthy monadic formalization of the ARMv7 instruction set architecture. In Proceedings of the First International Conference on Interactive Theorem Proving, ITP'10, pages 243--258, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. N. George, H. Lee, D. Novo, T. Rompf, K. Brown, A. Sujeeth, M. Odersky, K. Olukotun, and P. Ienne. Hardware system synthesis from domain-specific languages. In Proc. of 24th Int. Conf. on Field Prog. Logic and App. (FPL '14).Google ScholarGoogle Scholar
  10. A. Gill. Declarative FPGA circuit synthesis using Kansas Lava. In ERSA '11, 2011.Google ScholarGoogle Scholar
  11. A. Gill. Domain-specific languages and code synthesis using Haskell. ACM Queue, 12(4):30:30--30:43, Apr. 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. C. E. Giménez. Un Calcul De Constructions Infinies Et Son Application A La Verification De Systemes Communicants. PhD thesis, L'École Normale Supérieure de Lyon, 1996.Google ScholarGoogle Scholar
  13. J. A. Goguen and J. Meseguer. Security policies and security models. In Proc. of the 1982 Symposium on Security and Privacy (SSP '82), pages 11--20. IEEE Computer Society Press, 1990.Google ScholarGoogle Scholar
  14. S. Goncharov and L. Schröder. A coinductive calculus for asynchronous side-effecting processes. In Proceedings of the 18th International Conference on Fundamentals of Computation Theory, pages 276--287, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. W. L. Harrison and J. Hook. Achieving information flow security through monadic control of effects. Journal of Computer Security, 17(5):599--653, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. W. L. Harrison and A. Procter. Cheap (but functional) threads. 44 pages. Accepted for publication in Higher-Order and Symbolic Computation.Google ScholarGoogle Scholar
  17. W. L. Harrison, A. Procter, and G. Allwein. The confinement problem in the presence of faults. In Proceedings of the 14th International Conference on Formal Engineering Methods, ICFEM'12, pages 182--197, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. M. P. Jones. Typing Haskell in Haskell. In Proceedings of the 1999 Haskell Workshop, pages 68--78, Paris, France, 21--24 Oct. 1999.Google ScholarGoogle Scholar
  19. H. Lee, K. Brown, A. Sujeeth, H. Chafi, T. Rompf, M. Odersky, and K. Olukotun. Implementing domain-specific languages for heterogeneous parallel computing. IEEE Micro, 31(5):42--53, Sept. 2011. ISSN 0272-1732. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. X. Li, M. Tiwari, J. K. Oberg, V. Kashyap, F. T. Chong, T. Sherwood, and B. Hardekopf. Caisson: a hardware description language for secure information flow. In Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI '11, pages 109--120, New York, NY, USA, 2011. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. S. Liang. Modular Monadic Semantics and Compilation. PhD thesis, Yale University, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. E. Moggi. Notions of computation and monads. Information and Computation, 93(1):55--92, July 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. G. J. Popek and R. P. Goldberg. Formal requirements for virtualizable third generation architectures. Commun. ACM, 17(7):412--421, July 1974. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. A. Procter. Semantics-Driven Design and Implementation of High-Assurance Hardware. PhD thesis, University of Missouri, 2014.Google ScholarGoogle Scholar
  25. A. Procter, W. L. Harrison, I. Graves, M. Becchi, and G. Allwein. Online supplement accompanying "Semantics-driven hardware design, implementation, and verification with ReWire". URL http://adamprocter.com/lctes15.Google ScholarGoogle Scholar
  26. A. Procter, W. L. Harrison, I. Graves, M. Becchi, and G. Allwein. Semantics-directed machine architecture in ReWire. In Proceedings of the International Conference on Field-Programmable Technology (ICFPT'13), pages 446--449, December 2013.Google ScholarGoogle ScholarCross RefCross Ref
  27. J. Reynolds. Definitional interpreters for higher order programming languages. ACM Conference Proceedings, pages 717--740, 1972. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. J. Rushby. Design and verification of secure systems. In Proceedings of the ACM Symposium on Operating System Principles, volume 15, pages 12--21, 1981. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. I. Sander and A. Jantsch. System modeling and transformational design refinement in ForSyDe. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 23(1):17--32, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. S. Sarkar, P. Sewell, F. Z. Nardelli, S. Owens, T. Ridge, T. Braibant, M. O. Myreen, and J. Alglave. The semantics of x86-CC multiprocessor machine code. In Proceedings of the 36th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL '09, pages 379--391, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. W. Taha and T. Sheard. MetaML and multi-stage programming with explicit annotations. Theoretical Computer Science, 248(12):211--242, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. D. Volpano, C. Irvine, and G. Smith. A sound type system for secure flow analysis. Journal of Computer Security, 4(2--3):167--187, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. M. Wilding, D. Greve, R. Richards, and D. Hardin. Formal verification of partition management for the AAMP7G microprocessor. In D. S. Hardin, editor, Design and Verification of Microprocessor Systems for High-Assurance Applications, pages 175--191. 2010.Google ScholarGoogle ScholarCross RefCross Ref

Index Terms

  1. Semantics Driven Hardware Design, Implementation, and Verification with ReWire

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in

        Full Access

        • Published in

          cover image ACM SIGPLAN Notices
          ACM SIGPLAN Notices  Volume 50, Issue 5
          LCTES '15
          May 2015
          141 pages
          ISSN:0362-1340
          EISSN:1558-1160
          DOI:10.1145/2808704
          • Editor:
          • Andy Gill
          Issue’s Table of Contents
          • cover image ACM Conferences
            LCTES'15: Proceedings of the 16th ACM SIGPLAN/SIGBED Conference on Languages, Compilers and Tools for Embedded Systems 2015 CD-ROM
            June 2015
            149 pages
            ISBN:9781450332576
            DOI:10.1145/2670529

          Copyright © 2015 ACM

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 4 June 2015

          Check for updates

          Qualifiers

          • tutorial
          • Research
          • Refereed limited

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader
        About Cookies On This Site

        We use cookies to ensure that we give you the best experience on our website.

        Learn more

        Got it!