|
38 | 38 |
|
39 | 39 | ## Cell Structure: |
40 | 40 | 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 |
41 | 44 |
|
42 | 45 |
|
43 | 46 |
|
|
49 | 52 | Res = MyJob.Image("UCSB_Res", "UCSB-OPC1", sizeXY=[3, 3], shiftXY=[4,5]) |
50 | 53 |
|
51 | 54 | ## 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 |
55 | 59 | DicingLine_X = MyJob.Image( asml.Images.SPM_X ) |
56 | 60 | # 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: |
57 | 61 | DicingLine_X.set_ImageID( "DiceX" ) |
|
63 | 67 | # shiftXY is floating-point X/Y shift |
64 | 68 |
|
65 | 69 | ## 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) |
72 | 74 |
|
73 | 75 | ## To expose on Layer 2: |
74 | 76 | # Distribute DicingX in rows across wafer, on top and bottom of cells: |
|
82 | 84 |
|
83 | 85 |
|
84 | 86 | ## 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]) |
88 | 90 |
|
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]) |
93 | 94 |
|
94 | 95 | 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 |
96 | 97 |
|
97 | 98 |
|
98 | 99 |
|
|
119 | 120 |
|
120 | 121 | # Print all the data added to this Job: |
121 | 122 | print(MyJob) |
| 123 | +MyJob.Plot.plot_wafer() |
122 | 124 |
|
123 | 125 |
|
124 | 126 | ## Export the text file: |
|
0 commit comments