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


Technology File Layer Blocks

There is separate specification of layers used for schematic layout and those used for physical layout. The layer used for schematics is always called ``SCED'', and if not defined in the technology file, it and any other missing electrical-mode layers will be created by Xic. It is always the first layer, and can not be deleted. Additional layers are used for visual purposes, and for storage of modifications that can be reused later by converting them to the SCED layer. Xic maintains a standard set of electrical layers, in a standard order. The user can modify the presentation attributes, and add layers as desired.

There are no such constraints or default layers in physical mode.

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. In Xic, layers have a name, which follows the CIF format (1-4 alphanumeric characters), and an optional ``long name'' which can be just about any string. In Xic commands and functions, either name can be used to access a layer, so that all names are required to be unique among all physical and electrical layers. If the name string following the keyword does not fit the CIF restrictions, the following actions are taken:

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, for example the active wiring "SCED" layer must come first.

It is also possible for mini-layer blocks to appear in the hard-copy driver definitions. These will provide alternate layer attributes that are in force when that print driver is in use, in hard-copy output and on-screen. These will be described in the section describing the print driver blocks. The only keywords from the list below that can be used in these mini-layer blocks, other than PhysLayer/ElecLayer, are RGB, Filled, and Invisible.

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

The layer specification further consists of a list of keywords in the format given below.

In the table that follows, 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).

All of the keywords below are optional, and can appear under an electrical or physical layer, unless stated otherwise. It is not strictly necessary to define any layers at all. By convention, the electrical layers, if any, are defined first, followed by the physical layers. A ``layer block'' consists of the keyword which defines the layer name and all of the following keywords up to the next layer name specification, or end of the file. The opening layer name specification defines the ``current'' layer, and the keywords that follow apply to that layer.

Several of these keywords can be programmed from within Xic with the Layer Parameter Editor from the Attributes Menu. Other panels from the Attributes Menu allow setting colors, fill patterns, etc. which correspond to values from keywords listed below.

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

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.

LongName longname
This will set (or reset) the long name field of the current layer. If no non-space characters are found after the keyword, the statement is ignored. Leading and training white space is removed from the argument.

Description description_string
This will set the description field of the current layer. If no non-space characters are found after the keyword, the statement is ignored. Leading and training white space is removed from the description string.

RGB colorspec
This keyword will set the color used to render objects on the layer on-screen. The colorspec string is the name of a color or an RGB triple: If the color is given as a name, the color will be converted to its RGB values if the file is updated. If no RGB keyword is given for a layer, Xic will assign a random color. The RGB keyword is allowed in the mini-layer blocks found in the print driver specifications.

$\textstyle \parbox{4in}{
{\tt Filled} [{\tt y}[...]]\\
{\tt Filled} {\tt n}[...] [{\tt o, f, c}]\\
{\tt Filled} {\it bit\_data\/} [{\tt y, o, c}]
}$
This keyword sets the fill and outline style used to render objects on the layer. The tokens (other than bit_data) can be words starting with the indicated letters, or or just the letters themselves, e.g., ``n'', ``no'', and ``none'', are equivalent. This is case-insensitive.

If no tokens follow the keyword, or the first token starts with `y', solid fill will be used. Additional tokens on the line will be ignored.

If the first token starts with `n', no fill pattern (empty fill) will be used. In this case, there are three outline styles available:

  1. A thin solid line boundary.
  2. A thin dashed line boundary.
  3. A thick solid line boundary for Manhattan boxes and polygons, and a thin solid line boundary for other objects.

There is also the ``cut'' attribute, where diagonal lines are drawn over boxes, forming an X. This applies to boxes only, not wires or polygons, even though they may be rendered as four-sided rectangular figures.

Any text that follows the word that started with `n' is examined for the presence of the characters `o', `f', and `c'. These can be found as individual letters or parts of words, for example ``outline cut'' and ``oc'' and ``o c'' are all equivalent. In addition, this is all case-insensitive.

If neither `o' or `f' is found, a thin solid outline (style 1) is used. If `o' is found but not `f', a thin dashed line (style 2) is used. If `f' is found, with or without `o', then a thick solid line is used for edge segments of Manhattan objects, and a thin solid line is used for non-Manhattan objects (style 3).

In any case, if `c' is found, the ``cut'' attribute is applied. If `o' is also found buf not `f', the diagonals are shown as dashed lines, the same as the boundary. Otherwise, the diagonals are always thin solid lines.

The form on the third line is used to specify a stipple pattern to use for fill. Xic supports any stipple map size with the x and y demensions in the range of 2-32. However, Xic releases prior to 3.2.25 supported only 8x8, 8x16, 16x8, and 16x16 maps. The format described here is generally not backwards compatible with these releases.

Maps can be read as hex numbers, or as ascii tokens, but not in the same line. When Xic writes a technology file, the default is to use the ascii token format, which actually renders the map in a crude way. This format is best illustrated by an example:

    Filled \
      |   ..   |  (0x18) \
      |  ....  |  (0x3c) \
      | ...... |  (0x7e) \
      |...  ...|  (0xe7) \
      |...  ...|  (0xe7) \
      | ...... |  (0x7e) \
      |  ....  |  (0x3c) \
      |   ..   |  (0x18) outline

The points to note here are the following.

  1. Line continuation is used so that the map is visible to a human reader. This is not required in general.

  2. Each line of the map contains space and non-space characters, surrounded by '|' characters. Although a period is used here, any non-space printing character will work.

  3. Each of these must contain the same number of characters, this number being in the range 2-32. This sets the width of the map.

  4. The number of these constructs found in the line sets the height of the map. This must be in the range 2-32.

  5. The map data parser ignores anything enclosed in parentheses. Above, the equivalent hex number for the data pattern is provided, but is ignored by the parser.

If the map data are followed by any text containing the characters `y' or `o' (case insensitive), patterned areas will be outlined with thin lines of the same color. If the character `c' is found, the ``cut'' attribute is applied, as for the empty fill case.

An equivalent form using hex data is

[x=width] [y=height] hex_number hex_number ...

The width and height are decimal numbers in the range 2-32. The number of hex digits that follow must match the height.

The width and height specifications can be omitted, in which case the format reverts to the pre-3.2.25 expectation. The hex numbers must be one of

If the boolean variable TechNoPrintPatMap is set when Xic writes a technology file, then the hex form will be used to specify fill patterns. Otherwise, the ascii form is used.

Here are a few more example fill specifications:

Filled y
Filled no fat
Filled cc aa cc aa cc aa cc aa outline

In electrical mode, the SCED layer defaults to solid fill, and other layers default to empty fill with a thin outline. All layers default to empty fill with a thin outline in physical mode. The Filled keyword is allowed in the mini-layer blocks found in the print driver specifications.

Invisible [y|n]
If this keyword appears, and the following argument indicates true, the layer will not be visible, though it will appear in the layer table, where the visibility status can be changed.

The Invisible keyword is allowed in the mini-layer blocks found in the print driver specifications. This is the only place where use of the y|n argument may be needed, in particular if Invisible is specified in the main layer block, Invisible n may be used in the driver block to make the layer visible in print driver output.

Blink [y|n]
If this keyword appears, the layer color will oscillate between two shades with a 0.5 second period. This is only supported in pseudo-color (usually 256 colors) graphics mode.
Default: not blinking

WireWidth width
This keyword can appear in physical layer fields. The width is a floating point number which sets the default wire width to that value in microns. This value will be used when wires are created in Xic.
Default: 0

Symbolic [y|n]
This keyword indicates that the layer will not be shown in the display produced by the Cross Section command (in the View Menu). Otherwise, it doesn't have any purpose in Xic, but might be useful to the user as a flag to indicate a non-physical layer.

NoMerge [y|n]
This keyword indicates that automatic merging of objects is suppressed on the layer. This overrides any merging enabled by the Clip and merge overlapping boxes button in the Set Import Parameters panel, and the Merge Boxes, Polys button in the Edit Menu, and the corresponding variables.

CrossThick thickness
This keyword, which can be applied to physical layers only, sets the layer thickness as rendered in the Cross Section command in the View Menu. The thickness is given in microns.

CrossField dark | clear
This sets the layer polarity assumed in the Cross Section command. If set to ``dark'', then inverse polarity (dark field) will be used in the cross section display, which is appropriate for via layers, where the colored areas in the normal layout display actually represent a hole through the insulator.

The following keywords set the layer mapping for GDSII and OASIS format input and output. These can be programmed from within Xic with the Conversion Parameter Editor in the Convert Menu.

StreamData layernum datatype
This keyword is deprecated, and can be read but is not generated by Xic. The layernum and datatype are the layer mapping used when converting to and from GDSII format. The layer must be in the range 0 through 65535, and the datatype can take values -1 through 65535. Values larger than 255 are outside of the GDSII specification, but are sometimes used anyway although files containing such data may not be generally portable. If -1 is given as the datatype, all GDSII datatypes will be mapped to the present Xic layer, and datatype 0 will be used for output. Otherwise, the layer and datatype in a GDSII file must match those given for successful mapping to the Xic layer. Note that often the end of range values are reserved in other CAD environments, and that some releases of the GDSII format support only 64 layers and datatypes. The datatype is used by Xic only in conjunction with the NoDrcDatatype keyword, and is otherwise typically set to 0. This keyword has been superseded by StreamIn and StreamOut.

StreamIn layer_list [, datatype_list]
This keyword set the mapping of GDSII layers and datatypes to Xic layers when a GDSII or OASIS file is read. This is described fully in the description of the Conversion Parameter Editor, in 11.20.

StreamOut out_layer [out_datatype]
This keyword sets the mapping of Xic layers to GDSII layers and datatypes when a GDSII or OASIS file is written. This is described fully in the description of the Conversion Parameter Editor, in 11.20.

NoDrcDatatype datatype
If this keyword is given, then any object that has the given datatype will be ignored during design rule checking. This is described fully in the description of the Conversion Parameter Editor, in 11.20.

The following keywords are used to set design rules in the physical layers. These keywords can appear only in physical layer blocks. See the description of the design rules in 12.2 for more information. The rules can be programmed from within Xic with the Design Rule Editor. These keywords are not recognized in XicII or Xiv.

Connected [Region source_expr] [string]
NoHoles [Region source_expr] [string]
Overlap [Region source_expr] layer_expression [string]
IfOverlap [Region source_expr] layer_expression [string]
NoOverlap [Region source_expr] layer_expression [string]
AnyOverlap [Region source_expr] layer_expression [string]
PartOverlap [Region source_expr] layer_expression [string]
AnyNoOverlap [Region source_expr] layer_expression [string]
MinEdgeLength [Region source_expr] layer_expr length [string]
MinArea [Region source_expr] area [string]
MaxArea [Region source_expr] area [string]
MinWidth [Region source_expr] width_in_microns [string]
MinSpace [Region source_expr] space_in_microns [string]
MinSpaceTo [Region source_expr] layer_expr dimension_in_microns [string]
MinSpaceFrom [Region source_expr] layer_expr dimension_in_microns [string]
MinOverlap [Region source_expr] layer_expr dimension_in_microns [string]
MinNoOverlap [Region source_expr] layer_expr dimension_in_microns [string]

The following keywords, which can appear in physical layer fields, set various flags and variables used for netlist and parameter extraction. These can be programmed from within Xic with the Extraction Parameter Editor in the Extract Menu. See the chapter on extraction (13.1.2) for more information. These are not recognized in XicII or Xiv.

Conductor [ Exclude expression ]
This keyword indicates that the present layer is to be included in extracted conductor groups.

Routing
This keyword implies that the layer is a conductor used for connecting between cells.

Only one of the following two ground plane keywords can appear in the technology file.

$\textstyle \parbox{4in}{\raggedright
{\tt GroundPlane [Global]}\\
{\tt GroundPlaneDark [Global]} (alias)\\
}$
This keyword indicates that the present layer is to be treated as a clear-field ground plane.

$\textstyle \parbox{4in}{\raggedright
{\tt GroundPlaneClear [MultiNet]}\\
{\tt TermDefault [MultiNet]} (alias)\\
}$
This keyword indicates that the present layer is to be treated as a dark-field ground plane.

Via layer1 layer2 [expression]
This keyword indicates that the present layer may provide connection points between conductor nets on layer1 and layer2.

Contact layer [expression]
This keyword defines a layer that may be in contact with another Conductor layer, and is to be grouped accordingly in the wire net extraction.

DarkField
This keyword indicates that the layer polarity on the chip is the reverse of that shown on-screen.

Thickness thickness
This keyword supplies the film thickness of the corresponding deposited film. The thickness is given in microns.

Rho resistivity
This keyword supplies the resistivity, in MKS units (ohm-meter), of the corresponding conducting film.

Sigma conductivity
This keyword supplies the conductivity, in MKS units (Si/meter), of the corresponding conducting film.

Rsh ohm_per_square
This keyword supplies the sheet resistance of a resistive material.

EpsRel diel_constant
This keyword supplies the relative dielectric constant of insulating layers.

Capacitance units_per_sqmicron [units_per_micron]
This enables computation of the capacitance of a conductor group. The keyword ``Cap'' is recognized as an alias.

Lambda pene_depth
This keyword specifies the London penetration depth of superconducting conductors, in microns.

Tline grnd_plane_layer diel_thick diel_const
This keyword will enable a microstrip model which computes the transmission line parameters of strips of conductor.


next up previous contents index
Next: Technology File Attributes Up: Technology File Previous: Technology File Scripts   Contents   Index
Stephen R. Whiteley 2012-04-01