Sizing Polygons

A commonly needed operation in the mask design business is to size up (or down) each polygon by a given amount. Sizing may be done to account for process shrinkage or it may be done in order to create a "derived" layer. In any event the ability to size thousands or even millions of polygons quickly and efficiently is built into the boolw32f engine.


The operation code for sizing is -size:XX where XX is the amount of sizing measured perpendicular from each edge.

Suppose we have a GDSII file, in.gds, in units of microns, and we want to size up all of the polygons on layer 7 by 0.25 um. We want to output the results out.gds on layer 9. Then the command line would be:

boolw32f in.gds out.gds TOP 9 +7-sizing:0.25

Computational Issues

As long as the sizing value is very small relative the smallest dimension of the polygon, the simple approach of offsetting the edges and then filleting the corners works well. But there are cases where the sizing value approaches or even exceeds the shortest edge of the polygon. In this case the simple approach can break down and give bizzare results or generate illegal polygons (ones that fold onto themselves.)

large sizing value

Our experience shows that the users often need to perform sizing that cannot be treated using the simple approach, at least for some polygons. We have developed an alternate sizing algorithm which guarantees that legal polygons result for any value of sizing. However one needs to recognize that large sizings often will eliminate small features.

In the example at right, the original polygon is the black boundary. A sizing of +25 um results in losing some small features (red outline) and a sizing of +50 um results in losing additional small features.

Incremental Sizing

instead of using the -sizing option on the command line you can use the -incrsizing: option. There are additional suboptions which are summarized below:

corners are 'clipped' using either three points or five points
-incrsizing:value sizes up to value by using a series of smaller incremental sizing steps. Uses 3 points to approximate the corner sizing.
-fivept uses five points to approximate the corner sizing. Use this together with the -incrsizing:value option to increase the number of vertices used to approximate the corner sizing.

Page     1  |   2  |   3  |   4  |   5  |   6