Detailed Description of gdsriplib

Gdsriplib was developed in response to the need to rasterize CAD data for extremely large glass panels - as large as 3 meters by 3 meters at resolutions of 1 um or less. Because of the large area and high resolution, the number of pixels generated is enormous.


number of pixels = width (m) x height (m) x pixels/meter x pixels/meter

                 = 3 x 3 x 1E6 x 1E6

                 = 9E12 pixels

At 8 pixels per byte we would require about 1000GB of RAM to hold the bitmap during rasterizing. This is not practical. Instead we use a divide and conquer approach. We take the panel and divide it into many narrow bands as shown below:

image area divided into bands

How Many Bands?

The number of bands is determined by how much memory is available to compose the bitmapped image. (We call the memory used to hold the bitmap the "raster buffer.") If one has 2GB of RAM available then the bitmap for each band must fit into 2GB. For the above mentioned values:

2E9 bytes  = [width x height x 1E6 x 1E6] / 8 (pixels/byte)  & width = 3m

height = 0.005333 m

total number of bands = 3m/0.005333 m/band = 562.5 = 563 bands

So we can rasterize this image using 2GB of memory assuming we subdivide it into 563 bands, process each band, save the results and re-use the memory.


Next Multithreaded rasterization