def __init__(self, name, cells=None): Wafer_GridStyle.__init__(self, name=name, cells=cells, block_gap=1200.) # The placement of the wafer alignment markers am_x = 1.5e4 am_y = 1.5e4 self.align_pts = np.array([am_x, am_y]) self.align_pts = np.vstack((self.align_pts, self.align_pts * (-1, 1))) # Reflect about y-axis self.align_pts = np.vstack((self.align_pts, self.align_pts * (1, -1))) # Reflect about x-axis self.wafer_r = wafer_r self.block_size = np.array([35e3, 35e3]) self._place_blocks(radius=self.wafer_r + 5e3) self.add_blocks() self.add_wafer_outline(layers=l_drawing) self.add_dashed_dicing_marks(layers=[l_lgBeam]) self.add_block_labels(layers=[l_lgBeam]) # self.add_prealignment_markers(layers=[l_lgBeam]) self.add_tem_membranes([0.08, 0.012, 0.028, 0.044], 2000, 1, l_smBeam) self.add_theory_cells() self.add_chip_labels() bottom = np.array([0, -self.wafer_r * 0.9]) # top = np.array([0, -1]) * bottom self.add_waferLabel(waferLabel, l_drawing, pos=bottom)
def __init__(self, name, cells=None): Wafer_GridStyle.__init__(self, name=name, cells=cells, block_gap=1200.) # The placement of the wafer alignment markers am_x = 1.5e4 am_y = 1.5e4 self.align_pts = np.array([am_x, am_y]) self.align_pts = np.vstack( (self.align_pts, self.align_pts * (-1, 1))) # Reflect about y-axis self.align_pts = np.vstack( (self.align_pts, self.align_pts * (1, -1))) # Reflect about x-axis # Size of the chip and placement: self.wafer_r = 25e3 # 2" wafer self.block_size = np.array([10e3, 10e3]) # 1 cm chip self._place_blocks( radius=self.wafer_r + 5e3 ) # distance of the center of the chip with respect to the center of the wafer self.add_blocks() self.add_wafer_outline(layers=l_drawing) # draws wafer self.add_dashed_dicing_marks(layers=[l_markers]) # Add dicing lines self.add_subdicing_marks(200, 5, layers=[l_markers ]) # Perpendicular dicing lines self.add_block_labels(l_markers, unique_ids=True, load_ids=True) # Chip ID self.add_prealignment_markers(layers=[l_markers]) # Pre-align. Marks self.add_chip_labels() # Wafer and Pattern name on each chip bottom = np.array([0, -self.wafer_r * 0.9]) self.add_waferLabel(waferLabel, l_drawing, pos=bottom)
def __init__(self, name, cells=None): Wafer_GridStyle.__init__(self, name=name, cells=cells, block_gap=1200.) # The placement of the wafer alignment markers am_x = 1.5e4 am_y = 1.5e4 self.align_pts = np.array([am_x, am_y]) self.align_pts = np.vstack((self.align_pts, self.align_pts * (-1, 1))) # Reflect about y-axis self.align_pts = np.vstack((self.align_pts, self.align_pts * (1, -1))) # Reflect about x-axis self.wafer_r = 25e3 self.block_size = np.array([10e3, 10e3]) self._place_blocks(radius=self.wafer_r + 5e3) self.add_blocks() self.add_wafer_outline(layers=l_drawing) self.add_dashed_dicing_marks(layers=[l_lgBeam]) self.add_subdicing_marks(200, 5, layers=[l_lgBeam]) self.add_block_labels(l_lgBeam, unique_ids=True, load_ids=True) self.add_prealignment_markers(layers=[l_lgBeam]) self.add_tem_membranes([0.02, 0.035, 0.050], 1000, 1, l_smBeam) self.add_theory_cells() self.add_chip_labels() self.add_cleave_xsection_nws() # self.add_blockLabels(l_lgBeam) # self.add_cellLabels(l_lgBeam) bottom = np.array([0, -self.wafer_r * 0.9]) # top = np.array([0, -1]) * bottom self.add_waferLabel(waferLabel, l_drawing, pos=bottom)
def __init__(self, name, cells=None): Wafer_GridStyle.__init__(self, name=name, cells=cells, block_gap=1200.) # The placement of the wafer alignment markers am_x = 1.5e4 am_y = 1.5e4 self.align_pts = np.array([am_x, am_y]) self.align_pts = np.vstack( (self.align_pts, self.align_pts * (-1, 1))) # Reflect about y-axis self.align_pts = np.vstack( (self.align_pts, self.align_pts * (1, -1))) # Reflect about x-axis self.wafer_r = 25e3 self.block_size = np.array([10e3, 10e3]) self._place_blocks(radius=self.wafer_r + 5e3) # if glbAlignmentMarks: # self.add_aligment_marks(l_lgBeam) # self.add_orientation_text(l_lgBeam) # self.add_dicing_marks() # l_lgBeam, mkWidth=mkWidth Width of dicing marks self.add_blocks() self.add_wafer_outline(layers=l_drawing) self.add_dashed_dicing_marks(layers=[l_lgBeam]) self.add_subdicing_marks(200, 5, layers=[l_lgBeam]) self.add_block_labels(l_lgBeam, quasi_unique_labels=True) self.add_prealignment_markers(layers=[l_lgBeam]) self.add_tem_membranes([0.02, 0.04, 0.06, 0.08], 500, 1, l_smBeam) self.add_theory_cells() self.add_chip_labels() # self.add_blockLabels(l_lgBeam) # self.add_cellLabels(l_lgBeam) bottom = np.array([0, -self.wafer_r * 0.9]) # top = np.array([0, -1]) * bottom self.add_waferLabel(waferLabel, l_drawing, pos=bottom)
def __init__(self, name, cells=None): Wafer_GridStyle.__init__(self, name=name, cells=cells, block_gap=1200.) # The placement of the wafer alignment markers am_x = 1.5e4 am_y = 1.5e4 self.align_pts = np.array([am_x, am_y]) self.align_pts = np.vstack( (self.align_pts, self.align_pts * (-1, 1))) # Reflect about y-axis self.align_pts = np.vstack( (self.align_pts, self.align_pts * (1, -1))) # Reflect about x-axis # Size of the chip and placement: self.wafer_r = 25e3 # 2" wafer self.block_size = np.array([10e3, 10e3]) # 1 cm chip self._place_blocks(radius=self.wafer_r + 5e3) # top-right corner of the chip array self.add_blocks() self.add_wafer_outline(layers=l_drawing) # draws wafer self.add_dashed_dicing_marks(layers=[l_lgBeam]) # Add dicing lines self.add_subdicing_marks(200, 5, layers=[l_lgBeam ]) # Perpendicular dicing lines self.add_block_labels(l_lgBeam, unique_ids=True, load_ids=True) # Chip ID self.add_prealignment_markers(layers=[l_lgBeam]) # Pre-align. Marks self.add_contacts(pad_size, finger_width, finger_length, l_LGBeam) #self.add_tem_membranes([0.02, 0.035, 0.050], 1000, 1, l_smBeam) # TEM Sections #self.add_theory_cells() # Growth Section #self.add_cleave_xsection_nws() # Cross-section Section self.add_chip_labels() # Wafer and Pattern name on each chip bottom = np.array([0, -self.wafer_r * 0.9]) self.add_waferLabel(waferLabel, l_drawing, pos=bottom)
topCell.add(smField4, origin=(dx / 2., -dy / 2.)) # topCell.add(centerAlignField, origin=(0., 0.)) theory_cell = make_theory_cell() topCell.add(theory_cell, origin=(65., 55.)) # topCellArray = CellArray(topCell,1,1,(0,0),rotation=90) # topCell = Cell('RotatedTopCell') # topCell.add(topCellArray) # %%Create the layout and output GDS file layout = Layout('LIBRARY') if putOnWafer: # Fit as many patterns on a wafer as possible # wafer = MBEWafer('MembranesWafer',wafer_r=wafer_r,cells=[topCell], cell_gap=CELL_GAP, mkWidth=tDicingMarks,cellsAtEdges=False) wafer = Wafer_GridStyle('MembranesWafer_GridStyle', cells=[topCell], block_gap=18000) # 28000) wafer.wafer_r = wafer_r wafer.block_size = np.array([34.7e3, 34.7e3]) wafer._place_blocks() wafer.add_wafer_outline(layers=l_drawing) # wafer.add_dicing_marks() # wafer.add_dicing_crosses() lblx = 17350 - 867 lbly = 17350 wafer.o_text = { 'A': (lblx, lbly - 1857), 'B': (-lblx, lbly - 1857), 'C': (-lblx, -lbly - 1857), 'D': (lblx, -lbly - 1857) }