demisjohn / ASML_JobCreator

Generate ASCII Job files for an ASML PAS 5500 Stepper Lithography system, by the UCSB Nanofabrication Facility.
15 stars 4 forks source link

Cell class: Utility functions #12

Open demisjohn opened 4 years ago

demisjohn commented 4 years ago

Add some utility functions, such as:

  1. convert_cellCR_to_WaferXY( cellCR=[C,R], shiftXY=[X,Y] ) - convert Col/Row and Shift into X/Y Wafer Coordinates.
  2. Check_Valid_CellCR( cellCR=[C,R] ) - return True|False if the given CellCR is on-wafer.
  3. Get_Valid_CellCR() - return all valid Col/Rows that fit on the wafer.
demisjohn commented 4 years ago

Cell2Wafer() and Wafer2Cell() added to Cell class in c1f1003 . Tested that they work, but need testing against ASML GUI that they are inclusive/exclusive of the correct Cell edges.

demisjohn commented 2 years ago

wafer2cell code from Miguel Daal:

Hi Demis,

I think this code to convert from wafer coordinates to cell coordinates works, but Ive only tested it on my marks which are clustered about East and West.

def wafer2cellXY(waferXY): ms = np.array(MyJob.Cell.MatrixShift) CS = 0.5*np.array(MyJob.Cell.CellSize) pw = np.array(waferXY)

pm = pw-(ms+CS)
CR, r = np.divmod(np.abs(pm),2*CS)
CR = CR*np.sign(pm)+np.array([1,0]) if np.sign(pm)[0] == 1 else CR*np.sign(pm)
pc = (r-CS)*np.sign(pm)
return CR, pc

Sincerely Miguel

fyodr commented 1 year ago

I modified this on my fork (pull request imminent), and I have been using it to check if cells have alignment marks in them. Everything has worked so far, but I have not done very thorough testing.