The following table identifies where the variables in this section are
set, if settable from the graphical interface, and specifies the scope
of the variables.
-
- StripForExport
Value: boolean.
When this variable is set, files produced through the Export
Control and Format Conversion panels will contain the basic
syntax elements with no extensions. Thus, they contain physical data
only. The StripForExport variable applies when writing all
output, except when using the Save and Save As
buttons in the File Menu, and the equivalent text accelerators
and including the prompts when exiting the program. It is also
ignored when using the Save script function, but applies in the
ToArchive script function.
Within Xic, archive file representations consist of two sequential
records in each file. The first record is the physical information,
and the second record contains the electrical information. These
files should be compatible with other CAD systems, as these files are
generally expected to have only one record, and consequently the
electrical information may be ignored. However, one should not count
on this. When in effect, only the physical record is output. This
produces a file which should be an absolutely conventional physical
layout file.
Additionally, when StripForExport is set, and when writing out a
hierarchy from the main database, all cells in the hierarchy will be
written, whether or not the KeepLibMasters variable is set.
Thus, the file will not contain unsatisfied cell references, as
(physical) library cells will be included. Further, all referenced
pcell and standard via sub-masters will be written to output, similar
to the case when the PCellKeepSubMasters and ViaKeepSubMasters variables are set.
This variable tracks the state of the Strip For Export - (convert
physical data only) check box which appears in the Export
Control and Format Conversion panels. This button should be
active when creating a file to be sent to a vendor for use in
generating photomasks. Note that the electrical information can never
be recovered from a stripped file.
- WriteMacroProps
Value: boolean.
When set, output will include macro properties, which are no
longer in use in 4.3.6 and later. This variable can be set to force
generation of these properties, thus providing backwards
compatibility.
- KeepLibMasters
Value: boolean.
When writing an archive file from a hierarchy in the main database,
cells in the hierarchy that were opened through the library mechanism
are by default not included in the file. References to these
cells remain, though no library cell definition records will appear in
output. The file will not be self-contained, as the library cell
references are unresolved without the corresponding libraries.
When this variable is set, files produced with the Export
Control panel will include all cells in the hierarchy, and the file
produced will not have any unsatisfied references (except for
electrical device library cells, which are never included in output).
The variable also applies to the script functions listed in the notes
to the table at the top of this section. It does not apply to
the Save and Save As commands, which always omit library
cells.
This variable tracks the state of the Include Library Cells
check box in the Export Control panel.
- SkipInvisible
Value: boolean or string.
When this variable is set, only layers that are currently visible, as
selected with button 2 in the layer table or otherwise, will be
converted when writing output from the Export Control panel. If
set to a word beginning with `p' (case insensitive), only
invisible physical layers will be skipped. If set to a word beginning
with `e' (case insensitive) only the invisible electrical layers
will be skipped. If set to anything else, including the empty string,
both physical and electrical invisible layers will be skipped. This
variable tracks the state of the Don't convert invisible layers
check boxes in the Export Control panel.
- NoCompressContext
Value: boolean.
The Cell Hierarchy Digest (CHD) is a data structure which provides a
compact representation of a cell hierarchy found in an archive file.
This data structure is used in operations where random-access of cells
in the archive file is required. This is used in some of the
conversion functions provided in the Format Conversion panel
from the Convert Menu, and elsewhere.
In order to process large files, it is important that the CHD use as
little memory as possible. In release 2.5.67 and later, a mechanism
is used to compress instance lists by default. This can shrink the
memory used by the CHD by 50computational overhead.
The digest files written by the Save button in the Cell
Hierarchy Digests panel and the WriteCellHierDigest script
function use the compressed instance lists by default, and are
typically more compact than the older format. These files have a new
magic number and can not be read by Xic releases prior to 2.5.67.
This boolean variable, if set, will prevent use of compression in the
CHD structures, and files written will be backwards compatible. It is
unlikely that the user will find it necessary to set this variable.
- RefCellAutoRename
Value: boolean.
This variable applies when writing hierarchies containing reference
cells, which are cells which point to data obtained through a Cell
Hierarchy Digest but are otherwise empty. When written to a layout
file, these cells expand into a full cell hierarchy obtained from the
CHD. The output file can not contain more than one cell definition
for a given name, so by default if a duplicate cell name is
encountered when writing, that cell definition is simply skipped, and
all instances of the cell in output will reference the original
definition.
This is the correct thing to do when duplicate cell names come from
the same (or an equivalent) CHD, as the duplicates really do indicate
the same cell. However, if the names come from different CHDs, this
could indicate a true name clash.
When this variable is set, names that clash, and that come from
non-equivalent CHDs, will cause an automatic renaming of the cell, and
a cell definition will be generated in output under the new name. The
subsequent cell instances will be updated to call the new name. Names
that clash but come from equivalent CHDs will have the cell definition
skipped, as in the default mode.
This variable tracks the Use auto-rename when writing CHD
reference cells check box in the Cell Hierarchy Digests panel
from the <b>File Menu</b>.
- UseCellTab
Value: boolean.
This variable enables cell definition substitution when using a Cell
Hierarchy Digest (CHD) to access cells for purposes other than reading
into main memory. When set, cell names found in the Cell Table
Listing, which also are visible in the main database will replace
cells of the same name when accessing a hierarchy through a CHD. This
feature can be used to modify cells in a hierarchy without having to
read the entire hierarchy into main memory.
This variable tracks the state of the Use cell table check box
in the Cell Hierarchy Digests panel.
- SkipOverrideCells
Value: boolean.
This variable applies only when UseCellTab is set. When this
variable is also set, cell names listed in the Cell Table
Listing will be skipped, rather than substituted. When writing
output, this will produce files that have unresolved references, which
can be satisfied by another source, such as a library.
This variable tracks the state of the Override and Skip
radio buttons in the Cell Table Listing panel.
- OutAllCells
Value: boolean.
When set, all cells in the current symbol table, not just the
hierarchy of the current cell, will be output as if they were part of
the hierarchy. The usual filtering of library and sub-master cells is
retained. The resulting file may have multiple top-level cells. This
variable tracks the state of the Consider ALL cells in current
symbol table for output check box in the Export Control panel
from the Convert main menu Export Cell Data button.
- Out32nodes
Value: boolean.
When set, schematic cell data written to files will use the node
property syntax of the 3.2 branch of Xic, providing limited
backward compatibility. This will strip out elements not supported by
the earlier syntax, such as multi-contact points in symbols.
The files will still not really be backward compatible unless all
``new'' features are avoided. Setting this variable may be useful for
the case where 3.2 compatibility is to be preserved for a design that
originated in 3.2 or earlier, which is read into the current release
of Xic, tweaked, then saved back to disk.
The variable should not be set unless you explicitly need to create
backward-compatible files, as it will prevent features from working in
the resulting files.
- OutToLower
Value: boolean.
When set, cell names found in archive files being written that are
entirely upper case will be mapped to lower case. A name that is
mixed-case will not be changed. This mapping occurs for names which
are not aliased in an enabled alias file. This is part of a more
general cell name mapping facility (see 14.2), which applies
in the Export Control panel and elsewhere.
- OutToUpper
Value: boolean.
When set, cell names found in archive files being written that are
entirely lower case will be mapped to upper case. A name that is
mixed-case will not be changed. This mapping occurs for names which
are not aliased in an enabled alias file. This is part of a more
general cell name mapping facility (see 14.2), which applies
in the Export Control panel and elsewhere.
- OutUseAlias
Value: boolean or string.
This variable enables utilization of the alias file (see
14.3) when writing to an archive file. If simply set as a
boolean, i.e., to no value, the alias file will be read before the
operation, and created or updated if necessary after the operation.
If the variable is set to a word starting with `r' (case
insensitive), then the alias file will be read before the operation
and used during the operation (if it exists), but will not be created
or updated after the operation. If the variable is set to a word
starting with `w' or `s' (case insensitive), the alias
file will not be read before an operation, but will be created or
updated after the operation completes. This is part of a more general
cell name mapping facility (see 14.2), which applies
in the Export Control panel and elsewhere.
- OutCellNamePrefix, OutCellNameSuffix
Value: string.
These variables are most simply set to a text token that is added to
the beginning or end of cell name strings as archive files are being
written. Modifications will not be made to cell names found in an
enabled alias file. The strings can also be given in the form
/str/sub/
where str and sub are text tokens, separated by forward
slash characters as shown. In this case if the characters at the
beginning/end of the cell name (for prefix/suffix) match the str, they are replaced by sub. This is the same action as is
used in the !rename command. The string token must match
exactly -- there is no wildcarding. Either the prefix or suffix, or
both, can be defined. The suffix substitution occurs after the prefix
substitution. Either can match the whole cell name if one wants to
change the name of a single cell. This is part of a more general cell
name mapping facility (see 14.2), which applies
in the Export Control panel and elsewhere.
- CIFoutStyle
Value: string.
When set, this variable will determine the CIF output style. Changing
the Cell Name Extension, Layer Specification, or Label Extension option menu choices in the CIF page of the Export Control pop-up will update the value of CifOutStyle.
The CIFoutStyle variable can be set to the following values,
which will set the CIF output style as indicated. The syntax
associated with the indices is given in 14.7.3, describing
the Export Control panel.
Value |
Historical Name |
cname_index |
layer_index |
label_index |
a |
Stanford |
1 |
0 |
1 |
b |
NCA |
1 |
1 |
2 |
i |
Icarus |
2 |
0 |
1 |
m |
Mextra |
0 |
0 |
3 |
n |
none |
4 |
0 |
4 |
s |
Sif |
3 |
0 |
1 |
x |
Xic |
0 |
0 |
0 |
cn:la:lb |
- |
cn |
la |
lb |
The final form consists of three colon-separated integers which are
interpreted as indices into the option lists as implied above. If the
style parameters are changed in the Export Control pop-up
while CIFoutStyle is set, the value of CIFoutStyle will
have this form.
- CifOutExtensions
Value: two space-separated integers.
The string for this variable consists of two integers that represent
banks of flags. The first integer represents the extension flags in
use when the StripForExport variable is not set, the second
integer represents the flags in force when StripForExport is
set. The bits of each integer represent the flag state corresponding
to the menu entries of the CIF Extensions menu (below the
separator) in the CIF page of the Export Control panel,
with the top entry corresponding to the least significant bit. The
extensions are described with the CIF Format Extensions in
/refcifext, and are listed in the table below.
Extension |
Mask |
scale extension |
0x1 |
cell properties |
0x2 |
inst name comment |
0x4 |
inst name extension |
0x8 |
inst magn extension |
0x10 |
inst array extension |
0x20 |
inst bound extension |
0x40 |
inst properties |
0x80 |
obj properties |
0x100 |
wire extension |
0x200 |
wire extension new |
0x400 |
text extension |
0x800 |
- CifAddBBox
Value: boolean.
When set, each object line (boxes, polygons, wires, labels) in CIF
output will be followed by a comment line giving the bounding box of
the object, in the form
(BBox left bottom right top);
This may be useful for debugging, but greatly increases file size
so is not recommended for general use.
In Xic releases prior to 3.0.0, the format of the added
comment was
(BBox left,top width height);
and the extension was applied to native cell files as well as CIF
output.
- GdsOutLevel
Value: integer 0-2.
This variable determines the GDSII release level of GDSII output
files. The default is release level 7, which was introduced by
Cadence in 2002. Previous releases specified a limit of 200 or 600
polygon vertices (there seems to be some inconsistency in the
published limit) and 200 vertices for wires. This applies to format
releases 3, 4, 5, and 6. The only difference between these formats is
the definition of some Cadence-specific data block types that are
ignored by Xic. The latest release (7) removed these limits.
The limits that remain are due to the block size limit (64Kb) of the
format, which implies a maximum of 8000 vertices for polygons and
wires.
When writing GDSII output, it may be necessary to enforce the limits,
if the output is destined for another program which can't handle the
release 7 limits. The Xic default is to use the release 7 limits.
The GdsOutLevel variable can be set to an integer 0-2. The
corresponding GDSII format is as follows:
- level 0: (the default)
max poly vertices: 8000
max wire vertices: 8000
format level: 7
- level 1:
max poly vertices: 600
max wire vertices: 200
format level: 3
- level 2:
max poly vertices: 200
max wire vertices: 200
format level: 3
By setting GdsOutLevel to 1 or 2, GDSII files generated with
Xic should not cause difficulty when read by older programs
(including old versions of Xic).
This variable tracks the state of the GDSII version number,
polygon/wire vertex limit menu in the GDSII page of the Export Control panel from the Convert Menu. This page is also
used in the Format Conversion panel, and the Layout File
Merge Tool also from the Convert Menu.
- GdsMunit
Value: real 0.01-100.0.
When writing GDSII, the normal MUNITS (machine units) and UUNITS (user
units) values will be multiplied by this factor, and all coordinates
in the file will be divided by this factor. The acceptable range is
0.01 - 100.0. This will apply to all GDSII files written.
This variable tracks the Unit Scale entry in the GDSII
page of the Export Control panel from the Convert Menu.
This page is also used in the Format Conversion panel, and the
Layout File Merge Tool also from the Convert Menu.
The default values for these parameters are
MUNITS: |
1e-6/resolution |
UUNITS: |
1.0/resolution |
where resolution is the internal resolution, which defaults to
1000 per-micron, but can be changed with the DatabaseResolution
variable.
- GdsTruncateLongStrings
Value: boolean.
The GDSII and CGX formats use a 16-bit integer to store record size,
limiting the size of records to 64Kb. This prevents storage of stings
longer than this. By default, an attempt to write such a string to a
GDSII or CGX file will generate a fatal error, aborting the operation.
If this variable is set, overrunning strings will be truncated to
maximum possible length, and the operation will continue without
error. Warnings will appear in the log file, however.
This variable tracks the state of the Accept but truncate
too-long strings check box in the GDSII and CGX pages of
the Export Control panel from the Convert Menu. These
pages are also used in the Format Conversion panel, and the Layout File Merge Tool also from the Convert Menu.
- NoGdsMapOk
Value: boolean.
When this variable is set, layers without a GDSII output mapping will
be ignored when producing GDSII output, though a warning will appear
in the log file. Otherwise, this is an error which terminates
conversion.
This tracks the state of the Skip layers without Xic to GDSII
layer mapping check box in the GDSII and OASIS pages of
the Export Control panel from the Convert Menu. These
pages are also used in the Format Conversion panel, and the Layout File Merge Tool also from the Convert Menu.
- OasWriteCompressed
Value: boolean, or the string ``force''.
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.
By default, very short records are not compressed, as more often than
not, compression will increase the size of these blocks. If
this variable is set to the word ``force'', then all blocks are
compressed. This can be used for comparison purposes, but is unlikely
to yield the best results. This tracks the state of the check box in
the OASIS page of the Export Control panel.
- OasWriteNameTab
Value: 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. 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).
This tracks the state of the check box in the OASIS page of the
Export Control panel.
- OasWriteRep
Value: string or boolean.
When this variable is set, Xic will try to find groups of identical
objects that can be combined into REPETITION records in OASIS output.
This applies to all OASIS output files. Although compute intensive,
this can save a lot of space in the output file.
If OasWriteRep is not set, subcell and object records are
written as encountered when traversing the cell structure. If set,
objects and subcells will be cached, and similar objects and subcells
are identified and written using repetition records.
When using repetition, the following procedure is used, where
``objects'' can apply to subcells as well as geometrical objects.
- Instead of directly converting each object, the object is
saved in a cache.
- When a cell traversal is complete or an object count reached,
the cache is processed, and objects that are identical are
identified. The differing objects are sorted to make use of modal
variables.
- For each group of identical objects, those that form a
spatially linear, periodic ``run'' are extracted into a new run
list.
- For each list of runs, the runs that are spatially periodic
are extracted into a new array list.
- Each array is written using a 2-dimensional repetition.
- Each remaining run is written using a 1-dimensional
repetition.
- The remaining objects, i.e., those not used in an array or
run, are written using a random repetition.
The details of this process, and whether or not it is applied, are
controlled by the OasWriteRep variable. This variable can be
set to a string containing several tokens, or set as a boolean (i.e.,
set to nothing). The tokens can appear in any order.
OasWriteRep: [word] [d] [r]
[m=N] [a=N] [x=N]
[t=N]
- word
This is a token that is not recognized as one of the others. It
consists of letters that control the type of object that the
replication process is applied to. If the letter is present, the
corresponding object type will be processed, otherwise the replication
algorithm will not be applied to that type of object, however if this token
is not found (no letters appear), all objects will be processed.
The letters are:
c |
subcells |
b |
boxes |
p |
polygons |
w |
wires |
l |
labels |
For example, ``cp'' would indicate use of replications for
subcells and polygons only. If no token of this type is found, then
all object types will be processed.
The remaining tokens are identified by the first letter only, and
the remainder of the token (up to `=' in some cases) is ignored.
- d
Some debugging info is printed on the console when processing.
- r
No attempt is made to find runs or arrays, and all similar objects are
written using random placement repetitions.
- m=N
This sets the minimum number of objects in a run. The default value
is 4, which is also the minimum accepted value. There can be no space
around the `=', and N must be an integer. This is ignored if
r is given.
- a=N
This sets the minimum number of runs in an array. The default value
is 2. The value can be set to 0 (zero) in which case two dimensional
repetition finding is skipped. Otherwise, the value must be 2 or
larger. There can be no space around the `=', and N must be an
integer. This is ignored if r is given.
- x=N
This sets the maximum number of different objects of a given type held
in the cache, before flushing occurs. This does not include
repetition counts. The N is an integer in the range 20 -
50000. If not set, a default of 5000 is used. Larger values can
reduce file size, but can greatly increase writing time due to
modality sorting.
- t=N
This sets the maximum number of similar objects, i.e., those subject
to repetition analysis, that can exist in the cache before flushing.
Extremely large numbers may require excessive time to scan for
repetitions. The N is an integer which can be 0 (zero) in which
case no limit is used, or 100 or larger. The default value is 1000000
(one million).
If OasWriteRep is set to an empty string, all objects will be
processed for replication, using the default run and array minimums.
The string for this variable can be composed with the interface found
in the Advanced OASIS Export Parameters panel. The Find
repetitions button in the OASIS page of the Export
Control panel will set the variable to the current string from the
interface, or unset the variable. It the variable is set by another
method, such as with the !set command, the interface will be
updated to the parameters as given. With default parameters, the
string is empty, so the variable is set as a boolean by default.
- OasWriteChecksum
Value: string or boolean.
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 OASIS page of the Export Control panel. This controls
setting/unsetting as a boolean, thus the check box selects CRC
checksum or none.
- OasWriteNoTrapezoids
Value: boolean.
The normal behavior is to check three and four-sided polygons to see
if they can be written as (more compact) TRAPEZOID or CTRAPEZOID
records. Setting this variable will suppress this, providing slightly
faster conversion at the cost of larger file size. This variable
tracks the Don't write trapezoid records check box in the Advanced OASIS Export Parameters panel.
- OasWriteWireToBox
Value: boolean.
The normal behavior is to leave wires alone, preserving data-type
integrity. However, space can be saved by writing two-vertex
rectangular wires as boxes. Setting this variable will enable this,
which may reduce file size at the expense of slightly more conversion
time. This variable tracks the Convert Wire to Box records when
possible check box in the Advanced OASIS Export Parameters
panel.
- OasWriteRndWireToPoly
Value: boolean.
The OASIS format does not have a native ``rounded end'' style for
wires. These are normally converted to extended-end wires, where the
``rounded'' part becomes Manhattan. If this variable is set, when
converting rounded-end wires to OASIS, the wire is converted to a
polygon which is shaped the same way as all rounded-end wires in
Xic. Use of a polygon requires more memory than the wire, but this
preserves exactly the same geometrical coverage, which is valuable in
reducing geometric differences if a layout comparison is performed.
This variable tracks the Convert rounded-end Wire records to Poly
records check box in the Advanced OASIS Export Parameters
panel.
- OasWriteNoGCDcheck
Value: boolean.
This applies only when repetitions are being used (OasWriteRep
is set). Normally, a greatest common divisor is computed, and if
larger than unity type 10 repetitions are converted to type 11. This
can reduce file size. If this variable is set, the GCD is not
computed, probably increasing file size but reducing conversion time.
This variable tracks the Skip GCD check check box in the Advanced OASIS Export Parameters panel.
- OasWriteUseFastSort
Value: boolean.
When set, writing OASIS may be faster at the expense of file size.
This was the only mode in releases prior to 2.5.68. The present
release defaults to using a somewhat slower but more effective
modality sorting algorithm, which will produce smaller files. This
variable tracks the Use alternate modal sort algorithm check box
in the Advanced OASIS Export Parameters panel.
- OasWritePrptyMask
Value: boolean or string.
This variable tracks the Property masking menu selections in the
Advanced OASIS Export Parameters panel.
There are two properties that are added to text labels by default.
These properties are used by Xic and programs based on Xic
source code, and can be stripped if not needed. This can lead to
substantial file size reduction if the file contains many text labels.
Property name: XIC_PROPERTIES
Property number: 7012
This property is added when reading GDSII source. It contains values
of attributes of the TEXT element. These have no analogs in OASIS
format, however if the file is reconverted to GDSII, the attributes
will be restored. These attributes are found in the following GDSII
record types:
name |
record |
description |
ANGLE |
28 |
Rotation angle of text. |
MAG |
27 |
Magnification applied to text. |
WIDTH |
15 |
Width of path used to form characters. |
PTYPE |
33 |
GDSII PATHTYPE used to form characters. |
The property consists of a string containing name/value pairs: the
names are the text tokens above, the values are numeric. Tokens are
separated by white space.
Property name: XIC_LABEL
This is added to all labels to pass the Xic presentation
attributes. The string consists of two space-separated unsigned
numbers: width and flags. The width is the width of
the label bounding box, in containing-cell coordinates. The flags is the label flags word used by Xic, described in
C.2.
If OasWritePrptyMask is set as a boolean, i.e., to an empty
string, neither of these properties is written. If the variable is
set to an integer value, the two least-significant bits of the integer
value are flags that mask the creation of these properties, according
to the table below. If the variable is set to a non-empty and
non-integer value, and during conversions only (as initiated from the
Format Conversion panel from the Convert Menu) then all properties are stripped from output.
Bit 0: |
If set, XIC_PROPERTIES #7012 will not be written. |
Bit 1: |
If set, XIC_LABEL will not be written. |
This variable was named ``OasWriteNoXicTextPrps'' in releases
prior to 3.0.0.