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


Extraction General

The following variables control features of the general extraction and association process.

ExtractOpaque
Value: boolean.
When set, Xic will ignore the OPAQUE flag and perform extraction normally on cells with this flag set. The OPAQUE flag would otherwise suppress extraction on the contents of the cell. This flag is set in the flags property of physical cells.

This tracks the setting of the Extract opaque cells, ignore OPAQUE flag check box in the Net and Cell Config page of the Extraction Setup panel from the Setup button in the Extract Menu.

FlattenPrefix
Value: string.
This variable can be set to a string containing a space-separated list of words. The words are intended to match cell names or classes of cell names. Cells with names that match are not treated as individual cells during extraction, instead they are treated as if instantiations are part of the containing cell, i.e., they are logically flattened (see 16.4). This applies to physical cells only, and such cells will have no recognized electrical counterpart.

Note: it is probably more convenient to set the flatten property of physical cells that should be flattened into their parent during extraction. Setting this property with the Cell Property Editor will have the same effect as including the cell in the FlattenPrefix list, but is persistent when the cell is saved.

In the words, the forward slash character (`/') is special, and is used to indicate the type of matching. The possibilities are:

name[/]
This will prefix match cell names, the trailing `/' is optional. For example if name is ``abc'', cell names abc, abc123, and abcounter would match.

/name
This will suffix match cell names. For example, if the word is ``/bar'', cell names bar, foobar, and crossbar would match.

/name/
This will literally match a cell name, for example /foobar/ would match only a cell named foobar.

This tracks the setting of the Cell flattening name keys entry in the Net and Cell Config page of the Extraction Setup panel, which is obtained from the Setup button in the Extract Menu.

Note: in Xic releases prior to 3.1.8, this variable could be set to a single word only, and prefix matching was always employed. In releases of Xic prior to 2.5.19, this variable was named ``PnetFlattenPrefix''.

GlobalExclude
Value: string (layer expression).
This variable can be set to a layer expression (which includes the case of a layer name). Any object in the layout which touches a region where the layer expression evaluates as dark will be ignored by the extraction system. This facilitates use of special layers to mask off parts of a layout to be ignored in extraction.

This tracks the setting of the Global exclude layer expression entry in the Misc Config page of the Extraction Setup panel, which is obtained from the Setup button in the Extract Menu.

GroundPlaneGlobal
Value: boolean.
When set, every object in every cell on a clear-field ground plane layer is assigned to group 0. If not set, only the largest area group on this layer, in the top-level cell, is assigned to group 0.

This tracks the setting of the Assume clear-field ground plane is global check box in the Net and Cell Config page of the Extraction Setup panel from the Setup button in the Extract Menu.

GroundPlaneMulti
Value: boolean.
When set, a layer specified as GroundPlaneClear in the technology file will be inverted, and the inverted version used for grouping and extraction. The MultiNet keyword which optionally follows GroundPlaneClear in the technology file effectively sets this variable. If this variable is unset, then no inversion takes place, and the absence of the GroundPlaneClear layer is taken to indicate ground (group 0). This variable has no effect unless a GroundPlaneClear layer exists.
Note: This replaces the HandleTermDefault variable which existed in earlier Xic releases. It is part of the ground plane support in the extraction system.

This tracks the setting of the Invert dark-field ground plane for multi-nets check box in the Net and Cell Config page of the Extraction Setup panel from the Setup button in the Extract Menu.

GroundPlaneMethod
Value: integer 0-2.
This sets the method used to invert the ground plane for grouping and extraction, if the MultiNet keyword has been applied to a GroundPlaneClear layer in the technology file. The possible values are integers 0-2, which have the same meaning as the integer that optionally follows MultiNet in the technology file (see A.6.4).

This tracks the setting of the inversion method menu in the Net and Cell Config page of the Extraction Setup panel from the Setup button in the Extract Menu.

KeepShortedDevs
Value: boolean.
By default, if an extracted device is found to have all terminals shorted together at the time the device is recognized, the device will be ignored. This will help reject spurious devices from test structures, etc.

If the KeepShortedDevs variable is set, then these devices will be kept (as in pre-2.5.69 releases). This flag may be needed for LVS to pass, if the schematic contains the shorted devices.

This tracks the setting of the Include devices with terminals shorted check box in the Device Config page of the Extraction Setup panel, which is obtained from the Setup button in the Extract Menu.

MaxAssocLoops
Value: integer 0-1000000.
This variable sets a parameter used by the association algorithm. Presently, it is not expected to be useful to the user, and it is recommended that it not be changed.

The variable tracks the setting of the Maximum association loop count entry in the Misc Config page of the Extraction Setup panel from the Setup button in the Extraction Menu.

MaxAssocIters
Value: integer 10-1000000.
This variable sets a parameter used by the association algorithm. Presently, it is not expected to be useful to the user, and it is recommended that it not be changed.

The variable tracks the setting of the Maximum association iterations entry in the Misc Config page of the Extraction Setup panel from the Setup button in the Extraction Menu.

NoMeasure
Value: boolean.
This turns off the extraction of parametric data for devices in the extraction system. This is mainly for debugging, but may save time if the user is interested in topology only. The measurements can be time consuming.

This tracks the setting of the Skip device parameter measurement check box in the Device Config page of the Extraction Setup panel from the Setup button in the Extract Menu.

UseMeasurePrpty
Value: boolean.
When set, the extraction system will read and update (creating if necessary) the measures property (property number 7106) which is used to cache (see 16.7) measurement results. The measurement of device parameters can be time consuming, and the caching can speed up the extraction process significantly. However, using the measurement cache may require user intervention to maintain coherency. If a device layout changes, the user will have to manually update the cache in order to obtain updated parameters. With this variable unset, the default condition will force actual computation of device parameters, and avoid all use of the caching mechanism. This is appropriate while a cell is under development, to avoid cache coherency issues.

This variable tracks the Use measurement results cache property check box in the Device Config page of the Extraction Setup panel from the Setup button in the Extract Menu.

NoReadMeasurePrpty
Value: boolean.
This variable is ignored unless UseMeasurePrpty is set. When set, the extraction system will not read the measures property (property number 7106) which is used to cache (see 16.7) measurement results. When measurement results are required, they will be computed. The property will still be updated, after association, if UseMeasurePrpty is set. Thus, by setting this variable and forcing association, one can get a fresh set of measurement results into the measures properties.

This variable tracks the Don't read measurement results from property check box in the Device Config page of the Extraction Setup panel from the Setup button in the Extract Menu.

NoMergeParallel
Value: boolean.
Setting this variable suppresses merging of parallel-connected devices during extraction. This applies to all devices, and supersedes the Merge directive in the device blocks or the technology file.

This variable tracks the setting of the Don't merge parallel devices check box in the Device Config page of the Extraction Setup panel, which is obtained from the Setup button in the Extract Menu.

NoMergeSeries
Value: boolean.
Setting this variable suppresses merging of series-connected devices during extraction. This applies to all devices, and supersedes the Merge directive in the device blocks of the technology file.

This variable tracks the setting of the Don't merge series devices check box in the Device Config page of the Extraction Setup panel, which is obtained from the Setup button in the Extract Menu.

NoMergeShorted
Value: boolean.
When including devices with all terminals shorted (the KeepShortedDevs variable is set), setting this variable will prevent such devices from being merged as parallel devices, if parallel merging is enabled for the device type.

This variable tracks the setting of the Don't merge devices with terminals shorted check box in the Device Config page of the Extraction Setup panel, which is obtained from the Setup button in the Extract Menu.

IgnoreNetLabels
Value: boolean.
If set, net name labels will be ignored by the extraction system. This is probably only useful for debugging. Although this may allow correct association if a net name label is wrong, the recommended solution is to correct the offending label.

This variable tracks the setting of the Ignore net name labels check box in the Net and Cell Config page of the Extraction Setup panel, which is obtained from the Setup button in the Extract Menu.

UpdateNetLabels
Value: boolean.
When set, net name labels will be updated, and new net name labels possibly created, after association completes. The label text is obtained from corresponding electrical net names.

This is a dangerous operating mode, as if association fails, it is possible that incorrect net name labels will be created. These will subsequently prevent correct association and cause LVS failure, until removed or corrected by hand.

When creating library cells, running extraction with this variable set can be a final action before saving the finished cell. This must only be done if the cell passes LVS. The created net name labels should improve association efficiency, but are not essential.

This variable tracks the state of the Update net name labels after association check box in the Net and Cell Config page of the Extraction Setup panel, which is obtained from the Setup button in the Extract Menu.

FindOldTermLabels
Value: boolean.
When this variable is defined, Xic will recognize the ``term labels'' of earlier releases as net labels. In Xic-3, term labels were used (optionally) to specify the conductor groups that were associated with cell terminals in layouts. These are labels, created by the user on conducting layers, placed over an object on the same layer.

The term labels would also be recognized as net labels if the PinPurpose variable is set to an empty string, or the ``drawing'' purpose name. Setting the FindOldTermLabels is redundant in that case. The label searches are separate, and both will be done if enabled.

Whether this variable is set or not mirrors the status of the Find old-style net (term name) labels check box in the Net and Cell Config page of the Extraction Setup panel from the Extract Menu.

MergeMatchingNamed
Value: boolean.
If two physically unconnected conductor groups have the same logical net name (see 16.5), if this variable is set the groups will be logically merged and treated as a single group. This allows successful top-level LVS of cells containing split nets. Below the top level, split nets are detected by other means so setting this variable is not required for successful LVS if the top-level cell contains no split nets.

The group names that apply are obtained from net name labels, or from cell terminals that have been placed by the user. By default, net name matching is case-insensitive, though this can be changed with the NetNamesCaseSens variable. The name matching also treats as equivalent various subscripting delimiters, as listed in the description of the Subscripting variable.

This variable tracks the state of the Merge groups with matching net names check box in the Net and Cell Config page of the Extraction Setup panel, which is obtained from the Setup button in the Extract Menu.

MergePhysContacts
Value: boolean.
When set, additional association logic is employed to detect and account for split nets in instance placements. A ``split net'' is a logical net consisting of two or more disjoint physical conductor groups. The disjoint parts of the net are connected when instances are placed, through parent cell metalization. If the schematic shows the net fully connected in the master, LVS will fail on the parent unless this variables is set.

This variable tracks the state of the Logically merge physical contacts for split net handling check box in the Misc Config page of the Extraction Setup panel, which is obtained from the Setup button in the Extract Menu.

NoPermute
Value: boolean.
When this variable is set, the association algorithm will not attempt to use symmetry trials to find a solution. Symmetry trials are normally used to iterate through permutations when searching for a solution. During a trial, a particular set of associations is assumed, and the algorithm continues. If an inconsistency is found later, the associations made during the trial are reverted, and a new trial is started.

Many circuits do not require a permutation search. In some circuits, though, the permutation search can be a very time-consuming process. In circuits where association is known to fail perhaps because the wiring is incomplete, setting this variable will save time. This variable is mostly for debugging, or for cases where association is not needed. Of course, if a permutation search is needed and not performed, LVS will fail.

Permutes are also skipped if a device or subcircuit is found that can not possibly be associated.

This tracks the setting of the Don't run symmetry trials in association check box in the Misc Config page of the Extraction Setup panel, obtained from the Setup button in the Extract Menu.

PinLayer
Value: string.
If this variable is set to a layer name (or layer-purpose pair name) all net name labels must appear on the named layer. The ``pin'' purpose, and any setting of the inPurpose variable, are ignored.

The label will be associated with the conducting object containing the label origin that is highest (farthest from the substrate) in the layer table. Possible ambiguity with the associated layer makes this scheme not recommended, but support is present for compatibility with older cell libraries, such as the open-source CMOS libraries from Oklahoma State University.

This variable tracks the Net label layer entry in the Net Config page of the Extraction Setup panel, obtained form the Setup button in the Extract Menu.

PinPurpose
Value: string.
This applies when the PinLayer variable is not set. By default, net name labels must reside on a layer-purpose pair where the purpose name is ``pin''. However, if this variable is set to another valid purpose name, then that name will be required of net labels instead.

If the property is set to an empty string (i.e., as a boolean), the ``drawing purpose is assumed. One could equivalently give the name explicitly. This is not really recommended as it can be inefficient.

This variable tracks the Net label purpose name entry in the Net Config page of the Extraction Setup panel, obtained form the Setup button in the Extract Menu.

RLSolverDelta
Value: floating point > = 0.01.
It this value is set, the resistance/inductance extractor will assume this grid spacing, in microns. The number of grid cells enclosed in the device will increase for physically larger devices, so that larger devices will take longer to extract. If this variable is set, the other RLSolver variables are ignored. Setting this variable may be appropriate if all resistors are ``small'' and dimensions conform to a layout grid.

This tracks the setting of the Set/use fixed grid size entry in the Device Config page of the Extraction Setup panel, which is obtained from the Setup button in the Extract Menu.

RLSolverTryTile
Value: boolean.
If set, the extractor will attempt to use a grid that will fall on every edge of the device body and contacts. The device and contact areas must be Manhattan for this to work. If such a grid can be found, and the number of grid cells is a reasonable number, this will give the most accurate result.

This tracks the setting of the Try to tile check box in the Device Config page of the Extraction Setup panel, which is obtained from the Setup button in the Extract Menu.

RLSolverGridPoints
Value: integer 10-100000.
When not tiling (RLSolverTryTile is not set), this sets the number of grid points used for resistance/inductance extraction. This number will be the same for all device structures, so that computation time per device is nearly constant. Higher numbers give better accuracy but take longer. The value used if not set is 1000.

This tracks the setting of the Set fixed per-device grid cell count entry in the Device Config page of the Extraction Setup panel, which is obtained from the Setup button in the Extract Menu.

RLSolverMaxPoints
Value: integer 1000-100000.
When tiling (RLSolverTryTile is set), the maximum number of grid cells is limited to this value. If the tile is too small, it will be increased in size to keep the count below this value, in which case the tiling will not have succeeded so there may be a small loss of accuracy. Using a large number of grid points can take a long time. The value used if not set is 50,000.

This tracks the setting of the Maximum tile count per device entry in the Device Config page in the Extraction Setup panel, which is obtained from the Setup button in the Extract Menu.

SubcPermutationFix
Value: boolean.
Setting this variable enables additional association logic. It applies when there is perfect topological matching between layout and schematic, but LVS is failing due to different permutations of permutable subcell contacts being assumed in the electrical and physical parts. Setting the variable will enforce the electrical permutation on the physical solution, which will allow LVS to pass if the permutation difference was the only issue.

This should no longer be needed, as the two-pass association algorithm in current use should resolve these cases automatically. This variable should therefor not be set in general, but it is possible that it might allow successful LVS in some obscure case.

This variable tracks the Apply post-association permutation fix check box in the Misc Config page of the Extraction Setup panel, which is obtained form the Setup button in the Extract menu.

VerbosePromptline
Value: boolean.
When set, lots of messages will be printed on the prompt line during extraction. Otherwise not much is printed, which may speed things up. This variable is linked to the Be very verbose on prompt line during extraction check box of the Misc Config page of the Extraction Setup panel.

ViaCheckBtwnSubs
Value: boolean.
By default, it is assumed that connections between subcells will be made by touching metal only. This includes the case where the metal is from a flattened wire-only cell, as would be provided by via cells as described in 16.9.2. One can easily adapt layout methodology where this is true. Otherwise, this variable can be set, which will cause explicit testing for the presence of vias between subcircuit nets. This is a very expensive operation.

Whether this variable is set or not tracks the state of the Check for via connections between subcells check box in the Net Config page of the Extraction Setup panel from the Extract Menu.

ViaSearchDepth
Value: non-negative integer.
If we have intersecting areas of top and bottom conductor, and we are searching for an area of via material that would connect the two metal objects, this sets the depth in the current cell hierarchy to search (see 16.9.2). The default is zero, indicating to search the current cell only. Generally, layout methodology can easily ensure that this value can be safely zero, but there may be cases that require extraction where such methodology was not practiced. In such a case, where the methodology is completely unknown, this value should be set to a large number (internally it is limited to 40, the maximum cell hierarchy depth) which will ensure that all via-induced connections are found. This can dramatically increase extraction time.

The value of this variable tracks the Via search depth entry area in the Net Config page of the Extraction Setup panel from the Extract Menu.

ViaConvex
Value: boolean.
This applies when checking for connectivity through a via during extraction. When set, all non-rectangular vias are assumed to be convex polygons. The test region is taken as a small rectangle centered on the via bounding box. This simplifies and should speed testing. It is intended specifically for circular vias, as used in superconductive electronics. It has no effect on rectangular vias. It should not be set if any vias are non-convex polygons, as incorrect results may occur.

Whether or not this variable is set tracks the state of the Assume convex vias check box in the Net Config page of the Extraction Setup panel from the Extract Menu.


next up previous contents index
Next: Extraction Menu Commands Up: Xic Variables Previous: Extraction Tech   Contents   Index
Stephen R. Whiteley 2022-05-28