Many substrates now include either bar codes or QR codes to identify them and provide tracking. Sometimes the same QR code is used on every circuit but there is also the possibility that each circuit's ID is serialized -- in which case each QR or bar code is unique. (From this point forward we will use QR code as our discussion example.)
The new annotation engine was designed with the following assumptions:
Figure 1 - QR code in bitmap format
Speed Optimizations
The annotation engine was optimized to handle many thousands of unique bitmaps very quickly. Some of the applications are for small circuits arrayed on a 300 mm wafer and there can easily be 100K to 200K circuits on a single wafer. If adding serialzed annotations were to take too long, then the rasterizer throughput would be reduced by the time it takes to generate the annotations. We are able to process/annotate 100K unique QR codes in less than 10 seconds.
To insure high throughput, we limit the bitmap format to two: LGRaw (an internal Artwork format) and monochrome BMP. Other formats such as TIFF require a significant amount of compute time to process the header. LGRaw is uncompressed and BMP monochrome uses packbits compression which decompresses very quickly.
When creating your bitmaps, use the smallest possible size if you are using thousands of unique bitmaps. This will reduce the overhead of converting pixels into geometries and then producing a GDSII output from the pixels. This caveat does not apply if you are using a single bitmap multiple times - the bitmap is converted once and the GDSII data is placed as needed.
Bitmap Reference Location
The bitmap reference location is the LOWER LEFT of the bitmap. The user should take that into account when computing the placement coordinates.
Figure 2 - The bitmap's origin is in the lower left.
Setting the Pixel Size
The annotation engine does not use the DPI setting from the bitmap. Instead the user defines the size of each pixel in microns. In the QR code shown above, the bitmap is 41 x 41 pixels in size. If we want that to occupy a space of 2900 x 2900 um on our substrate, then the pixel size should be set to 2900/41 = 70.7 um.