Programming Research Group Technical Report TR-10-90

Designing circuits by calculation

Geraint Jones

April 1990, 92pp.

The business of making integrated circuits is a peculiarly difficult engineering task largely because it spans such a wide range of levels of abstraction, from vague specification to silicon. A good design process must necessarily insulate each step of the design -- as far as is possible -- from the concerns that are most readily understood and tackled at other levels. As used here, the word designing simply means making progress down the spectrum from specification to implementation.

On the whole, we are not going to be concerned with details of implementation like gates and transistors. Neither are we going to be concerned with the business of capturing a precise specification. So, in these notes, the word circuit means no more than the sort of algorithm that might well be implemented by something like an integrated circuit or a collection of them. Designing circuits is the business of filling in the gap between specification capture and circuit fabrication.

It is quite common for the design process to be realized by a number of steps passing from one level to a lower level, where the designer "invents" the implementation at the next level and then proves -- after the fact -- that this new design does indeed implement the specification at the preceding level. On the other hand, some steps of the design process are implemented by a purely mechanical transformation of specification into implementation: for example, the turning of a set of masks into a pattern on silicon. These can be thought of as compilation steps, and require no ingenuity or invention. Indeed, they are usually tedious and are best left to be done by a machine. The use of the word calculation in these notes means stages in the design process which proceed forwards, without large inventive leaps and subsequent proofs of correctness, but without necessarily being purely mechanical.


This paper is available as a 250,927 byte compressed PostScript file.