Skip to main content
Log in

Correct hardware synthesis

An algebraic approach

  • Original Article
  • Published:
Acta Informatica Aims and scope Submit manuscript

Abstract

This paper presents an algebraic compilation approach to the correct synthesis (compilation into hardware) of a synchronous language with shared variables and parallelism. The synthesis process generates a hardware component that implements the source program by means of gradually reducing it into a highly parallel state-machine. The correctness of the compiler follows by construction from the correctness of the transformations involved in the synthesis process. Each transformation is proved sound from more basic algebraic laws of the source language; the laws are themselves formally derived from a denotational semantics expressed in the Unified Theories of Programming. The proposed approach is based on previous efforts that handle both software and hardware compilation, in a pure algebraic style, but the complexity of our source language demanded significant adaptations and extensions to the existing approaches.

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

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. Aubury, M., Page, I., Randall, G., Saul, J., Watts, R.: Handel-C language examples. Technical report, Oxford University Computing Laboratory, August (1996)

  2. Barrett, G.: Occam 3 reference manual. Inmos Ltd, March (1992)

  3. Berghofer, S., Strecker, M.: Extracting a formally verified, fully executable compiler from a proof assistant. Electron. Notes Theor. Comput. Sci. 82(2) (2003)

  4. Bowen J., He J., Page I.: Hardware Compilation, pp. 193–207. Elsevier, Amsterdam (1994)

    Google Scholar 

  5. Celoxica Ltd.: The Technology behind DK1, August 2002. Application Note AN 18 (2002)

  6. Davey B., Priestley H.: Introduction to Lattices and Order. Cambridge University Press, Cambridge (2002)

    MATH  Google Scholar 

  7. Dijkstra E.W.: A Discipline of Programming. Series in Automatic Computation. Prentice Hall, Englewood Cliffs (1976)

    Google Scholar 

  8. Duran, A., Cavalcanti, A. L. C., Sampaio, A. C. A.: An algebraic approach to the design of compilers for object-oriented languages. Formal Aspects Comput. (online first) (2009)

  9. Glesner, S., Geiß, R., Boesler, B.: Verified code generation for embedded systems. Electron. Notes Theor. Comput. Sci. 65(2) (2002)

  10. Goerigk, W., Dold, A., Gaul, T., Goos, G., Heberle, A., von Henke, F., Hoffmann, U., Langmaack, H., Pfeifer, H., Ruess, H., Zimmermann, W.: Compiler correctness and implementation verification: The Verifix approach, 1996. In: The Intermational Conference on Compiler Construction (poster session) (1996)

  11. Goerigk, W.: Towards acceptability of optimizations: An extended view of compiler correctness. Electron. Notes Theor. Comput. Sci. 65(2) (2002)

  12. Goos, G.: Compiler verification and compiler architecture. Electron. Notes Theor. Comput. Sci. 65(2) (2002)

  13. Harwood, W., Cavalcanti, A.L.C., Woodcock, J.C.P.: A theory of pointers for the UTP. In: Theoretical Aspects of Computing, vol. 5160 of Lecture Notes in Computer Science, pp. 141–155. Springer, Berlin (2008)

  14. He, J.: An algebraic approach to the Verilog programming. In: 10th Anniversary Colloquium of UNU/IIST, pp. 65–80 (2002)

  15. He, J., Bowen, J., Page, I.: A provably correct hardware implementation of Occam. Technical report, Computing Laboratory, Oxford University (1992)

  16. He J., Page I., Bowen J.: Towards a provably correct hardware implementation of Occam. In: Pierre, L. (eds) Correct Hardware Design and Verification Methods, pp. 214–225. Springer, Berlin (1993)

    Google Scholar 

  17. Hoare C.A.R.: Communicating sequential processes. Commun. ACM 26(1), 100–106 (1983)

    Article  MathSciNet  Google Scholar 

  18. Hoare C.A.R., He J., Sampaio A.: Normal form approach to compiler design. Acta Inform. 30(9), 701–739 (1993)

    Article  MathSciNet  MATH  Google Scholar 

  19. Hoare C.A.R., He J.: Unifying Theories of Programming. Prentice Hall, Englewood Cliffs (1998)

    Google Scholar 

  20. Iyoda, J., He, J.: A Prolog prototype for the synthesis of Verilog. Technical Report 237, International Institute for Software Technology, United Nations University (2001)

  21. Iyoda, J., He, J.: Towards and algebraic synthesis of Verilog. Technical Report 218, International Institute for Software Technology, United Nations University, July (2001)

  22. Klein G., Nipkow T.: Verified bytecode verifiers. Theor. Comput. Sci. 298(3), 583–626 (2003)

    Article  MathSciNet  MATH  Google Scholar 

  23. Strother Moore J.: A mechanically verified language implementation. J. Autom. Reason. 5(4), 461–492 (1989)

    Google Scholar 

  24. Oliva D.P.: Advice on Structuring Compiler Back Ends and Proving them Correct. College of Computer Science. Northeastern University, Boston (1994)

    Google Scholar 

  25. Perna, J.: A verified compiler for Handel-C. PhD thesis, Computer Science Department, The University of York (2009)

  26. Polak W.: Compiler Specification and Verification. Springer, New York (1981)

    MATH  Google Scholar 

  27. Qin, S., He, J., Qiu, Z., Zhang, N.: Hardware/software partitioning inVerilog. In: International Conference on Formal and Engineering Methods 2002, pp. 168–179. Springer, London (2002)

  28. Roscoe A.W., Hoare C.A.R.: The laws of Occam programming. Theor. Comput. Sci. 60(2), 177–229 (1988)

    Article  MathSciNet  MATH  Google Scholar 

  29. Sampaio A.: An Algebraic Approach to Compiler Design. World Scientific Publishing Company, Singapore (1997)

    Book  MATH  Google Scholar 

  30. Silva L., Sampaio A., Barros E.: A constructive approach to hardware/software partitioning. Formal Methods Syst. Des. 24(1), 45–90 (2004)

    Article  MATH  Google Scholar 

  31. Stark R.F., Borger E., Joachim S.: Java and the Java Virtual Machine: Definition, Verification, Validation with Cdrom. Springer, New York (2001)

    Google Scholar 

  32. Stepney S.: High Integrity Compilation: A Case Study. Prentice Hall, Englewood Cliffs (1993)

    MATH  Google Scholar 

  33. Stepney, S.: Incremental development of a high integrity compiler: experience from an industrial development. In: Third IEEE high-assurance systems engineering symposium (1998)

  34. Stepney S., Whitely D., Cooper D., Grant C.: A demonstrably correct compiler. Formal Aspects Comput. 3(1), 58–101 (1991)

    Article  Google Scholar 

  35. Thomas D.E., Moorby P.R.: The Verilog hardware description language (4th ed.). Kluwer, Norwell (1998)

    MATH  Google Scholar 

  36. Woodcock J., Davies J.: Using Z: Specification, Refinement, and Proof. Prentice-Hall, Upper Saddle River (1996)

    MATH  Google Scholar 

  37. Young W.D.: A mechanically verified code generator. J. Automat. Reason. 5(4), 493–518 (1989)

    Article  Google Scholar 

  38. Young, W.D.: A verified code generator for a subset of Gypsy. PhD thesis. Supervisor-Boyer, Robert S. and Supervisor-Moore, J. Strother (1988)

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Juan Perna.

Rights and permissions

Reprints and permissions

About this article

Cite this article

Perna, J., Woodcock, J., Sampaio, A. et al. Correct hardware synthesis. Acta Informatica 48, 363–396 (2011). https://doi.org/10.1007/s00236-011-0142-y

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s00236-011-0142-y

Keywords

Navigation