QisMLib is a GDSII/OASIS library that enables a client to display and manipulate GDSII/OASIS data using a simple set of function calls. The M version (for Multi-Threaded) is the result of several years of work; the "explosion" of data is now thread based and can take advantage of many processor cores sharing the same pool of memory.
1. The scan routine opens the layout file, scans it and build an array of quad trees. The load routine moves the GDSII entity data from disk into memory for faster access.
2. An array of quad trees are stored in memory; these aid the exploder to navigate efficiently through the hierarchy for a given window. The user can control the granularity of the quad trees to trade memory vs. performance.
3. The entity data is stored in RAM in a compressed format to reduce the memory footprint. Optionally, it can be left on disk but this is not recommended since disk access (even for SSDs) is much slower than memory access.
4. The exploder is now thread safe. The user can specify how many exploder threads should run. (Up to the max limited by the license.) This greatly increases throughput when the layout file is large and many windows have to be extracted.
5. Any boundaries (or paths) that cross the requested window are placed in a polygon buffer. Paths can be converted into boundaries. The pointer to the polygon buffer is accessed by the calling application via a callback function.
The QisMLib API is modular. Click on any of Class/API boxes in the diagram below for links to more information.
Click on any of the API class boxes in the illustration to get details on specific API sets.
Go to the Programmer's Corner where you will find documentation on the API for QisMLib and all of its extension libraries.
A new scripting engine enables our users to quickly create prototypes of layout processing flows. The scripts can then be used as a template for coding the calling program. Details here.
Many applications in metrology require extraction of hundreds or thousands of small windows from a very large layout file. We've created a "wrapper" using the QisLib_MT library (and the Boolean and Raster libraries) that does this very efficiently with minimal programming effort.
Equipment such as FIBs used for active circuit analysis and modification benefit from being able to view the CAD data and trace out the net connections. A specialized library, QisMNetrace, can be tightly integrated with QisMLib to provide both display functions and real time net tracing functions.
Illustrates the functional and thread flow one might use to clip out a window from two layers (e.g. poly and poly-cut) and then take the difference between them to produce a derived layer.
This new QisMBool extension enables much faster and more efficient Boolean operations when data originates from two separate layout files ...
Used in conjunction with QisMRaster to correct data to accommodate distortion of the substrate to be imaged.
An extension to the QisMLib library that performs multi-threaded rasterization.
Used to extract a region and preserve as much of the database hierarchy as possible.
Used to create a new layer using Boolean operations on source layers.
For faster database loading, first create a "memory map" using dbload ...
This application uses QisMLib and the QisMRaster extension library to efficiently compare data originating from two layout files.
A scripting language that closely mimics the QisMLib API. Ideal for quick protyping a flow -- then easily convert to library calls.