next up previous contents index
Next: Selections Up: Xic Variables Previous: General Visual   Contents   Index


Keyboard `!' Commands

The !set keywords below affect the `!' commands available from the keyboard. Commands of this form that are not recognized as internal commands are assumed to be operating system commands, and are executed in a separate window under a command shell.

JoinMaxPolyVerts
Value: integer 0 or 20-8000.
This sets an upper bound on the number of vertices in polygons created with the !join command and similar operations. The default is 600 vertices. If set to 0, no limit is applied.

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.

JoinMaxPolyGroup
Value: integer >= 0.
When a collection of trapezoids is being combined into polygons, such as for the !join command, 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 100. If set to zero, no limit is applied. Generally, smaller limits allow faster join operations, however this will leave as separate objects more polygons that could have been joined.

JoinMaxPolyQueue
Value: integer >= 0.
When objects are being joined in the !join command and similar, 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 (default is 1000) the list is sent to the function that recombines the trapezoids into polygons. This variable is used to set the length threshold. Setting the value to 0 allows the list to grow without bound. Generally, smaller thresholds provide faster processing, but will produce more polygons.

JoinBreakClean
Value: boolean.
In the !join command and similar functions, 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.

LayerPartSize
Value: floating-point number.
When geometrical operations are performed over an entire cell, a logical square grid is created over the cell relative to the lower-left corner. The operations are performed for each grid element that intersects the cell area, and the results are combined. This can be more efficient than performing the operations over the entire cell in one shot. Performance rapidly degrades as the amount of geometry per grid area increases. Best performance is 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. If set to ``0'', gridding is not used.

The !layer command and AdvanceZref script functions use this variable.

NoSnapToEdges
Value: boolean.
When set, the cursor snapping to edges of existing objects is disabled. This applies to the commands with the following keywords: polyg, round, donut, arc, wire, box, erase, xor, break.

Shell
Value: string.
This variable can be set to the name of a command interpreter which will be used for the `!' and !shellcmd inputs. The interpreter will be instantiated in its own window. If not given, the shell program used will be taken from the SHELL environment variable, and if this variable is not found the default is ``/bin/sh''. WRspice users can set the shell to ``wrspice'' for quick access to the full user interface of that program.

Under Microsoft Windows, the value must be a full path name to the shell executable, and the COMSPEC environment variable is also consulted for the default shell, after the SHELL variable.

SpotSize
Value: integer 0-1000.
When an e-beam mask is written, the layout is rendered using a certain pixel size (known as the ``spot size'') set by the e-beam equipment. Typically, this size is 0.1 to 0.5 microns, with smaller sizes providing higher resolution, but taking longer to write and therefor costing more. There can be numerical problems in ``rasterizing'' round objects to the e-beam grid. Since the round object is rendered as a collection of spot-pixels, the feature is not particularly round, but most importantly the number of pixels used may not be well defined, and therefor the figure area may not be as expected. Xic has features to precondition round objects to avoid this problem: the SpotSize variable and the !tospot command.

This variable can be set to the spot size in use, specified in milli-microns. Thus, if the spot size is 0.1 micron, one would use

!set SpotSize 100
If the SpotSize variable is unset or set to 0, the feature is disabled. The maximum value accepted is 1000. With the SpotSize variable set to a positive value, objects created with the round and donut buttons will be created so that all vertices are placed at the center of a spot, and a minimum number of vertices will be used. The sides number is ignored. This applies only to figures with minimum radius 50 spots or smaller; the regular algorithm is used otherwise. An object with this preconditioning applied should translate exactly to the e-beam grid. This conditioning, with SpotSize set nonzero, applies only to objects created with the round and donut commands, and not the arc command or general polygons.


next up previous contents index
Next: Selections Up: Xic Variables Previous: General Visual   Contents   Index
Stephen R. Whiteley 2006-10-23