OASIS Support in Xic
This section describes the OASIS capabilities in Xic. Unless
stated otherwise, this also applies to XicII.
The present status of OASIS support in Xic (and XicII)
is fairly complete, the bottom line being
- Xic can read any spec-conforming OASIS file.
- OASIS output from Xic is readable by any other
spec-conforming tool.
- Exceptions to the above are *bugs*, please report!
OASIS is one of the supported archive formats, along with GDSII, CIF,
and CGX. CGX (Computer Grapnics eXchange) format
is another "improved" GDSII developed and placed in the public domain
by Whiteley Research. The archive formats have the following capabilities
in Xic:
- Files can be read directly into Xic, either using the Edit
command, or with similar buttons and functions in Xic.
- Files can be converted directly to another (or the same) archive
format, or to Xic native symbol files, from the Convert
function in the Convert Menu. While converting, scaling,
windowing (clipped or not) and flattening can be employed. There is
also provision for selecting the layers to convert.
- Xic can output a hierarchy in memory to any of the archive
formats. The default format is the format of origin, if any.
- The Xic "skeleton mode" feature, where only the cell
hierarchy is read into memory initially, applies to all archive
formats. A similar but more recent "archive context" feature also
applies. These features are intended to provide the ability to
manipulate files that can not be read into memory due to memory size
limitations.
- The "random access" of cells from the file, such as with the
Contents function of the Files Listing or the library
access mechanism applies to all archive formats.
- The script functions that split a file spatially into pieces,
WriteGeomSplit() and SkelWriteGeomSplit(), apply to
all archive formats for both input and output.
OASIS Interface Notes and Limitations
This capability was designed from the draft SEMI-3626 document, but
has incorporated changes from the final specification. The following
should be born in mind:
Characteristics of OASIS Output From Xic
The basic OASIS file generated by Xic has the characteristics listed
below. This applies the Xic release 2.5.58, and may change in the
future.
- By default, all strings are saved locally as strings, i.e., no
indirection is used, so there are no <name> records. This can be
changed with the OasWriteNameTab variable (see below), which
is connected to check boxes in the Conversion pop-ups.
- By default, no REPETITION records are generaged for <geometry>
records. If the OasWriteRep variable or the corresponding
check box is set, REPETITION record types may be generated. This
option attempts to recognize arrays of identical objects when writing
OASIS files from memory.
- The following record types are not generated by Xic:
CIRCLE, XNAME, XELEMENT, XGEOMETRY.
- When writing OASIS files with StripForExport set, i.e., writing
physical data only, and when using string tables, the offset table is
placed in the END record. With StripForExport not set, in general we
write two sequential OASIS databases into the file, the first for
physical data, the second for electrical. This is a
Xic-specific extension. In this case, string tables are used
in the physical part only, and the offset table is placed in the START
record. PAD records are added to avoid overwriting data since this is
a non-sequential operation. In all cases, strict-mode tables are
used.
Note: If a design contains physical data only, the electrical records
are absent, so that the file becomes conventional. Even if electrical
records are present, the reader will probably ignore them (as does
anuvad-0.2). However, when exporting physical data, for
portability StripForExport should always be set.
The string tables themselves are written just ahead of the END
record in all cases (when tables are used).
- There are no file properties given.
- All integer values are 32-bit limited, except for values that represent
offsets into the file, which may be 64-bit.
- The OASIS format does not provide a native code to indicate a
rounded-end wire. For wires that have rounded ends, i.e., that originated
as GDSII PATHTYPE=1, the half-width extension is specified, and the PATH
record is given an empty (info byte = 0x4) property named "XIC_ROUNDED_END".
- The OASIS format does not provide codes for TEXT element presentation.
In Xic, these are used for on-screen labels, and are treated by
Xic as any other database object, but they will not appear on the
mask layout. Thus, at least for Xic internal use, TEXT presentation
attributes are important. They are stored in a property applied to TEXT
records named "XIC_LABEL". The XIC_LABEL property contains two unsigned
integers. The first is the width of the label, in database units.
The second is the "xform" code used by Xic which determines the
justification and rotation.
| Bits | Purpose |
| 0-1 | 0-no rotation, 1-90, 2-180, 3-270 |
| 2 | mirror y after rotation |
| 3 | mirror x after rotation and mirror y |
| 4 | shift rotation to 45, 135, 225, 315 |
| 5-6 | horiz justification 00,11 left, 01 center, 10 right |
| 7-8 | vert justification 00,11 bottom, 01 center, 10 top |
| 9-10 | font (GDSII) |
- All other properties, which might be given to CELL or
<geometry> records, are named "XIC_PROPERTY" and consist of
concatenated number/string pairs. Xic uses properties indexed
by a number, with string-type data, so that the XIC_PROPERTY consists
of the list of properties as known to Xic for that cell or
object.
There are several options in Xic that modify OASIS
input/output. Most of these can be controlled by check boxes in the
Conversion - Export and/or Conversion panels from the
Convert Menu, which reflect the status of the variables (which
can also be set with the !set command or equivalent).
- OasWriteCompressed (boolean)
-
When set, created OASIS files will use compression. The content of
all CELL records and name tables will be placed in CBLOCK records.
This can significantly reduce file size. When not set, no compression
will be used. This applies to OASIS files generated from the
Convert and File menus and equivalent functions. The
variable tracks the setting of the check box in the Conversion -
Export and Conversion panels.
- OasWriteNameTab (boolean)
-
When set, all strings including cell names, properties, and labels are
placed in strict-mode tables. This will in most cases reduce file
size. When writing OASIS files with StripForExport set, i.e.,
writing physical data only, the offset table is placed in the END
record. With StripForExport not set, in general we write two
sequential OASIS databases into the file, the first for physical data,
the second for electrical (This is a Xic-specific extension).
In this case, string tables are used in the physical part only, and
the offset table is placed in the START record. PAD records are added
to avoid overwriting data since this is a non-sequential operation.
In all cases, strict-mode tables are used.
The string tables themselves are written just ahead of the END
record in all cases (when tables are used).
The variable tracks the setting of the check box in the Conversion
- Export and Conversion panels.
- OasWriteRep (boolean or string)
-
When this variable is set, Xic will try to find groups of
identical objects that can be combined into REPETITION records in
OASIS output. Although compute intensive, this can save a lot of
space in the output file if the design contains periodic arrays of
identical objects.
This variable has a corresponding check box in the Conversion -
Export panel. The variable applies only when writing data from
memory, and not when directly converting from another format. When set
as a boolean, a default set of parameters is employed in the
repetition-identification algorithm, but it is possible to fine-tune
the algorithm by setting this variable to an appropriate string. See
the Xic documentation for the full story.
- OasWriteChecksum (boolean or string)
-
When not set, no checksum is written to the output. When set as a
boolean (i.e., to no value), or to anything other than "2" or
a string beginning with "ch", a cyclic-redundancy (CRC)
checksum is computed and added to the file. If set to "2" or
a word beginning with "ch", a byte-sum checksum is added to
the file. This variable has a corresponding check box in the
Conversion - Export and Conversion panels. This
controls setting/unsetting as a boolean, thus the check box selects
CRC checksum or none.
Requirements And Limitations for Reading OASIS
Xic can very likely read any OASIS file that meets the published
specification. Exceptions should be reported as bugs!
- The draft spec says:
"... strict mode guarantees that all references to the corresponding
class of objects (names, strings, or cells) are made exclusively
by reference-number"
Xic does not enforce this.
-
Properties are ignored, unless the name matches one of those understood
by Xic (see above). The file properties set an internal variable
but otherwise do nothing.
-
The XNAME, XELEMENT, and XGEOMETRY records are ignored.
-
The CIRCLE record will create a polygon object approximating a circle,
with the number of sides using the internal variable in Xic.
-
The TRAPEZOID and CTRAPEZOID records will create a polygon object.
- The REPETITION records found in PLACEMENT records will define a
cell array if possible (i.e., represents a periodic Manhattan
configuration), otherwise individual cell instances will be created
and replicated. In <geometry> records, any REPETITION is
accepted, but the repetition is decomposed and separate objects are
created in memory.
The following variable affects the OASIS reader.
- OasReadNoChecksum (boolean)
-
When set, the reader will ignore a checksum found in the OASIS file,
if any. When not set, if a checksum is found, it will be compared
with a computed checksum, using the method (CRC or summation)
indicated in the file, and the conversion will fail if the checksums
are not equal.
The following two variables apply when converting OASIS to an ascii text
representation. The OASIS text representation follows that generated by
anuvad-0.2. Presently, back conversion to OASIS is not possible
in Xic, however the anuvad tools can do this.
- OasPrintNoWrap (boolean)
-
This applies when converting OASIS input to ascii text. When set, the
text output for a single record will occupy one (arbitrarily long)
line. When not set, lines are broken and continued with indentation.
This variable has a corresponding check box in the Converson
panel.
- OasPrintOffset (boolean)
-
This applies when converting OASIS input to ascii text. When set, the
first token for each record output gives the offset in the file or
containing CBLOCK. When not set, file offsets are not printed.
This variable has a corresponding check box in the
Converson panel.
|