QckRip includes a transformation called shear. This was added to our normal scaleX, scaleY, rotate and mirror in order to provide a way to compensate for substrate distortions. Unlike other transformations, the effects of shear are not constant over the extents of the substrate. This has to be taken into account because QckRip takes advantage of repeating data to rasterize large panelized data quickly.
Consider the diagram below:
A shear along X is defined by the angle theta. You can see that the transformed X coordinate is a function of the angle and of it's original Y value.
Consequences of Shear Transformation
If you have arrayed a number of identical circuits on such a panel and then you apply a shear along X, each row of the arrayed cells will differ slightly from its neighboring row. In principle, to rasterize such a panel requires a different master bitmap for each row. If both an X and Y shear are simultaneously applied, then all of the cells will be unique after the operation.
Such an explosion defeats the main advantage of a rasterizer like QckRip which depends on reusing a cell's bitmap and copying it across the panel.
However this may be doing a lot of unneeded computational work which greatly slows down the rasterizer.
The differences in the various cells may be quite small -- so small in fact that we can actually ignore the differences. Consider the case below of an array of cells that are initially identical. QckRip can then use a single master bitmap and copy it across the panel.
However after the shear operation no two cells are identical. The questions is - do we need to explode each and every cell and rasterize it individually?
That depends on whether we can tolerate small errors in the bitmap. The tolerance parameter associated with the shear operation is our method of indicating how much difference can be accepted between cells before we need to explode and create a new master cell.
We compute the difference of the bounding box (both in X and in Y though only X is shown below). If this difference is less than the tolerance setting then we consider both A and B to be the same and can use the same master bitmap copied into the appropriate location.
It is up to the user to determine what an acceptable tolerance may be. The value of tolerance is typically near or slightly smaller than the pixel size. There is no point in setting a tolerance of 0.1 um if the pixel size is 1 um as pixel snapping errors will dominate and the RIP will run unnecessarily slow.