next up previous contents index
Next: Scripts 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.

InstallCmdFormat
Value: string.
Setting this string allows modification of the installation command used in the !update command, for non-Windows releases only. If not set the effective value used is
xterm -e sudo %s

As an example, a reasonable alternative might be

xterm -e su root -c \"%s \"
which would use su rather than sudo, and require the root password.

The characters ``%s'' are replaced with a script invocation command that actually performs the installation. If this does not appear in the given string, this command will be added to the end, following a space character.

The internal script invocation command calls /bin/sh to run the shell script upd_install.sh found in the startup directory of the installation location. The three arguments to this script are the distribution file path, the distribution name token (such as ``Linux2''), and the installation location prefix (such as ``/usr/local''). This script, too, can be customized or replaced.

The default strings pop-up a terminal (xterm) window, and ask for a (root) password. The user, who needs to know a bit about Unix shell programming, can modify this behavior by setting this variable to a new string.

JoinMaxPolyVerts
Value: integer 0 or 20-8000.
This variable applies to the !join command, the join operation when new objects are created, the Join and Join All buttons in the Join Boxes, Polygons panel (from the Edit Menu), and the associated script functions and elsewhere where join operations occur.

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.

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.
This variable applies to the !join command, the join operation when new objects are created, the Join and Join All buttons in the Join Boxes, Polygons panel (from the Edit Menu), and the associated script functions and elsewhere where join operations occur.

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.

JoinMaxPolyQueue
Value: integer >= 0.
This variable applies to the !join command, the join operation when new objects are created, the Join and Join All buttons in the Join Boxes, Polygons panel (from the Edit Menu), and the associated script functions and elsewhere where join operations occur.

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.

JoinBreakClean
Value: boolean.
This variable applies to the !join command, the join operation when new objects are created, the Join and Join All buttons in the Join Boxes, Polygons panel (from the Edit Menu), and the associated script functions and elsewhere where join operations occur.

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.

JoinSplitWires
Value: boolean.
This applies to join operations as listed for the variables above, but not for the joining when new objects are created. It also applies to the split operation.

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.

PartitionSize
Value: floating-point number.
This variable applies to layer expression evaluation, including the !layer and !compare commands, and the AdvanceZref script function.

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 from the Edit Menu.

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: real 0-1.0.
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 microns. Thus, if the spot size is 0.1 micron, one would use

!set SpotSize 0.1
If the SpotSize variable is unset or set to 0, the feature is disabled. The maximum value accepted is 1.0. 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: Scripts Up: Xic Variables Previous: General Visual   Contents   Index
Stephen R. Whiteley 2012-04-01