Add wafer layouts and RBF heatmap functionality

- Introduced new YAML layout files for wafers B, C, D, F, X, Z, and their reversed versions.
- Implemented RBF heatmap interpolation using CuPy and NumPy for GPU acceleration.
- Created a backend module to load wafer layouts from YAML files, mirroring the existing schema.
- Developed a QQuickPaintedItem for rendering wafer maps, including sensor markers, heatmaps, and labels.
- Enhanced the drawing capabilities with concentric rings, crosshair axes, and orientation markers.
This commit is contained in:
jack
2026-06-11 11:56:55 -07:00
parent ca1a514f23
commit b52b983bb2
10 changed files with 887 additions and 0 deletions
+44
View File
@@ -0,0 +1,44 @@
# This will be the name of the output files
name: aepwafer
wafers: ["A", "E", "P"]
# round or square wafer
shape: round
# diameter/edge size of the wafer
size: 300
# large or small markers and labels
marker_size: large
font_size: large
# origin settings. x_origin can be left, right, or center. y_origin can
# be top, bottom, or center. Using right or top implies that the X/Y values
# for that axis are negative, or else we'll be drawing outside the image.
x_origin: left
y_origin: bottom
# sensor X and Y values, in mm relative to the origin
X: [150, 204, 249, 280, 290, 280, 249, 204, 150, 97, 51, 21, 10, 21, 51, 97,
150, 203, 241, 255, 241, 203, 150, 98, 59, 45, 59, 98, 171, 207, 228, 228,
207, 171, 130, 94, 73, 73, 94, 130, 150, 186, 200, 186, 150, 115, 100, 115]
Y: [290, 280, 249, 204, 150, 97, 51, 21, 10, 21, 51, 97, 150, 204, 249, 280,
255, 241, 203, 150, 98, 59, 45, 59, 98, 150, 203, 241, 228, 207, 171, 130,
94, 73, 73, 94, 130, 171, 207, 228, 200, 186, 150, 115, 100, 115, 150, 186]
# set this to either 0 or 1 for the initial sensor number (usually 1)
start_sn: 1
# Normally, positive X is to the right, and positive Y is up.
# These settings can be used to reverse one or both of these.
reverse_x: false
reverse_y: false
# these are sensors whose labels need to be repositioned. Sensor numbers
# start at start_sn. Directions are up, down, left, and right, and values
# are multiples of the marker size.
label_exceptions: {
4: { top: [0, 0] },
5: { top: [0, 0] },
6: { top: [0, 0] },
}