Web page header for BoolQl

BoolCompare - Multi-Processor XOR for Large Layout Files

Certain mask or wafer writing/inspection applications require a Boolean XOR operation between the geometries on two different GDSII/OASIS layers. In principle this is a fairly straightforward operation as the Boolean algorithms are well known and have been implemented in a large number of editing and mask prep softwares.

  xor_operation.gif


The challenge is to perform this XOR operation on today's very large layout files in a reasonable amount of time. The actual number of polygons per layer can easily exceed several hundred million. Even if the source file is not large (due to hierarchy), the XOR operation works on "exploded" or "flattened" data. A simple 100 byte command in GDSII (the array reference) can generate 10 million boundaries.

  subdivided_chip.gif



The compute time for the XOR operation follows a power curve as a function of the number of input vertices. One deals with this by subdividing the layout into multiple windows so that each processor in a workstation can work on an optimal number of polygons/vertices.

If you have a good idea of the "optimal" number of vertices per tile, you can divide the layout into a number of tiles so that no tile contains more than the optimal number.

  compute_time_vs_vertices.gif



Details

Program Architecture and Flow

Command Line Syntax



Download Revision History Price Benchmark