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 routines open the layout file, scan 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.
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.
We illustrate 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.
An extension to the QisMLib library that performs multi-threaded rasterization.
Used to create a new layer using Boolean operations on source layers.
This new QISMBOOL extension enables much faster and more efficient Boolean operations when data originates from two separate layout files ...
Used to extract a region and preserve as much of the database hierarchy as possible.
For faster database loading, first create a "memory map" using dbload ...