University of Cambridge

Logic
&
Semantics

High-level Circuit Design

By Eric C. R. Hehner (24th April 1998)

(Work with Theodore S. Novell and Richard F. Paige)

We present two new ways to implement ordinary programs with logic gates. One, like imperative programs, has an associated memory to store state; the other, like functional programs, passes the state from one component to the next. Circuit design can be done more effectively by describing the function that a circuit is intended to perform than by describing a circuit that is intended to perform that function. We use a standard programming language like Pascal or CSP, not to describe circuits, but to describe algorithms. The resulting circuits are produce automatically; they behave according to the programs, and have the same structure as the programs. For timing we use local delays, rather than a global clock (synchronous) or local handshaking (asynchronous). We give a formal semantics for both programs and circuits in order to prove our programs correct. by simulation we also demonstrate that the circuits perform favourably compared to others.

LS Home page or Talks in 1997