Stream to OpenAccess Mapping

This document expresses the relationship between Stream (GDSII) elements and OpenAccess objects. This document does not elaborate on the Stream language or syntax, since it is assumed that you are already familiar with this format. For additional information about the stream data language and syntax, refer to your Stream reference (not included with this documentation library).


How Entities Map

There are seven Stream entities, which map to OpenAccess as shown in the following table.

Stream Entity OpenAccess Object
structure oaDesign
boundary oaPolygon
path oaPath
Sref oaScalarInst
Aref oaArrayInst
text oaText
box oaRect

Notes to entity mapping:


How Stream path types map

Stream path types map to OpenAccess path styles. Mapping of the four path types is shown in the following table.

Stream Path Type OpenAccess Path Style
type 0 oacTruncatePathStyle (square end)
type 1 oacRoundPathStyle (round end)
type 2 oacExtendPathStyle (square end extended)
type 4 oacVariablePathStyle (variable length extension)

Zero-width paths are not translated.

If you translate a design to the Stream version 3 format by using the -ver 3 option, path segments with two different end types, or path segments with variable end types, translate to Stream path type 0. Translating such path segments is done by shifting the end points to conserve the original geometry. If a design is translated to Stream using the default, version 5 format, path segments with two different end types translate to Stream path type 4.


How Vias Map

Single cut vias map to OpenAccess as an oaStdVia. Vias that comprise an array of cuts map to an oaStdVia with the array of cuts represented as either oaViaParam cut columns or rows. When translating vias with 15 or more cuts in the array, oa2strm maps the via to a pure structure containing the enclosing metal layer rectangles, plus the implant layer rectangles, plus an AREF to a structure containing a single cut rectangle. Vias with fewer than 15 cuts, and standard vias with a non-default or non-null cut pattern, are translated to Stream by representing each cut as an individual rectangle.

Previous versions of the strm2oa translator produced either standard or custom vias on input to OpenAccess, and oa2strm always produced a rectangle for each via cut on output to Stream. The strm2oa translator now recognizes both the AREF and the multiple rectangle representations in Stream to produce a pure standard via in OpenAccess.


How Layer, Datatypes, and Properties Map

Stream layer and datatypes map to oaLayerNum and oaPurposeNum in OpenAccess. A Stream property maps to an oaStringProp object in OpenAccess.


Mapping Parameterized Cells (pcells)

The oaStrmOut translator flattens C++ pcells, giving each pcell variant a name that is based on the original pcell name and the order in which the variant was found. The pcells are flattened by creating a stream structure for each unique variant. These structures are given a unique name using the method previously described. Each instance of a pcell variant is translated as an Sref. The Sref uses the uniquely generated name to reference the appropriate flattened variant. If you stream the file back in, oaStrmIn does not recreate the pcells.

Skill pcells are not translated by the StreamIn translator. The only handler that is built into OpenAccess is for C++ pcells. C++ pcells offer a significant performance advantage over Skill-based p-cells.


Mapping Additional Objects from OpenAccess to Stream

Six additional objects that can exist in an OpenAccess database also map to Stream entities. The mapping is shown in the following table.

OpenAccess Object Stream Entity
oaRoute Sref + path (via instance + route segment)
oaBlockage boundary
oaDonut boundary
oaDot node
oaEllipse boundary
oaLine path

Path Extensions for oaRoutes

If the first element of a route is a route segment, its extension is the bgnExt of the route. All “middle” route segments are written as truncate extension types. If the last element of a route is a route segment, its extension is the endExt of the route.