Java-Based OCT Documentation


written by Francis Chan, Mark Spiller


Introduction

OCT is a data manager for VLSI/CAD applications. It has been a major component of the Berkeley CAD framework that has been used at Berkeley and other sites since the 1980s.

The basic unit in a design is the cell. A cell is the portion of a design that the user wishes to consider as a unit. A cell may have many views, such as schematic, symbolic, physical, simulation, etc.. Facets exist beneath the level of views. They contain instances of other cells, which may in turn contain instances of other cells. Each view has a facet named "contents" which contains the actual definition of the view and various application-dependent "interface" facets.

The only facet that OCT has any explicit knowledge about is the contents facet, which is the facet that defines the name and number of external (formal) terminals a view has. When an instance of a view or a new interface facet is created , the contents facet of that view is consulted to find out what terminals the instance or facet inherits from the view. The contents facet must be created before any other facet is created and before any instance of that view is created.

The facet consists of a collection of objects that are related by attaching one to another. The basic OCT system allows OctObject such as bags, boxes, terminals, etc. to be arbitrarily attached to each other. The main mechanism of traversing these relationships is by InitGenContents (for generating the contents vector of objects attached) and InitGenContainers (for generating the containers vector of objects which the object is attached to).

OCT imposes no restriction on the interpretation of data and few restrictions on the organization of OctObjects. It is left to the application developer to implement policies (possible 244 project) to assign meanings to the organization and structure of data represented using OCT.



A example of the organization of an OCT structure.

Implementation Description

While we tried to retain as much of the original flavor of OCT as possible, this implementation has differed in many ways from the original OCT system. New concepts, structures and organizations have been introduced and, at the same time, unsuitable features have been obsolesced.

The three main implementational differences of (Java) OCT and the original OCT are:

  1. The client/user code is written it in Java, an object-oriented programming language, as opposed to C, which is a procedural language. Object-oriented design and organization can and has been utilized.


  2. An object-oriented database is used as a back-end (for load, save, queries, etc.) , as opposed to a UNIX file server.


  3. Operations are performed over the network, a lot of emphasis is put on protocol efficiency and minimization of network transactions.
    Details of the server protocol can be found at:

    http://www-cad.eecs.berkeley.edu/~mds/protocol.html


We will continue to work on improving the features and robustness of this package as further revisions on the organization and functionality extension are made.

Reference

OCTTOOLS-5.2 Reference Manual, University of California at Berkeley, 1993.



Modified: Oct 16, 1996
Feedback: ( fchan@eecs.berkeley.edu), ( mds@eecs.berkeley.edu)