Software Structuring Principles for VLSI CAD.
MASSACHUSETTS INST OF TECH CAMBRIDGE ARTIFICIAL INTELLIGENCE LAB
Pagination or Media Count:
VLSI CAD systems are typically large and undergo frequent changes. A frustrating aspect of these changes is that so little of the old available programs can be reused. The reason is that it takes too much time and effort to find the reuseable pieces and recast them for the new use. We believe that such systems should be designed for reusability by anticipating change. Our thesis is that this goal can be achieved by designing the software as layers of problem oriented languages, which are implemented by suitably extending a base language. A language layer rarely needs to be adapted to changes, only the application i.e. algorithm needs to be changed. We illustrate this methodology with respect to VLSI CAD programs and a particular language layer a language for handling networks. A concept shared by many CAD programs is that of networks consisting of components and their interconnects. We capture this common part by providing a language for handling network problems. Such a language consists of our base language EC or Lisp plus data types, operations and control structures that are relevant to network problems. The network language is but one of several languages used other languages we use deal with sets, two dimensional layout structures, waveforms, etc. The discussion of the network language illustrates this technique. We present two different implementation of the above philosophy. The first uses UNIX and Enhanced C, a set oriented language supporting data abstraction based on C. The second approach uses Common Lisp on a Lisp machine. In each case, we describe the basic technique and its applications. We concluded by comparing the two approaches.
- Computer Programming and Software