included in the last appendix (MOSIS design rules), where the use of colour is really essential. However, it is unfortunate that colour has not been used for selected layout examples in the rest of the text, where the judicious use of colour could greatly enhance comprehension, especially for novice designers. The usual reason for restriction to black and white is that of reducing cost, which is important for a student text, but in this case the book is not as cheap as some competing texts, which do make wider use of colour illustration. There are two major omissions: design for test (including testability) and analogue MOS design. These topics are not treated at all; they should, in my opinion, feature in any VLSI course because of their fundamental importance, but especially at the introductory level, for reasons of awareness alone. Gate array technology is not considered either. There are some minor misprints/errors which are probably inevitable in any first edition. The idiom is generally that of the VLSI university scene in the USA, with specific reference to tools, services and projects which may well only be of direct relevance in that context. Further, there are places where a knowledge of this background (or at least direct reference to a copy of the classic Mead and Conway text) is an advantage, and I wondered whether a first-time student might not have difficulty with some of the material without such assistance. I thought that the chapter on logic design was good. Systems design was treated as a collection of example designs, mostly done over the period 1982-83 by US students for submission to MOSIS in NMOS technology. Memory systems are not well treated because of the exclusion of analogue design issues and the omission of special-purpose memory architectures (e.g. the so-called smart memories). The book could also have benefitted from a clear expos~ of current research problems, as a stimulus to student project material. The last chapter on VLSI CAD tools gives the text a distinctive mark and was a good idea. Unfortunately, the treatment is neither detailed enough
vol
10
no
8
october 7986
Design book useful beyondMODULA-2 Arthur Sale
"Modula-2 discipline and design" Addison-Wesley, Wokingham, UK (1986) £13.95 pp 464 Discipline and a knowledge of sound design technique are the hall marks of good engineering. In covering these topics, and in covering them well, Modula-2 discipline and design is far more than an introductory text about the MODULA-2 programming language - - it is an effective introduction to software engineering. Although there is little in the book directly related to realtime or embedded systems programming, the characteristics of MODULA-2 and the emphasis on the production of correct programs make this a very good first text for both students and practising engineers wishing to acquire skill in realtime programming. The author has taken care to place the learning tasks to be carried out in context, and he explains well by analogy what is involved in learning to program. The early chapters of the book lay out carefully the MODULA-2 features needed to deal with small programming tasks. In these early chapters, the author is careful to explain the order in which programs are developed using stepwise refinement. He also shows the difference between good programming style and 'hacking'. The presentation of design and program refinement and the practical constraints to look out for is good. The glimpses of insight I have gained to provide a standalone technical source, nor is the coverage complete enough to constitute a good overview. Instead, some topics have been selected and have then been given very variable length of treatment. Thus, the later half of the chapter is devoted to routing algorithms, whilst the earlier half attempts to cover CIF, design rule checking, circuit extraction and simulation; there is no discussion of placement algorithms, SPICE, design capture, data modelling etc, which I
over many years of teaching and using PASCAL are presented here clearly and coherently by the author. Parameterless procedures and the idea of proof of program correctness are both introduced early on, to good effect, and used to present the topic of program design. The difficulty of proving a program correct is admitted, but stating a proof as the solution to a problem and then implementing it (in a number of ways) is used to give a'handle' to the design problem. The middle part of the book is more conventional, dealing with language features with little on how to use them. The closing chapters present substantial programs to inculcate good practice and then present the practical aspects of two MODULA-2 implementations (Apple Macintosh and Cambridge Unix 4.1/ 4.2BSD). This, and the way in which the use of editing etc. was introduced in the early chapters, gives the reader a feel for the way the language fits into the system environment. I would have liked to see some graphical formalism used as well, structure diagrams for example, but this might well have made the book too long. Nonetheless I would use the book without hesitation for a beginning class in MODULA-2 programming. I recommend the book highly.
David Jenkins Paisley College of Technology, UK would have thought were equally important areas. In summary, this is a book which can be recommended for use in introductory VLSI design courses. It is readable, has good diagrams and fair coverage, but needs supplementing in the areas of design for test and analogue design. The price is a bit high, and the text is not suitable for advanced work.
David Renshaw University of Edinburgh, UK
455