-
- 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.