Java-Based OCT - A CAD Data Manager
written by Francis Chan
Objective
OCT is a data manager for VLSI/CAD applications. It has been a major component
of the Berkeley CAD framework and has been used in many CAD applications
and projects since the 1980s.
The development of the Java-based OCT package marked WELD group's first
attempt to gain experience in evaluating efficient techniques and data
structures for representing CAD data formats and models and managing data
in a network environment, with the use of an object-oriented database backend.
There were a number of reasons why we chose to port the OCT package
as the first-cut network data model. Structurally, the use of generic attachments
among OctObjects to represent object linkage/relationship
translated well into an object-oriented model. While architecturally simple,
the OCT package could be used to build and traverse arbitrarily large and
complex objects, using simple mechanisms such as Attach,
InitGenContents and InitGenContainers.
Developed originally at UC Berkeley, OCT is a data model known and understood
well within the research (UC Berkeley CAD) group. Modifying some of the
OCT-compliant legacy tools to work in a network environment with the Java-based
OCT and Java front-ends was one of the considerations for future extensions
and experiments. The resulting package would be a good base-object structure
for the class assignments and project for a graduate class in design technology
at UC Berkeley. This translates to a solid user base for implementation
and usage testing.
Technical Introduction
Because of OCT's architectural elegance and simplicity, Java-based OCT
has retained many of original OCT's features, properties and structural
representation mechanism. 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. Each view has a facet named "contents"
which contains the actual definition of the view and various application-dependent
"interface" facets. Facets, which exist beneath the level of views, contain
instances of other cells, which may in turn contain instances of other
cells.
Facets consist of a collection of objects that are related by attaching
one to another. The basic OCT system allows OctObjects
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 that assign meanings
to the organization and structure of data represented using OCT.
Figure 1 OCT Data Structure Example.
Figure 1 shows an example of an OCT structure (that was
used as the basic cell of a class assignment (explained later in detail)).
The ovals represent OctObjects and the links
represent Attachment relationships among OctObjects.
Implementation Description
While we tried to retain as much of the original flavor of OCT as possible,
this implementation differs 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 discarded.
The three main implementational differences between Java-based OCT and
the original OCT are:
-
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.
-
An object-oriented database is used as a data back-end (for load, save,
queries, etc.), whereas the original OCT made use of UNIX files.
-
Since the Java-based version of OCT was designed to be able to work in
both a Internet and LAN environment, a lot of emphasis has been placed
on protocol efficiency and minimization of (network) transactions for network
storage and retrieval.
Functional Description
The (Oct)object manipulation mechanisms are all supported in this Java-based
implementation and are embedded in the OctObject
implementation which all other OctObjects inherit.
These mechanisms include:
-
Attach
-
AttachOnce
-
Delete
-
DeleteCommit
-
Detach
-
DetachCommit
-
InitGenContainers
-
InitGenContents
DeleteCommit and DetachCommit
were added to the list of manipulation mechanisms due to the need to differentiate
between local and remote object processing. Objects that exists only dynamically
on the client side or operations that need not be committed can make local
calls (Delete, Detach);
operations which require the persistent object/data server to record the
updates need to explicitly call the methods (DeleteCommit,
DetachCommit) that invoke remote calls over
the network so that the respective operations can be executed by the data
server.
Applications
The Java-based OCT package was used in two assignments of the class Design
Technology for Integrated Electronic Systems (EE 244, UC Berkeley,
Fall 96). The assignments involved the place-and-route and display of a
netlist (consisting of 10X10 cells) and the subsequent use of partitioning
algorithms to optimize the placement of the cells (see Figure 2 below).
The purpose of the assignment, in addition to introducing CAD concepts
to the students, was to test and demonstrate the usability and ease of
programming of Java by regular students/engineers, as well as the acceptable
performance of Java applets/applications in a computing- and user-interface-intensive
setting.
Figure 2. Snapshot of one of the homework
examples that used Java-based Oct as the base object data structure.
The figure shows a Java applet that allows users to choose
multiple partitioning algorithms and visualize the placement of the cells/results.
During execution, various costs of the placement are also displayed (by
the line graph and bar chart) to the user.
Modified: June 20, 1997
Feedback: (fchan@eecs.berkeley.edu)