## Designing Arithmetic Circuits by Refinement in Ruby (1992)

Venue: | In Proc. Second International Conference on Mathematics of Program Construction, Lecture Notes in Computer Science |

Citations: | 26 - 0 self |

### BibTeX

@INPROCEEDINGS{Jones92designingarithmetic,

author = {Geraint Jones and Mary Sheeran},

title = {Designing Arithmetic Circuits by Refinement in Ruby},

booktitle = {In Proc. Second International Conference on Mathematics of Program Construction, Lecture Notes in Computer Science},

year = {1992},

pages = {208--232},

publisher = {Springer-Verlag}

}

### Years of Citing Articles

### OpenURL

### Abstract

. This paper presents in some detail the systematic derivation of a static bit-level parallel algorithm to implement multiplication of integers, that is to say one which might be implemented as an electronic circuit. The circuit is well known, but the derivation shows that its design can be seen as the consequence of decisions made (and explained) in terms of the abstract algorithm. The systematic derivation serves both as an explanation of the circuit, and as a demonstration that it is correct `by construction'. We believe that the technique is applicable to a wide range of similar algorithms. 1 Introduction We advocate a style of `design by calculation' for the very fine-grained parallel algorithms that are implemented as regular arrays of electronic circuits. The design of such circuits is particularly difficult because the implementation medium imposes severe constraints on what is possible and what is reasonably efficient. In consequence the details of the final implementation ha...

### Citations

1332 | Monads for functional programming
- Wadler
- 1993
(Show Context)
Citation Context ...one of weight 2, can represent numbers in f0; 1; 2; 3g. The corresponding abstraction relation is [bi ; bi] ; s+. We call this a `bit step' and abbreviate it to bbs+. bbs+ = [bi ; bi] ; s+ (bbs+)? = j=-=[0; 1; 2; 3]-=-j !(bbs+) = [sig; sig] A nit and a bit, each of weight one, can represent numbers in f\Gamma1; 0; 1g. This is a standard abstraction in arithmetic circuit design, and is usually called a trit . ti = [... |

218 | An introduction to the theory of lists
- Bird
- 1987
(Show Context)
Citation Context ...t the components of the row are then themselves in the form of representation changers. This is done using a row induction. Using the two lemmas (which can be checked by enumeration) [bi; bi ] ; + ` j=-=[0; 1; 2]-=-j and j[0; 1; 2]j ; s+ \Gamma1 ; fst bi ` snd bi ? it can be shown that fst bi ; (snd bi ; + ; s+ \Gamma1 ; fst bi \Gamma1 ) ` snd bi ? (12) This is then used as the condition for a row induction. fst... |

26 | Designing designing
- Jones
- 1979
(Show Context)
Citation Context ...] between the framework in which they work and ours. We represent by relations both abstract specifications of the desired behaviour of circuits and the components from which circuits are built. Ruby =-=[10]-=- is a language of operations on relations in which the combining forms correspond naturally to the ways that components are connected in our target implementations. The algebra of these combining form... |

21 | Relations and refinement in circuit design
- Jones, Sheeran
- 1990
(Show Context)
Citation Context ...domain type of abs is called the concrete type. This is really only a matter of convenience as this notion of abstraction is symmetric: if abs is an abstraction, so is abs \Gamma1 . (An earlier paper =-=[9]-=- of ours on refinement in Ruby incorrectly denies this.) The relations which we call abstractions are those that are called difunctionals [8]: all functions are abstractions, as are all inverses of fu... |

16 |
Designing regular array architectures using higher order functions
- Sheeran
- 1985
(Show Context)
Citation Context ...e found in a hardware designer's library of standard components, and are the parts from which the circuit would be built. The multiplier is not new; we first presented it much more informally in 1985 =-=[14]-=-. Here we present its derivation as a new account of how such a circuit might be designed. As well as explaining how a design came about, a derivation constitutes a proof that the implementation meets... |

15 |
A proof of the nonrestoring division algorithm and its implementation on an
- Verkest, Claesen, et al.
- 1994
(Show Context)
Citation Context ...es a proof that the implementation meets its specification. Usually such proofs are constructed after the circuit has been designed [16, 4], and independently of the method used to produce the design =-=[18]-=-. With that approach the design process offers no help in the proof, nor does the verification offer any assistance in the design. Even when circuits are synthesised mechanically from parametric desig... |

6 | A certain loss of identity
- Jones
- 1992
(Show Context)
Citation Context ... T , and it must be both a left type and a right type of R. Accordingly, we choose R 0 to be the type T 0 for which R : T 0 �� T 0 and R : T �� T ) T 0 : T �� T . This can be shown to be w=-=ell-defined [11]-=-. 2.5 Lists We collect data values into lists, and have structuring functions which construct relations to operate on them. The repeated parallel composition map n R relates two n-lists if their corre... |

5 | A calculational theory of pers as types
- Hutton, Voermans
- 1992
(Show Context)
Citation Context ...eertens [2, 13], although in contrast to their use of functions we choose to use relations as our abstract programs. This same choice has been made by the authors of [1] and there are close parallels =-=[8]-=- between the framework in which they work and ours. We represent by relations both abstract specifications of the desired behaviour of circuits and the components from which circuits are built. Ruby [... |

4 |
Formal Verification of Multipliers
- Simonis
- 1989
(Show Context)
Citation Context ...s well as explaining how a design came about, a derivation constitutes a proof that the implementation meets its specification. Usually such proofs are constructed after the circuit has been designed =-=[16, 4]-=-, and independently of the method used to produce the design [18]. With that approach the design process offers no help in the proof, nor does the verification offer any assistance in the design. Even... |

3 |
Applied Formal Methods for Correct VLSI Design
- Claesen
- 1989
(Show Context)
Citation Context ...Theta2)) ; + ; + \Gamma1 ; [L n b; \Theta2 n ] \Gamma1 = f equation 5g rown (snd(a ; \Theta2) ; + ; s+ \Gamma1 ; fst b \Gamma1 ) = f definition of s+ g rown (snd a ; s+ ; s+ \Gamma1 ; fst b \Gamma1 ) =-=(6)-=- Taking inverses on both sides of (5) and (6) and renaming variables gives [L n a; \Theta2 n ] ; + ; + \Gamma1 ; snd(L n b) \Gamma1 = col n (fst a ; s+ ; + \Gamma1 ; snd b \Gamma1 ) (7) and [L n a; \T... |

3 |
Tijmen Udding, Tom Verhoeff, and Jelio T. Yantchev. High-level design of an asynchronous packet-routing chip
- Josephs, Mak
(Show Context)
Citation Context ...perties like those of the arithmetic building-blocks which we used here. We are investigating, as an example, the derivation of routing circuits implemented as arrays of binary decisions and arbiters =-=[12]-=-. Acknowledgement. The work reported in this paper has been supported by grants from the UK Science and Engineering Research Council, and was done while Mary Sheeran held a Royal Society of Edinburgh ... |

2 |
A relational theory of datatypes, Unpublished
- Backhouse, Aarts, et al.
- 1992
(Show Context)
Citation Context ...h influenced by that of Bird and Meertens [2, 13], although in contrast to their use of functions we choose to use relations as our abstract programs. This same choice has been made by the authors of =-=[1]-=- and there are close parallels [8] between the framework in which they work and ours. We represent by relations both abstract specifications of the desired behaviour of circuits and the components fro... |

2 |
Proving an on-line multiplier with OBJ and TACHE: a practical experience
- Borrione, Salem
(Show Context)
Citation Context ...s well as explaining how a design came about, a derivation constitutes a proof that the implementation meets its specification. Usually such proofs are constructed after the circuit has been designed =-=[16, 4]-=-, and independently of the method used to produce the design [18]. With that approach the design process offers no help in the proof, nor does the verification offer any assistance in the design. Even... |

2 |
Verified synthesis functions for negabinary arithmetic hardware
- Chin
(Show Context)
Citation Context ...he proof, nor does the verification offer any assistance in the design. Even when circuits are synthesised mechanically from parametric designs, after-the-fact verification of the synthesis functions =-=[5]-=- gives no guidance on their construction. 2 Ruby We model the behaviour of circuits by binary relations, denoted in Ruby by expressions which have a form that suggests the shapes of the corresponding ... |

2 |
Meertens, Constructing a calculus of programs
- T
(Show Context)
Citation Context ...traints, it seems to us, make it easier to apply the systematic design methods which are being used in the development of software algorithms. Our work is much influenced by that of Bird and Meertens =-=[2, 13]-=-, although in contrast to their use of functions we choose to use relations as our abstract programs. This same choice has been made by the authors of [1] and there are close parallels [8] between the... |

1 |
A note on abstraction
- Sheeran
(Show Context)
Citation Context ... on refinement in Ruby incorrectly denies this.) The relations which we call abstractions are those that are called difunctionals [8]: all functions are abstractions, as are all inverses of functions =-=[15]-=-. Since we want to design arithmetic circuits, we will be considering abstractions onto the integers and subranges of the integers. The relations +, \Theta, s+ and sumn are all abstractions onto the i... |