| 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.
 PublicationsOn-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. Graham Hutton, Nottingham, UK
 Geraint Jones, Oxford, UK
 Wayne Luk, Imperial College London, UK
 Richard McPhee, Oxford, UK
 Mary Sheeran, Göteborg, SE
 The Ruby group at DTU, Lyngby, DK 
 ToolsThere 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.ContactsA 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 nameNo, Ruby is not an acronym.
It does not stand for anything.
Ask Mary Sheeran,
it is all her fault. |