next up previous contents index
Next: Custom Property Filtering Up: Xic Variables Previous: Convert Menu   Contents   Index

Convert Menu -- Output

The !set variables below affect the format conversion when writing data to a file. Many of these variables have counterpart buttons in the Export Control panel from the Convert Menu. The functionality may also apply to files created with the Save command and similar.

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.

Variable Set From Notes
StripForExport Format Conversion and Export Control 4
WriteMacroProps Export Control 1
KeepLibMasters Export Control 3
SkipInvisible Export Control 3
KeepBadArchive   1
NoCompressContext   5
RefCellAutoRename   5
UseCellTab   5
SkipOverrideCells   5
OutToLower cell name mapping module 2
OutToUpper cell name mapping module 2
OutUseAlias cell name mapping module 2
OutCellNamePrefix cell name mapping module 2
OutCellNameSuffix cell name mapping module 2
CifOutStyle Export Control 1
CifOutExtensions Export Control 1
CifAddBBox   1
GdsOutLevel Export Control 1
GdsMunit Export Control 1
NoGdsMapOk Export Control 1
OasWriteCompressed Export Control 1
OasWriteNameTab Export Control 1
OasWriteRep Export Control 1
OasWriteChecksum Export Control 1
OasWriteNoTrapezoids Advanced OASIS Export Parameters 1
OasWriteWireToBox Advanced OASIS Export Parameters 1
OasWriteRndWireToPoly Advanced OASIS Export Parameters 1
OasWriteNoGCDcheck Advanced OASIS Export Parameters 1
OasWriteUseFastSort Advanced OASIS Export Parameters 1
OasWritePrptyMask Advanced OASIS Export Parameters 1

Notes:

  1. These variables apply whenever a layout file is being written, in any mode.

  2. These variables apply to actions initiated from a panel containing the Cell Name Mapping control group, and to the following script functions:
    ToXIC
    ToCGX
    ToCIF
    ToGDS
    ToGdsLibrary
    ToOASIS

  3. Applies when a file is being written using the Export Control panel, and with the script functions listed above.

  4. The StripForExport variable applies as described below.

  5. These variables apply when using a Cell Hierarchy Digest (CHD) to access cells for writing. Reference cells are pointers to CHD data.

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.

  1. Instead of directly converting each object, the object is saved in a cache.
  2. 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.
  3. For each group of identical objects, those that form a spatially linear, periodic ``run'' are extracted into a new run list.
  4. For each list of runs, the runs that are spatially periodic are extracted into a new array list.
  5. Each array is written using a 2-dimensional repetition.
  6. Each remaining run is written using a 1-dimensional repetition.
  7. 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.


next up previous contents index
Next: Custom Property Filtering Up: Xic Variables Previous: Convert Menu   Contents   Index
Stephen R. Whiteley 2024-09-29