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_nameThe layer_name must be resolvable as an Xic layer.
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.
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.
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).