In Xic, boxes, polygons, and other objects are created on layers. These often correspond to mask levels in a fabrication process, but the actual interpretation is up to the user.
Most often, layers are defined in the technology file, and these are shown within Xic in the layer table. One of the layers is selected as the ``current layer'', which is used for drawing objects.
Layers have an order, as shown in the layer table display. Layers that come later in the listing are considered to be ``above'' the layers listed earlier. This is reflected in how layouts are drawn on-screen and in plots, as the fill (if any) of a layer will obscure the lower layers.
Historically, Xic has used a very simple model for layers based on CIF. In this model, each layer has a unique name of four characters or fewer.
Starting with the Xic-3.3 branch, the OpenAccess model is used. This provides fundamental compatibility with design tools based on the OpenAccess database, including Cadence Virtuoso. However, it is a bit more complicated.
The word ``layer'' now has two meanings. This is unfortunate, but the meaning should be clear in context. First, there are the Xic layers we have mentioned. Second, there is the concept of a component (or OpenAccess) layer. In OpenAccess, layer names are associated with layer numbers, forming an abstraction that can be identified by name or number. OpenAccess also similarly defines another abstract type called the ``purpose''. Again, there are purpose names and purpose numbers, and an abstraction identifiable by name or number. In order to draw an object in OpenAccess, one requires a layer and a purpose. A layer and a purpose in OpenAccess is called a layer/purpose pair (LPP). An LPP is actually what corresponds to an Xic layer.
In Xic, there is a default purpose, with name ``drawing''. When a purpose name is not explicitly specified, this purpose will be assumed.
Every Xic layer has a component layer name and purpose. The name of an Xic layer is given or printed in the form
component_layer[:purpose]If the purpose name is ``drawing'', then it is not printed or given explicitly. Otherwise, the purpose is separated from the component layer name by a colon (':') character. Note that when the purpose is ``drawing'', the Xic layer name is simply the component layer name, so if the only purpose used is ``drawing'', the distinction between OpenAccess and Xic layer names vanishes.
Example Xic layer names:
m1The first name corresponds to component layer name m1 and purpose drawing. The second example uses a purpose named ``pin''.
m1:pin
In Xic, layer names of both types, and purpose names, are always recognized and treated without case-sensitivity. There is no limit on the length of these names. Component layer and purpose names can contain alphanumeric characters plus dollar sign ('$') and underscore ('_').
All of the component layer and purpose names also have corresponding numbers. These may be assigned by the user, or assigned internally by Xic. Xic will maintain the associations, but the numbers are not used by Xic. They are, however, important for compatibility with other tools.
All Xic layers may be given an alias name. The layer will be recognized by this name, as well as its normal name. Xic layers may also contain a description string, presentation attributes such as color and fill pattern, and a host of other flags and properties for use within Xic.