Clip Extraction with Logical Layer Operations
1. Start by opening a multi-layer GDSII file and load the layers we wish to process. This only needs to be done once.
2. A call is made to the explode function. We pass it the coordinates of the window we wish to clip out. The exploder extracts all the polygons that cross this window and puts them into memory. Each polygon is "tagged" with its layer.
3. We want to perform a MINUS operation between layers 1 and 2. To do this the polygons belonging to Layer 1 are extracted and placed into an array and the polygons belonging to Layer 2 are placed into a second array. Then the QisBool is called to perform the MINUS operation. The results are stored in a 3rd array (we call INT for Intermediate).
4. Now we want to perform an XOR between the intermediate results (INT) and Layer 3. The polygons for Layer3 are extracted from the exploder's buffer.
5. Now that we have our two input arrays we call QisBool a second time to perform the XOR operation. The results are stored in an array. At this point, the data can be saved as a GDSII file or processed by the client as desired.
To process the next clip, a call is made to the exploder to extract a new set of polygons and the process is repeated.
Example - Extracting 1000 Clips with Layer Operations
We have a source GDSII file called caw_test1.gds that is about 1.4 GByte in size and has quite a few layers.
Let's suppose that we wish to extract 1000 clips (randomly assigned) of 20 x 20 um. We want to perform the following layer operations:
6 [OR] 17 -> 100
100 [MINUS] 30 -> OUTPUT CLIP
Our computer has 8 CPU cores.
Here is how our command line might look (CR between arguments for clarity only)
clipextract64.exe executable +input:caw_test1.gds input file to process +outdir:D:\cad\clips output directory to place clips +format:POLYS output format is polygon (as opposed to bitmap)1 -thrnum:8,1 8 exploder threads - 1 Boolean thread per exploder2 -layers:6,17,30 load only data on these layers3 @window:CWH:test:D:\cad\wins.txt read the file, wins.txt for the clip windows4 "-lsynth:100:0=6,17-30" Layer Boolean operations5 -clip clip the output polygons to the window6 -log:D:\cad\clips\test.log write to the log file test.log
Note that the comma (,) betweeen layers 6 and 17 means that we are merely merging all the polygons onto a single layer and not unionizing them. It would be a waste of computation to unionize them since the next Boolean operation, MINUS, requires an implicit Union.