Syntax: !tospot spotsizeWhen 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.
The !tospot command will apply an algorithm (described below) to all selected polygons. This will apply to any polygon. The spotsize, if given, is the spot size to use in microns. Values of 0.01 - 1.0 are accepted. If not given, the value is taken from the SpotSize variable. If this is not set or set to zero, a value will be prompted for.
The algorithm is intended to translate small objects with many vertices to a representation which will pass unchanged through e-beam rasterization. This will in general change the shape of an object, to something close to that which will be rendered on the mask.
The algorithm uses the following logic:
Following application of the algorithm, each vertex of the figure is centered in an e-beam spot, so it is unlikely that round-off or other error will cause the figure to change during rasterization.
The algorithm is intended for unconnected, nonconducting objects such as vias. It should not in general be applied to wiring objects, since it will generate small gaps between processed objects which were originally touching, which will cause the extraction functions to detect that the objects are disconnected.
Although the object is shown on-screen as a polygon, The actual rendered object will be composed of pixels. The size of the object on-screen is therefor one spot-size smaller than the rendered size (since half of the spot for each edge is not shown).
Applying !tospot to circular objects created with a SpotSize is not the same as creating the circular object with the round or donut buttons with SpotSize nonzero. When using !tospot on round objects created without SpotSize set, it is best to use an even number of sides for round objects. In particular, an 8-sided figure is probably the best choice for a ``circular'' via.