page header image
 

Introduction

QFract reads either a GDSII/OASIS file as its input, selects all of the data or a window of the data and extracts it into memory. The extracted data is flattened, clipped to the window extents and fractured into trapezoids.

The calling program can then take these trapezoids and use them for various analyses.

QFract flow from GDSII/OASIS to extracted polygons to fractured rectangles/trapezoids.

QFract is supplied as a library (shared object) so that it can be utilized by a calling program; however if a customer needs it as an executable, Artwork can supply it with a calling program "wrapper" to output the data as GDSII or even in other formats.



 

QFRACT Modules

The QFract library is built using the following modules:

  • QIS Library - opens the GDSII file, opens the selected structure, extracts out the desired data on the desired layers that crosses the window.

  • Boolean - takes the output from QIS clips the data to the window boundaries, remove any overlaps on the data inside of the window and converts to convex in X.

  • Fracture Module - converts the output from Boolean into polygons (rectangles and trapezoids).

    Output polygons are passed to the user's program on the fly. Each of the resulting polygons (rectangles or trapezoids) are passed to the user's program via a callback function. User can control whether to process these polygons on the fly or store them all in memory before further processing.

QFract Library (DLL)
 

Fractured Data Properties

QFract will unionize and fracture the selected window into a mininum number of rectangles and trapezoids (in the case of non-Manhattan data), and provide the results as a pointer to a list of polygons (4 vertex: either rectangle or trapezoid) into memory along with a pointer to the start of data.

Geometric Processing.

Output Format

The output format is straightforward and easy for the calling application to use. For each polygon, whether it is a trapezoid or rectangle the following integers will be output:

Output Format.

The layer and datatype attributes are integers (typically these will range from 0 to 1024). Each vertex is a pair of integer coordinates. The original data coordinates from the GDSII file are maintained. Each polygon will use 40 Bytes in memory.

The output polygons will be passed to the user via a CQisBoundary struct:
 typedef struct
 {
   const char* StructName;
   const CVectHandle* Handle;
   unsigned short Layer;
   unsigned short DataType;
   unsigned int NumVert;
   CXYCoords XYCoords;
 }CQisBoundary;

XYCoords is an array of coordinates which holds the vertices of an output polygon. StructName and Handle are not applicable for QFract_GetFracture purpose and can be ignored.