gbr2oasfrac is a library that reads a Gerber RS274X file, fractures it into trapezoids and creates output in the OASIS format. It is intended to be incorporated into an application used for preparing Gerber layout data for a mask writer. Currently it is available for Windows (32 bit) but can be easily made available on 64 bit Linux and Solaris as needed.
For mask writers developed for the integrated circuit industry, Gerber cannot be read directly. Instead we offer a product that converts the Gerber into OASIS while simultaneously fracturing the OASIS data into trapezoids.
When the OASIS specification was developed as a replacement for GDSII, a portion of the specification was also created optimized for use by mask writers. Until recently, no mask company directly read the OASIS format due to legacy reasons. However a new machine, recently developed, uses the OASIS format for its input and Artwork has developed an efficient yet low cost fracturing engine for it.
Vector data input to a mask writer must be optimized for very fast rasterization.
Figures that are convex in one direction (we call this convex in X) can be very efficiently rasterized with minimum computation. For Manhattan data (90° edges) the trapezoid reduces to a rectangle.
Input file
The user can specify the Gerber file to fracture. Gerber files with internal layers (for polarity reversal or step and repeat) are converted to a single OASIS file.
Output Grid Snap
The user can specify an output grid and fractured data will be snapped to the specified grid. OASIS native grid is 0.001 um (1 nm) but the user can specify a coarser grid such as 0.01 um if needed.
Overlap Removal
Input data is unionized so that the output fractured data has no overlap.
Polygon Sorting
Polygon data within a tile can be sorted by X and Y. The min X and min Y coordinate of the polygon are used for the sort.
Tiling
The user can specify a square or rectangular tile size or alternately, the number of tiles desired and the program will then computed the required tile size. The contents of each "tile" are saved in a cell or structure which is labeled by its position in the array.
Tile Order Sorting
An option can be turned on to sort the tiles within the OASIS file from top to bottom. The illustration below shows how the tiles are labeled and how the OASIS file is organized.
HEADER BGNLIB DEFNSTR TILE1_1 <-- Tile Cells sorted DEFNSTR TILE1_2 DEFNSTR TILE1_3 DEFNSTR TILE1_4 DEFNSTR TILE1_5 DEFNSTR TILE1_6 DEFNSTR TILE1_7 DEFNSTR TILE2_1 DEFNSTR TILE2_2 DEFNSTR TILE2_3 DEFNSTR TILE2_4 DEFNSTR TILE2_5 DEFNSTR TILE2_6 DEFNSTR TILE2_7 . . . DEFNSTR TILE5_1 DEFNSTR TILE5_2 DEFNSTR TILE5_3 DEFNSTR TILE5_4 DEFNSTR TILE5_5 DEFNSTR TILE5_6 DEFNSTR TILE5_7 DEFNSTR TOP SREF TILE1_1 <-- SREF's not sorted SREF TILE1_2
The following transformations can be applied to tiled output data.
Enlarge or reduce the size of the whole figure in a uniform ratio. This is generally a small value such as 1.0002 to account for process shrinkage or expansion.
MirroringReflect the output data about X-axis or Y-axis
RotationRotate the output data about the origin point. Only 0 90 180 and 270 rotations make sense.
The resulting OASIS file is OASIS.VSB compliant. This means that it includes the required records and follows restrictions required for input to electron beam conversion tools as defined in 2005 by Selete. For example, all output figures are written as either rectangles, trapezoids or ctrapezoids. All cell placements have insertion scale=1,rotation=0 and mirror=0.
The program is multi-threaded and can make use of multiple CPU cores.
A programmer's API manual can be downloaded here:gbr2oasfrac_manual.pdf
An executable using the library is included and you can see the command line here.