Skip to content

Commit 71c5a3d

Browse files
committed
Show get_ValidCells() usage, and remove backup-marks.
1 parent bd0308e commit 71c5a3d

1 file changed

Lines changed: 19 additions & 17 deletions

File tree

Example 02 - Alignment and ImagesLib.py

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@
3838

3939
## Cell Structure:
4040
MyJob.Cell.set_CellSize( [5.00, 5.00] ) # cell size [X,Y] in millimeters
41+
MyJob.set_ExposeEdgeDie() # Expose die that fall only partially on the wafer
42+
MyJob.Cell.set_RoundEdgeClearance( 5 ) # Width of disallowed border of wafer
43+
MyJob.Cell.set_FlatEdgeClearance( 3 ) # Width of disallowed border at wafer flat
4144

4245

4346

@@ -49,9 +52,10 @@
4952
Res = MyJob.Image("UCSB_Res", "UCSB-OPC1", sizeXY=[3, 3], shiftXY=[4,5])
5053

5154
## To expose on Layer 2:
52-
# use a pre-defined image from file, in the sub-folder ASML_JobCreator/Images/SPM_X.py
53-
# `dir( asml.Images )` will show you a list, or look inside the sub-folder
54-
# X-scribe-line alignment mark, used as dicing alignment guides
55+
# We'll use a pre-defined image from file, in the sub-folder ASML_JobCreator/Images/SPM_X.py
56+
# `dir( asml.Images )` will show you a list, or look inside the sub-folder.
57+
# You can place your own Image Library files into the Images subfolder.
58+
# We'll place X-scribe-line alignment marks, used as dicing alignment guides
5559
DicingLine_X = MyJob.Image( asml.Images.SPM_X )
5660
# In order to use alignment mark images for other purposes, must give a custom Image ID, otherwise it thinks it's an SPM-X alignment mark:
5761
DicingLine_X.set_ImageID( "DiceX" )
@@ -63,12 +67,10 @@
6367
# shiftXY is floating-point X/Y shift
6468

6569
## To expose on Layer 1:
66-
# Distribute Image "Res" in a 3x3 array with no shift:
67-
for r in [-1,0,1]:
68-
for c in [-1,0,1]:
69-
Res.distribute( [c,r] )
70-
#end for(c)
71-
#end for(r)
70+
# Distribute Image "Res" across whole wafer
71+
for cells in MyJob.Cell.get_ValidCells():
72+
Res.distribute( cells )
73+
#end for(cells)
7274

7375
## To expose on Layer 2:
7476
# Distribute DicingX in rows across wafer, on top and bottom of cells:
@@ -82,17 +84,16 @@
8284

8385

8486
## Alignment Mark Definition
85-
E = MyJob.Alignment.Mark("E", "PM", waferXY=[45.0, 0.0])
86-
EN = MyJob.Alignment.Mark("EN", "PM", waferXY=[45.0, 3.0])
87-
ES = MyJob.Alignment.Mark("ES", "PM", waferXY=[45.0, -3.0])
87+
E = MyJob.Alignment.Mark("E", "PM", waferXY=[42.5, 0.0])
88+
EN = MyJob.Alignment.Mark("EN", "PM", waferXY=[42.5, 2.5])
89+
ES = MyJob.Alignment.Mark("ES", "PM", waferXY=[42.5, -2.5])
8890

89-
W = MyJob.Alignment.Mark("W", "PM", waferXY=[-45.0, 0.0])
90-
WN = MyJob.Alignment.Mark("WN", "PM", waferXY=[-45.0, 3.0])
91-
WS = MyJob.Alignment.Mark("WS", "PM", waferXY=[-45.0, -3.0])
92-
WS.set_backup() # make the mark backup/preferred, for example only
91+
W = MyJob.Alignment.Mark("W", "PM", waferXY=[-42.5, 0.0])
92+
WN = MyJob.Alignment.Mark("WN", "PM", waferXY=[-42.5, 2.5])
93+
WS = MyJob.Alignment.Mark("WS", "PM", waferXY=[-42.5, -2.5])
9394

9495
ALL = MyJob.Alignment.Strategy("ALL", marks=[E, EN, ES, W, WN, WS])
95-
ALL.set_required_marks(2) # num marks to use, defaults to all
96+
ALL.set_required_marks(2) # num marks that must pass, defaults to all
9697

9798

9899

@@ -119,6 +120,7 @@
119120

120121
# Print all the data added to this Job:
121122
print(MyJob)
123+
MyJob.Plot.plot_wafer()
122124

123125

124126
## Export the text file:

0 commit comments

Comments
 (0)