Ejemplo n.º 1
0
    def __init__(self,
                 name,
                 cells=None,
                 wafer_r=25e3,
                 trisize=12e3,
                 cellsize=2e3,
                 block_gap=0.,  # 1200
                 cell_gap=800.,  # 800
                 doMCSearch=True,
                 MCIterations=100,
                 doMCBlockSearch=True,
                 MCBlockIterations=100,
                 mkWidth=10,
                 cellsAtEdges=False):

        Wafer_TriangStyle.__init__(self,
                                   name,
                                   wafer_r=wafer_r,
                                   cells=cells,
                                   trisize=trisize,
                                   cellsize=cellsize,
                                   block_gap=block_gap,
                                   cell_gap=cell_gap,
                                   doMCSearch=doMCSearch,
                                   MCIterations=MCIterations,
                                   doMCBlockSearch=doMCBlockSearch,
                                   MCBlockIterations=MCBlockIterations,
                                   mkWidth=mkWidth,
                                   cellsAtEdges=cellsAtEdges)

        self.align_markers = None
        # 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.o_text = {'UR': (am_x + 0.1e4, am_y + 0.1e4),
                       'UL': (-am_x - 0.1e4, am_y + 0.1e4),
                       'LL': (-am_x - 0.1e4, -am_y - 0.1e4),
                       'LR': (am_x + 0.1e4, -am_y - 0.1e4)}

        self._place_blocks()
        if glbAlignmentMarks:
            self.add_aligment_marks(l_lgBeam)
            self.add_orientation_text(l_lgBeam)
        self.add_wafer_outline(100)
        self.build_and_add_blocks()
        self.add_blockLabels(l_lgBeam, center=True)
        self.add_cellLabels(l_lgBeam, center=True)  # Put cell labels ('A','B','C'...) in center of each cell
        self.add_dicing_marks(l_lgBeam, mkWidth=mkWidth)  # Width of dicing marks
        self.add_sub_dicing_ticks(300, mkWidth, l_lgBeam)
        self.add_theory_cell()
        bottom = np.array([0, -self.wafer_r * 0.90])
        # Write label on layer 100 to avoid writing (and saving writing time)
        self.add_waferLabel(waferLabel, 100, pos=bottom)
Ejemplo n.º 2
0
    def __init__(
            self,
            name,
            cells=None,
            wafer_r=25e3,
            trisize=12e3,
            cellsize=2e3,
            block_gap=0.,  # 1200
            cell_gap=800.,  # 800
            doMCSearch=True,
            MCIterations=100,
            doMCBlockSearch=True,
            MCBlockIterations=100,
            mkWidth=10.,
            cellsAtEdges=False,
            symmetric_chips=True):

        Wafer_TriangStyle.__init__(self,
                                   name,
                                   wafer_r=wafer_r,
                                   cells=cells,
                                   trisize=trisize,
                                   cellsize=cellsize,
                                   block_gap=block_gap,
                                   cell_gap=cell_gap,
                                   doMCSearch=doMCSearch,
                                   MCIterations=MCIterations,
                                   doMCBlockSearch=doMCBlockSearch,
                                   MCBlockIterations=MCBlockIterations,
                                   mkWidth=mkWidth,
                                   cellsAtEdges=cellsAtEdges,
                                   symmetric_chips=symmetric_chips)

        self.align_markers = None
        self.symmetric_chips = False
        # 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.o_text = {
            'UR': (am_x + 0.1e4, am_y + 0.1e4),
            'UL': (-am_x - 0.1e4, am_y + 0.1e4),
            'LL': (-am_x - 0.1e4, -am_y - 0.1e4),
            'LR': (am_x + 0.1e4, -am_y - 0.1e4)
        }

        self._place_blocks()
        if glbAlignmentMarks:
            self.add_aligment_marks(l_lgBeam)
            self.add_orientation_text(l_lgBeam)
        # points = self.add_dicing_marks(l_lgBeam, mkWidth=mkWidth)  # Width of dicing marks
        # self.make_basel_align_marks(points, l_lgBeam, mk_width=mkWidthMinor)
        self.add_wafer_outline(100)
        self.build_and_add_blocks()
        self.add_block_labels(
            l_lgBeam, unique_ids=True, load_ids=True
        )  # NEED TO WORK ON THIS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        self.add_cellLabels(
            l_lgBeam, center=True
        )  # Put cell labels ('A','B','C'...) in center of each cell
        self.add_dicing_marks(l_lgBeam,
                              mkWidth=mkWidth)  # Width of dicing marks
        self.add_sub_dicing_ticks(300, mkWidth, l_lgBeam)
        self.add_theory_cell()
        self.add_tem_membranes([0.020, 0.030, 0.040, 0.050], 1000, 1, l_smBeam)
        self.add_chip_labels()
        self.add_prealignment_markers(l_lgBeam)
        # self.add_tem_nanowires()
        bottom = np.array([0, -self.wafer_r * 0.90])
        # Write label on layer 100 to avoid writing (and saving writing time)
        self.add_waferLabel(waferLabel, 100, pos=bottom)