next up previous contents index
Next: Technology File Layer Block Up: Technology File Previous: Technology File Scripts   Contents   Index

Technology File Layer Blocks

Xic maintains a table of layer aliases, which can be used instead of the actual layer name where a layer entry is required. This follows the Virtuoso ``techParams'' definitions where the value is a layer name. The alias name is intended to be a generic name such as ``active_layer'', or ``nwell_layer'', which can be used in device blocks and elsewhere to provide a degree of process independence. Further, some of these names may be specific to Virtuoso, and be handled in special ways. The only example of this at present is handling of ``active_layer''.

Each line of the layer alias list takes the following form.

MapLayer alias layer_name
The layer_name must be resolvable as an Xic layer.

active_layer alias handling
If a layer alias named ``active_layer'' is given, as is at least one of the alias names ``ngate_layer'' and ``pgate_layer'', and the active_layer does not have a Conductor Exclude directive, one will be created. The excluded area is logically ngate_layer|pgate_layer. This supports correct MOS device recognition when technology data are obtained exclusively from Virtuoso.

The component layer names and numbers, and purpose names and numbers, are specified in optional tables. These tables must appear before any Xic layer definitions. A layer name or purpose name used by an Xic layer that is not found in a table will be created, and assigned a number by Xic. The tables ensure a strict and repeatable correspondence between names and numbers, which may be necessary for compatibility with other tools.

The tables consist of lines in the following form:

DefineLayer layer_name layer_number
DefinePurpose purpose_name purpose_number

Name strings may contain alphanumeric characters plus the dollar sign ('$') and underscore ('_'). The numbers can be any value representable with 32-bits, except that -1 is reserved. Be aware that other tools may define ranges of values that are reserved for internal use.

Following the layer and purpose tables, if any, Xic layers may be defined. There are separate definitions of layers used in electrical (schematic) mode, and in physical mode (for layouts). Xic maintains a standard set of electrical layers, in a standard order. These will be created if the definitions do not appear in the technology file (or no technology file is read). The SCED layer, which is the electrically-active wiring layer, is always first. The user can modify the presentation attributes, and add layers as desired. For physical mode, there are no such layers, all layers must be defined in some manner.

The separation of electrical and physical layers is a bit of an anachronism, and in current Xic releases a user-defined layer can actually exist in both electrical and physical layer tables. This accommodates technologies imported from other tools, such as Cadence Virtuoso, where no such distinction is made.

Each layer definition starts with the keyword PhysLayer for physical layers or ElecLayer for electrical layers, followed by a name. Both of these keywords have synonyms (listed below) for backwards compatibility. The name should be a valid layer name, though an attempt is made to use invalid names if possible by editing out unacceptable characters.

Layer blocks appear in a contiguous section in the technology file, and in physical mode will appear in the layer table in the order given. In electrical mode, reordering may be applied, as there are some internal assumptions.

A layer block is terminated by the start of another layer block, or by a keyword which would logically end per-layer parsing.

ElecLayer name
This keyword specifies the beginning of the layer block for the electrical layer name. The keyword ElecLayerName is a synonym.

PhysLayer name
This keyword specifies the beginning of the layer block for the physical layer name. Layers will appear in the physical mode layer table in the order given. The keywords PhysLayerName, Layer, and LayerName are all synonyms for this keyword.

DerivedLayer name [join|split|splitv] expression
This line provides a definition of a derived layer. Derived layers represent an expression of other layers, derived and normal physical, which can be referenced in layer expressions. Derived layers were introduced in support of the design rule checking system, but can be accessed for other purposes through a script function interface.

This will add a derived layer to the database, under the name given in the first token. The remainder of the line is the layer expresion. The expression is not parsed until evaluation time.

When the derived layer is evaluated, the geometry can appear as an assemblage of trapezoids if either of the split or splitv keywords is given, or alternatively as a minimal number of complex polygons if the join keyword is given instead. If splitv is given, a vertical orientation is favored for the decomposition, whereas similarly split will produce a decomposition favoring a horizontal orientation. The default is the joined form if none of these optional keywords is given, except when simply copying from another layer in which case the default is to copy objects without change. The keyword ``splith'' is a synonym for ``split''.

These lines begin a layer block description, and any of the keywords which can apply to physical layers can be used in the derived layer blocks, though the definitions may be useless. Layer block keywords that are significant are listed below.

  1. Design rules. These rules will be evaluated while doing design rule checking. As further described in the in the DRC description, there are some types of tests that require use of derived layers.

  2. When a new normal layer is created as a copy of a derived layer, which can be done with the !layer command, or with the Layer Expression Evaluation panel from the Edit Menu, or with the Layer script function, the new layer will inherit the attributes of the derived layer. This includes color, fill pattern, GDSII mpping, and other flags and properties. This gives purpose to the definitions provided in the derived layer block.

The sub-sections that follow categorize and describe the fairly lengthly list of per-layer keywords. All of the keywords are optional, and can appear under an electrical or physical layer, unless stated otherwise. Many of these keywords can be programmed from within Xic with the Tech Parameter Editor from the Attributes Menu. Other panels from the Attributes Menu allow setting colors, fill patterns, etc. which correspond to values from keywords.

In the syntax descriptions, the italicized quantities represent data the needs to be provided. The ``y| n'' symbol implies that one of `y' or `n' should follow the keyword. Actually, `0' (zero), or any word that begins with the letters or sequence (case insensitive) `n', `f', `of' is taken as a false value. Anything else, including no following text, is taken as true (`y' is always redundant).

next up previous contents index
Next: Technology File Layer Block Up: Technology File Previous: Technology File Scripts   Contents   Index
Stephen R. Whiteley 2022-05-28