The following !set variables affect commands found in the Edit Menu and the Modify Menu.
This tracks the setting of the Maximum undo list length entry area in the Editing Setup panel from the Edit Menu.
This tracks the setting of the Maximum subcell depth in ghosting menu in the Editing Setup panel from the Edit Menu.
The default is 4000 if this variable is not set. If, when moving a large number of objects, the pointer motion is too sluggish, the user can set this variable to compensate, or can limit the subcell expansion depth by setting MaxGhowtDepth if expansion causes the problem.
This tracks the setting of the Maximum number of ghost-drawn objects entry area in the Editing Setup panel from the Edit Menu.
The No wire width change in magnification check box in the Editing Setup panel from the Edit Menu tracks the state (set or unset) of this variable.
The Allow Create Cell to overwrite existing cell check box in the Editing Setup panel from the Edit Menu tracks the state (set or unset) of this variable.
This is a tri-state variable. If not set, there will be no layer change in these commands. Thus by default any current layer change made during the command is ignored by the command. If set to the string ``all'' (case insensitive), then a layer change will apply to all objects being moved or copied. All new objects will be placed on the new layer, regardless of the original layers of the objects. If set to anything else, including to nothing (i.e., as a boolean) then only objects on the previous current layer will be changed to the new layer. Other objects will remain on their original layer.
This variable tracks the state of the radio buttons in the Layer Change Mode pop-up, which appears when the Set Layer Chg Mode button in the Modify Menu is pressed.
This sets an upper bound on the number of vertices in polygons created by a join operation. The default is 600 vertices. If set to 0, no limit is applied. The variable tracks the Maximum vertices in joined polygon entry in the Join or Split Objects panel.
There is no internal limit on the vertex count of a polygon in memory. Although setting JoinMaxPolyVerts to 0 allows arbitrarily large polygons to be created, one should be reasonable. Huge polygons can be cumbersome and inefficient. Oversize polygons and wires will be broken up, if necessary, when a file is saved to disk. For the different formats, the limits are
native | no limit |
CIF | no limit |
CGX | 8000 vertices |
GDSII | depends on GdsOutLevel, max is 8000 vertices |
OASIS | no limit |
For CIF files, Xic can read/write arbitrarily large polygons and wires, but beware that other tools may have built-in limits.
When a collection of trapezoids is being combined into polygons during a join operation, the collection is first divided into connected groups, each of which will be converted to one or more polygons. This variable limits the number of trapezoids in the groups. The default value (when this variable is unset) is 0, meaning that there is no limit. Generally, applying a limit (for example, 300) provides faster join operations, however this will leave as separate objects more polygons that could have been joined.
This variable tracks the Maximum trapezoids per poly for join entry in the Join or Split Objects panel.
When objects are being joined, they are first decomposed into trapezoids. The trapezoids from the objects are saved in a single list, and when the list length exceeds a certain value the list is sent to the function that recombines the trapezoids into polygons. This variable is used to set the length threshold. The default value (when this variable is unset) is 0, which allows the list to grow without bound. Generally, applying a limit (for example, 1000) provides faster processing, but will produce more polygons.
This variable tracks the Trapezoid queue size for join entry in the Join or Split Objects panel.
In a join operation, when building up the polygons and the vertex limit (JoinMaxPolyVerts) is reached, ordinarily the present polygon is output, and a new one is started immediately. This generally produces a set of polygons with complicated and seemingly arbitrary borders. If this variable is set, then the polygons are initially built ignoring the vertex limit, and polygons that exceed the vertex limit are split into pieces along Manhattan bisectors, so that no piece exceeds the vertex count. This gives a much nicer looking layout, but is more compute intensive.
This variable tracks the Clean break in join operation limiting check box in the Join or Split Objects panel.
By default, wires do not participate in join/split operations, these operate on boxes and polygons only. Wires, however, will be joined with other wires on the same layer it they share an endpoint and have the same width. If this variable is set, then wires will be treated like polygons in join and split operations, but wires never participate in the join operation when new objects are created.
This variable tracks the Include wires (as polygons) in join/split check box in the Join or Split Objects panel.
In releases prior to 3.0.0, this variable was named ``LayerPartSize''.
When geometrical operations are performed over a large area, a logical square grid is created over the area relative to the lower-left corner. The operations are performed for each grid element that intersects the area, and the results are combined. This can be more efficient than performing the operations over the entire area in one shot. Performance rapidly degrades as the amount of geometry per grid area increases. Best performance is probably obtained with 10000 or fewer trapezoids per grid.
This variable specifies the size of the grid, in microns, set as a floating-point number. If not set, the default grid size is 100 microns. Acceptable values are 1.0 - 10000.0, or 0. If set to 0, partitioning is not used.
The variable tracks the Partition size set in the Evaluate Layer Expression panel.
This will enable new multi-threaded functionality as it becomes available. This is set to the number of helper threads that can be called upon to parallelize certain operations. The best value is probably one less than twice the number of available processor cores. It should not be set to a larger value, but one might wish to try smaller values. If unset, or set to 0, the program is single threaded.
This variable tracks the Number of helper threads entry in the Evaluate Layer Expression panel from the Edit Menu.
Presently, multi-threading is used when evaluating a layer expression using a grid. Evaluation in each of the grid cells can be done in parallel, so these jobs are submitted to the thread pool. One can experiment with the partition size to get fastest results, larger partitions are more likely to overcome the multi-threading overhead.