Ruby is a notation and design discipline intended for the development of regular integrated circuits and similar hardware and software architectures. The intention is to formalise the design techniques already used by practising engineers, making it easier to document design decisions, to compare alternative designs, and to produce proof of the correctness of an implementation.

The general idea is that circuits and circuit components are represented by relations between the signals at their inputs and outputs. Larger circuits are assembled from components by a suite of functions, such as relational composition and various combining forms that represent regular arrays of components. The algebraic properties of these functions, such as the associativity of composition, yield equations ("algebraic laws") between circuits with different structure but the same behaviour.

We advocate a process of design by refinement, where the initial specification of a circuit is a Ruby expression that describes its behaviour in gross terms which it would be unrealistic to implement directly. This specification is then rewritten using a succession of laws until it assumes a form in which all the relations are known, implementable components. The sequence of transformations applied to the specification can be read as a proof that the implementation meets the specification, so that the proof of correctness is constructed alongside the implementation and not afterwards.

One of the advantages of this level of description is that the algebraic laws do not depend on the particular relations which are named in them, but are properties of the combining forms. This means that the same development can be applicable to many different designs: in particular there is little difference between deriving a combinational circuit and a systolic clocked design. The techniques applicable to combinational circuits are also able to capture design steps such as "retiming" and "slowing".

An introduction to Ruby can be found in a short set of lecture notes from a summer school in Lyngby, Denmark in 1990.


On-line copies of various papers and reports about Ruby-related work are to be found in collections maintained by the following authors: If you have anything to contribute to this collection, please send me a pointer to it for me to put into this list.


There are various tools about which I ought to write something here.

Who's who?

You remember reading that Ruby paper by... now who was it? These people are likely candidates. You never know. If you have anything to contribute to this collection, please send me a pointer to it for me to put into this list.


A number of people working on Ruby and related things use an electronic mailing list which you can join by sending e-mail to email-groups@it.dtu.dk with the words "join ruby" as its Subject.

The name

No, Ruby is not an acronym. It does not stand for anything. Ask Mary Sheeran, it is all her fault.
Random Image
Random Image
Random Image