next up previous contents index
Next: Extraction Menu Commands Up: Xic Variables Previous: Convert Menu   Contents   Index

Convert Menu -- Output

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

StripForExport
Value: boolean.
When this variable is set, files produced through the Conversion - Export panel, or with the ToCGX, ToCIF, ToGDS, or ToOASIS script functions, will contain the basic syntax elements with no extensions. Thus, they contain physical data only. See the description of the counterpart button in the Conversion - Export panel for complete information.

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 using the conversions initiated from the Conversion - Export panel, or with the ToCGX, ToCIF, ToGDS, ToOASIS, or ToXIC script functions. 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.

KeepBadArchive
Value: boolean.
When generating an archive file and an error occurs, the archive file will normally be deleted. However, if this variable is set, the output file will be given a ``.BAD'' extension and retained. This file should be considered corrupt, but may be useful for diagnostics.

OutToLower
Value: boolean.
When set, symbol 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 9.1).

OutToUpper
Value: boolean.
When set, symbol 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 9.1).

OutUseAlias
Value: boolean or string.
This variable enables utilization of the alias file (see 9.2) 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 9.1).

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 9.1).

CIFoutStyle
Value: string.
When set, this variable will determine the CIF output style. Changing the option menu choices in the Conversion - Export pop-up will update the value of CIFoutStyle, but only if the variable is already set. If the variable is not set, reading in a CIF file will set the internal style parameters, so that if the file is written, it will have the same style. Before writing, the style can be changed from the Conversion - Export pop-up.

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 Conversion - Export.

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 Conversion - Export pop-up while CIFoutStyle is set, the value of CIFoutStyle will have this form.

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,top width height);

CifOldWire
Value: boolean.
When set, CIF output (without the Strip For Export button set), and the native symbol files, will use the old syntax for wires, which is compatible with older releases of Xic (before 2.5.23). It is necessary to use this option when exporting files to be read by older releases if the cells contain wires with non-default end style. The new syntax is more efficient and should be used if possible.

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).

The Conversion - Export panel from the Convert Menu has an option menu for effectively setting the GdsOutLevel variable.

GdsMunit
Value: real 0.01 - 100.0.
When writing GDSII, the normal MUNITS value (1e-9) is multiplied by this factor when written to the physical mode part of the file. This should be accompanied by a compensating scale factor change in order to keep the file scaling constant, unless a change of scale is desired. The acceptable range is 0.01 - 100.0. This will apply to all GDSII files written.

NoGdsMapOk
Value: boolean.
When this boolean 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.

OasWriteCompressed
Value: 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
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).

The variable tracks the setting of the check box in the Conversion - Export and Conversion panels.

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 may 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]

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 three. 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 two. There can be no space around the `=', and N must be an integer. This is ignored if r is given.

If OasWriteRep is set to an empty string, all objects will be processed for replication, using the default run and array minimums.

The variable tracks the setting of the check box in the Conversion and Conversion - Export panels, which will effectively set/unset this variable as a boolean. Thus, to use repetitions in other than the default mode, this variable must be set explicitly to the appropriate value as described above.

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 Conversion - Export and Conversion panels. 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.

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.

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.


next up previous contents index
Next: Extraction Menu Commands Up: Xic Variables Previous: Convert Menu   Contents   Index
Stephen R. Whiteley 2006-10-23