Novel idea: learn a DPW-invariant representation of a failure shading by including a DPW transform. Consider the wafer in the middle. Could I transform it to the lower DPW variant (left) and higher DPW variant (right)?
Working method of going from right to left: take the central relative coordinate of each die and map it to a smaller matrix. Toy example with a matrix of just 1's and 2's would look something like this:
For wafer maps, simple implementation below:
def dpw_transform(original_matrix, scale):
# Calculate the new dimensions of the matrix after scaling down
h, w = original_matrix.shape
new_h = int(h * scale)
new_w = int(w * scale)
new_dim = (new_h, new_w)
# Find the indices of the passing elements in the original matrix
passing_indices = np.argwhere(original_matrix == 128)
# Find the indices of the failing elements in the original matrix
failing_indices = np.argwhere(original_matrix == 255)
# Calculate the relative central coordinate of the passing and failing elements in the original matrix
pass_coords = (passing_indices + 0.5) / original_matrix.shape
fail_coords = (failing_indices + 0.5) / original_matrix.shape
# Calculate the central coordinates of the passing and failing elements in the new matrix
new_pass_coords = (pass_coords * new_dim).astype(int)
new_fail_coords = (fail_coords * new_dim).astype(int)
# Create the (new_h, new_w) matrix
new_matrix = np.zeros(new_dim, dtype=int)
# Assign the passing and failing elements in the new matrix
new_matrix[new_pass_coords[:, 0], new_pass_coords[:, 1]] = 128
new_matrix[new_fail_coords[:, 0], new_fail_coords[:, 1]] = 255
return new_matrix
Example of a wafer resized by a scale of 0.75 (from shape (41, 33)
to (30, 24)
)
As expected, more yield loss on the wafer with higher die size / lower DPW.
Enhancement Idea
The approach outlined above doesn't work from left to right in the Yield Model image (turn a wafer into a higher DPW version of itself) since taking the central die coordinates of the original wafer won't always map to every die on the higher DPW wafer map. Case in point:
How do we "sparsify" defects but still keep shadings like scratches and rings "connected" on the higher DPW part?...