@Section(OVERVIEW) The first part of this chapter will describe the user interface of the microcoded graphics interpreter (arguments and data structure, environment, instruction format,...) ILAP (a procedure library), CIFVIEW, TED, SPICE, ESDL,... are all VLSI design tools available on APM. As ILAP, TED, CIFVIEW, and some of the others design tools are completely described in Departmental manual and User's guide, the software tool section will only provide information on how to get through to this packages on the APM. ESDL is the only tool that will slightly be described. @NewPage @Section(MICROCODED GRAPHICS INTERPRETER) This sections describes a simple universal interface between the applications programs, system utilities and user interface modules on one side and the graphics support component of the system on the other. Such structured hierarchical graphics interface should fit easily into a variety of applications through supporting structured hierarchical dependencies of workspaces for the individual applications while presenting a manageable and uniform front to the graphics support subsystem. Several similar approaches have been suggested in [Foley 82] and [Lantz 84] but with a limited number of practical implementation examples and less emphasis on their applications to general interactive computing environment. Recently, work has been started on defining a standard for a similar type of interface: Programmer's Hierachical Interactive Graphics Standard (PHIGS). The interface is a directed graph, residing in the main system memory where client processes in the system can manipulate their own allocated sections on one side and a separate evaluation process caters for the creations of the resulting images on the other as shown in a paraphrase of a windowing system below. In other words, the evaluation process can be viewed as a function taking the graph as an argument and producing the image as a value. The top part of the graph is usually under the supervision of the system window manager, while its exit edges provide linkage to applications subgraphs running within their allocated subwindows. Such hierarchy may reoccur recursively where an application may have its own subwindow manager maintaining its menu, workspace and other areas of activity. The image is computed through a depth-first scan of the descriptor structure, where for each of the nodes, its local evaluation environmnent is saved, prior to following any of the downwards edges and subsequently restored on return. The ordering of the exit edges defines the eventual overlap of the graphical objects created by their execution. Evaluation is terminated after the execution along the last vertical edge of the node, at which it was invoked, thus allowing nested invokation of selected substructures. The speed of generating new images is strongly dependent on the complexity of the graph and on whether the evaluation process has to share the processor with other processes, or it can have its own customised evaluation engine. Depending on certain properties of the graph, like being acyclic or even a tree, various optimisation techniques allow for only parts of the graph to be scanned, still yielding a valid picture. @subsection(Graph construction) The graph is constucted out of fixed-format nodes with two exit edges: a vertical and a horizontal one. The vertical edge is used to represent image hierarchy and the horizontal edge supports linkage of multiple image components at the same level of hierarchy. Leaf nodes in such a directed binary graph i.e. those with no vertical exit edges are generally responsible for the final drawing operations, and they can involve operations like filling a polygon, drawing a straight line, drawing a string of characters etc. These are executed with the necessary current environmental attributes like: colour, font, scaling, clip boundaries ect. Some of the drawing operations cna have impact on the environment, like deposition of character strings moves the working coordinates along the string baseline. Non-leaf nodes are generally responsible for the composition of the picture out of subordinate ones as well as for the necessary modifications of the environment, like coordinate manipulations, colour and font selection etc. Some of these operations, like moving or scaling are cummulative along the vertical paths in the graph; others like font or colour selection are nested. There are also some genreral control nodes, which allow the user to exercise control over the evaluation process. @Paragraph(Format of the node) Each binary node consists of 11 consecutive 16-bit half-words, where the first tow bytes contain the instruction code and the execution flags of the node. They are followed by a long-word of argument field, and then two long-words, where on exit, the evaluation process deposits the relative dimensions of the bounding box for the image subordinate to the node. These dimensions are relative to the environmental working (workX,workY) coordinates on the entry to the node. The argument field can contain a 32-bit pointer, two 16-bit geometrical or indexing arguments, or for some single-argument operations only the first half-word is taken into account. The last two long-words contain downwords and rightwards pointers of the exit edges, with execution flags Down and Right indicating their validity. Flat pointer when 1 represents indirection in fetching of arguments. We will describe further details of the nodes while presenting a number of example applications. In all illustrations, nodes will be denoted with their associated opcodes and those of the flags, which are set to 1. Values of 1 for the Down and Right flags are indicated by the presence of the corresponding exit edges. @Paragraph(Example 1: A leaf cell editor for VLSI design) VLSI design systems are geared towards the management of complex, integrated circuit designs. By the end of this decade, using available technology, Mead [Mead 80] compares the design of integrated circuits with the complex task of designing an urban density road network the size oa an entrire continent. The scope for error in such a project, if no proper tools are available, is immense. Current fabrication technology also imposes a constraint on the number of iterations designers can make to their circuit layouts as financial expenditure increases on each iteration. Management is currently handled by a process of abstraction, i.e. of hierarchical structuring of the chip design into manageable "cells." Each cell can in turn be individually created with geometric design rule checking applied at each separate stage. A composition tool, either graphic or textual, is then applied to put together individually designed cells and form the overall design. [Gray 79], [Buchanan 80], [Whitney 81], [Rees 83] have proposed a methodology of circuit design based on such a hierarchical approach. Recognising that there is a striking similarity between structured programming techniques and VLSI design, we can apply the ideas of MODULARITY, (the partition of the design into manageable "cells" with well defined functions and interfaces), HIERARCHY, (where modularity extends over partitioned levels of the design), and ITERATION (the repetition of basic modules in both one and two dimensions). Using this design methodology, the complete design is created from a "top down" partition and a "bottom up" integration, with verification and simulation applied at various levels of the layout. CAD may play an important role at all levels of the hierarchy, from composition tools at root nodes of the design system down to "leaf cell" graphics editors. In this section, we provide a short presentation of an editor for structured design of VLSI leaf cells which has been created around the experimental graphics interface being presented in this paper. The editor is a component of a major design [Rees 83] which comprises a high level composition language, on-line geometric design rule checking and automatic stretching and compaction of composition cells. We outline some of the capabilities of the editor, with particular emphasis on the ease with which we can produce a leaf cell circuit design when tools such as the appropriate representing data structure and its efficient interpreter are available. @b[Editor design environment] There are certain features of a circuit design environment which are fundamental to the user. It must exhibit: fast interactive response, the ability to view the design at arbitrary geometric scales (window management and multiple view ports) together with a clean and comprehensive user interface. The designer should feel intimately coupled to his design environment, with both control and the ability to perform structured operations such as viewing, panning and zooming at the touch of a button. The editor is menu driven, and uses a mouse as the manipulating device. The mouse is used for pointing and editing individual objects on the screen, or as an area selector where whole groups of objects are operated upon. The menu consists of representations of components the designer can paint with (wires, transistors, contacts) together with a set of high level functions (view, move, clone, input, ouput etc.) which he can use to operate upon and compose design layouts. While operating within its own allocated window, the editor is a multiwindow sytem in itself, with one menu and potentially more than one workspace subwindow. @b[Building blocks] The basic VLSI building blocks are wires, transistors and contacts. Using these primitive components it is possible to construct very large scale circuit designs. Wires are conventionally denoted as occupying certain "layers" on the silicon. For simple example of NMOS technology, these layers are polysilicon, diffusion and meta. Simple VLSI constructs, like transistors or contacts are overlaps of the approriately sized and positioned "technological" boxes. Using these objects more complex units such as the "RAM cell" presented in the illustration can be constructed. The fabrication process, however, still deals with a "flattened" design, and during fabrication objects such as contacts and transistors lose their hierarchical structure and become merely "etchings" carved out of the individual layers on the silicon wafer. The colours selected are conventional circuit design, and the video planes correspond directly with mask layers for separate technological phases of the circuit production process. @B[Simple structures] There are two basic subwindows in the editor workspace area: one containing the menu, and the other providing the design workspace. The menu is a horizontally linked structure of menu items, where graphical symbols are hierarchical structures themselves allowing for rotation, changes of technological layers and dimensions of objects prior to planting them into the design. The workspace can contain several subwindows, each offering an indepenently controlled viewport into the design. Node Move(X,Y) modifies current environmental working coordinates bu (X,Y), prior to passing them down the vertical edge. Nodes Box(X,Y) and Line(X,Y) draw a box and a line of size (X