Towards a Provably Correct Hardware Implementation of Occam

This paper shows how to compile a program written in a subset of occam into a normal form suitable for further processing into a netlist of components which may be loaded into a Field-Programmable Gate Array (FPGA). A simple state-machine model is adopted for specifying the behaviour of a synchronous circuit where the observable includes the state of the control path and the data path of the circuit. We identify the behaviour of a circuit with a program consisting of a very restricted subset of occam. Algebraic laws are used to facilitate the transformation from a program into a normal form. The compiling specification is presented as a set of theorems that must be proved correct with respect to these laws. A rapid prototype compiler in the form of a logic program may be implemented from these theorems.

[1]  Jifeng He,et al.  A Provably Correct Hardware Implementation of Occam , 1992 .

[2]  C. A. R. Hoare,et al.  An Algebraic Approach to Verifiable Compiling Specification and Prototyping of the Procos Level 0 Programming Language , 1990 .

[3]  G. V. Collis,et al.  Occam as a hardware description language , 1987, Softw. Eng. J..

[4]  Inmos Limited,et al.  OCCAM 2 reference manual , 1988 .

[5]  Jukka Paakki Prolog in Practical Compiler Writing , 1991, Comput. J..

[6]  Jonathan P. Bowen From Programs to Object Code using Logic and Logic Programming , 1991, Code Generation.

[7]  William F. Clocksin,et al.  Programming in Prolog , 1987, Springer Berlin Heidelberg.

[8]  C. A. R. Hoare,et al.  An Algebraic Approach to Verifiable Compiling Specification and Prototyping of the Procos Level 0 Programming Language , 1990 .

[9]  C. A. R. Hoare Programs are predicates , 1984, Philosophical Transactions of the Royal Society of London. Series A, Mathematical and Physical Sciences.

[10]  Kung-Kiu Lau,et al.  Logic Program Synthesis and Transformation , 1992, Workshops in Computing.

[11]  Geoffrey Brown,et al.  Towards Truly Delay-Insensitive Circuit Realizations of Process Algebras , 1991 .

[12]  C. A. R. Hoare,et al.  Developments in concurrency and communication , 1991 .

[13]  C. A. R. Hoare,et al.  The Laws of Occam Programming , 1988, Theor. Comput. Sci..

[14]  Jifeng He,et al.  Time interval semantics and implementation of a real-time programming language , 1992, Fourth Euromicro workshop on Real-Time Systems.

[15]  David May,et al.  Compiling Occam into silicon , 1991 .

[16]  Jonathan P. Bowen,et al.  Formal Methods and Software Safety , 1992 .

[17]  Peter B. Reintjes A Set of Tools for VHDL Design , 1991, Logic Programming Summer School.

[18]  Anders P. Ravn,et al.  Developing Correct Systems , 1993, Fifth Euromicro Workshop on Real-Time Systems.

[19]  Alain J. Martin Programming in VLSI: from communicating processes to delay-insensitive circuits , 1991 .

[20]  Marly Roncken,et al.  The VLSI-programming language Tangram and its translation into handshake circuits , 1991, Proceedings of the European Conference on Design Automation..