oasis2gbr web page logo

Arc Recognition

GDSII and OASIS do not support arcs. Boundaries that look like arcs or circles are actually created as a series of very short segments that approximate the arc. In terms of data size this can be inefficient. Depending on the radius one might use 40 or 50 segments to smoothly approximate an arc. If you have a PCB style layout with 10,000 round pads the number of segments adds up.

pad with trace represented with arc and with segements

Most Gerber rasterizers have been optimized to support round flashes. Where you a have stand alone pad in GDSII/OASIS, it is very helpful to convert the polygon into a round flash.

Using Arc Recognition

OASIS2GBR has a command line option that turns on arc recognition. The user must also supply a parameter, chord error, that controls the recognition algorithm. Here is the approach to selecting the optimum value of chord error:

Examine a sample of polygons in your OASIS/GDSII database and measure the approximate radius and number of segments. It is best to do this will a full "circle" though you can do it also for partial arcs.

In our example, above we have a round pad of approximately 250 um diameter which is approximated using 16 edges. This means that each segement subtends 22.5 degrees. We can draw a simple diagram that explains how the chord error is computed:

chord error parameter

Entering the values for this example:

    chord error = 125 um ( 1 - cos [22.5/2]) = 2.4 um

Variation in Chord Error

One problem is that many layouts will show a large variation in chord error especially as the radius of the arcs changes. We are currently working on a routine that can recognize this and dynamically adapt. However until that is completed, the user needs to enter a reasonable value of chord error to make the algorithm work.

Selecting the Chord Error

If the chord error entry is too small then few or no arcs will be recognized. This defeats the purpose of the arc recognition function. However the output data to Gerber is not compromised.

If the chord error is way too large then many arcs will be produced but some of them may not accurately reflect the input data. This can result in masks that are unacceptable to the final user. Therefore it is essential not to go too large with the chord error as there is no warning.