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.
Access this article
We’re sorry, something doesn't seem to be working properly.
Please try refreshing the page. If that doesn't work, please contact support so we can address the problem.
Similar content being viewed by others
References
Aubury, M., Page, I., Randall, G., Saul, J., Watts, R.: Handel-C language examples. Technical report, Oxford University Computing Laboratory, August (1996)
Barrett, G.: Occam 3 reference manual. Inmos Ltd, March (1992)
Berghofer, S., Strecker, M.: Extracting a formally verified, fully executable compiler from a proof assistant. Electron. Notes Theor. Comput. Sci. 82(2) (2003)
Bowen J., He J., Page I.: Hardware Compilation, pp. 193–207. Elsevier, Amsterdam (1994)
Celoxica Ltd.: The Technology behind DK1, August 2002. Application Note AN 18 (2002)
Davey B., Priestley H.: Introduction to Lattices and Order. Cambridge University Press, Cambridge (2002)
Dijkstra E.W.: A Discipline of Programming. Series in Automatic Computation. Prentice Hall, Englewood Cliffs (1976)
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)
Glesner, S., Geiß, R., Boesler, B.: Verified code generation for embedded systems. Electron. Notes Theor. Comput. Sci. 65(2) (2002)
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)
Goerigk, W.: Towards acceptability of optimizations: An extended view of compiler correctness. Electron. Notes Theor. Comput. Sci. 65(2) (2002)
Goos, G.: Compiler verification and compiler architecture. Electron. Notes Theor. Comput. Sci. 65(2) (2002)
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)
He, J.: An algebraic approach to the Verilog programming. In: 10th Anniversary Colloquium of UNU/IIST, pp. 65–80 (2002)
He, J., Bowen, J., Page, I.: A provably correct hardware implementation of Occam. Technical report, Computing Laboratory, Oxford University (1992)
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)
Hoare C.A.R.: Communicating sequential processes. Commun. ACM 26(1), 100–106 (1983)
Hoare C.A.R., He J., Sampaio A.: Normal form approach to compiler design. Acta Inform. 30(9), 701–739 (1993)
Hoare C.A.R., He J.: Unifying Theories of Programming. Prentice Hall, Englewood Cliffs (1998)
Iyoda, J., He, J.: A Prolog prototype for the synthesis of Verilog. Technical Report 237, International Institute for Software Technology, United Nations University (2001)
Iyoda, J., He, J.: Towards and algebraic synthesis of Verilog. Technical Report 218, International Institute for Software Technology, United Nations University, July (2001)
Klein G., Nipkow T.: Verified bytecode verifiers. Theor. Comput. Sci. 298(3), 583–626 (2003)
Strother Moore J.: A mechanically verified language implementation. J. Autom. Reason. 5(4), 461–492 (1989)
Oliva D.P.: Advice on Structuring Compiler Back Ends and Proving them Correct. College of Computer Science. Northeastern University, Boston (1994)
Perna, J.: A verified compiler for Handel-C. PhD thesis, Computer Science Department, The University of York (2009)
Polak W.: Compiler Specification and Verification. Springer, New York (1981)
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)
Roscoe A.W., Hoare C.A.R.: The laws of Occam programming. Theor. Comput. Sci. 60(2), 177–229 (1988)
Sampaio A.: An Algebraic Approach to Compiler Design. World Scientific Publishing Company, Singapore (1997)
Silva L., Sampaio A., Barros E.: A constructive approach to hardware/software partitioning. Formal Methods Syst. Des. 24(1), 45–90 (2004)
Stark R.F., Borger E., Joachim S.: Java and the Java Virtual Machine: Definition, Verification, Validation with Cdrom. Springer, New York (2001)
Stepney S.: High Integrity Compilation: A Case Study. Prentice Hall, Englewood Cliffs (1993)
Stepney, S.: Incremental development of a high integrity compiler: experience from an industrial development. In: Third IEEE high-assurance systems engineering symposium (1998)
Stepney S., Whitely D., Cooper D., Grant C.: A demonstrably correct compiler. Formal Aspects Comput. 3(1), 58–101 (1991)
Thomas D.E., Moorby P.R.: The Verilog hardware description language (4th ed.). Kluwer, Norwell (1998)
Woodcock J., Davies J.: Using Z: Specification, Refinement, and Proof. Prentice-Hall, Upper Saddle River (1996)
Young W.D.: A mechanically verified code generator. J. Automat. Reason. 5(4), 493–518 (1989)
Young, W.D.: A verified code generator for a subset of Gypsy. PhD thesis. Supervisor-Boyer, Robert S. and Supervisor-Moore, J. Strother (1988)
Author information
Authors and Affiliations
Corresponding author
Rights 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
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s00236-011-0142-y