Esempio n. 1
0
    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)
Esempio n. 2
0
    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)
Esempio n. 4
0
    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)
Esempio n. 5
0
    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)
    }