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