Beispiel #1
0
        def _generate_elements(self, elems):
            # Center of the structure
            (x0, y0) = self.position

            # elems += i3.Rectangle(layer=self.layer, center=(x0, y0),
            #                       box_size=(self.length + self.release_margin, self.width + self.release_margin))

            elems += i3.Rectangle(layer=self.layer,
                                  center=(300, 300),
                                  box_size=(200, 200))

            rec = i3.Rectangle(layer=self.layer,
                               center=(0, 0),
                               box_size=(200, 200))

            remove = i3.Wedge(layer=self.layer,
                              begin_coord=(-100, 0),
                              end_coord=(-50, 0),
                              begin_width=8,
                              end_width=0.001)
            elems += rec,
            # # elems = elems | wedge,
            # haha = rec | remove,
            elems += remove,
            # # elems +=rec,
            # elems = elems.extend(haha),
            return elems
Beispiel #2
0
        def _generate_elements(self, elems):

            rect_size = (self.cross_boundary_width - self.cross_bar_width) / 2
            rect_center = self.cross_bar_width / 2 + rect_size / 2

            if not self.inversion:  # Dark cross
                elems += i3.Cross(
                    layer=i3.TECH.PPLAYER.CH1.
                    TRENCH,  #i3.PPLayer(self.process,self.purpose),
                    center=(0, 0),
                    box_size=self.cross_boundary_width,
                    thickness=self.cross_bar_width)

            else:  # Open cross: formed by 4 dark squares at corners
                elems += i3.Rectangle(
                    layer=i3.TECH.PPLAYER.CH2.
                    TRENCH,  #i3.PPLayer(self.process, self.purpose),
                    center=(rect_center, rect_center),
                    box_size=(rect_size, rect_size))
                elems += i3.Rectangle(
                    layer=i3.TECH.PPLAYER.CH2.
                    TRENCH,  #i3.PPLayer(self.process, self.purpose),
                    center=(rect_center, -rect_center),
                    box_size=(rect_size, rect_size))
                elems += i3.Rectangle(
                    layer=i3.TECH.PPLAYER.CH2.
                    TRENCH,  #i3.PPLayer(self.process, self.purpose),
                    center=(-rect_center, rect_center),
                    box_size=(rect_size, rect_size))
                elems += i3.Rectangle(
                    layer=i3.TECH.PPLAYER.CH2.
                    TRENCH,  #i3.PPLayer(self.process, self.purpose),
                    center=(-rect_center, -rect_center),
                    box_size=(rect_size, rect_size))
            return elems
Beispiel #3
0
        def _generate_elements(self, elems):
            for counter, child in enumerate(self.DC_list):
                name = child.name

                # elems += i3.PolygonText(layer=i3.TECH.PPLAYER.WG.TEXT,
                #                         text="{}_{}".format(name, self.cell.wg_t1.name),
                #                         # coordinate=(1300.0, 100.0),
                #                         alignment=(i3.TEXT_ALIGN_LEFT, i3.TEXT_ALIGN_LEFT),
                #                         font=2,
                #                         height=20.0,
                #                         transformation=i3.Translation((1500, 100 + 10000 * counter))
                #                         )

                # elems += i3.PolygonText(layer=i3.TECH.PPLAYER.WG.TEXT,
                #                         text="{}_{}".format(name, self.cell.wg_t1.name),
                #                         # coordinate=(-2000, -150),
                #                         alignment=(i3.TEXT_ALIGN_LEFT, i3.TEXT_ALIGN_LEFT),
                #                         font=2,
                #                         height=200.0,
                #                         transformation=i3.Rotation((0.0, 0.0), 90.0)
                #                                     + i3.Translation((450, -2000 + 10000 * counter))
                #                         )

                for j in range (-1,2,1):    #dicing marker left 48 squares
                    for i in range(0,4,1):
                        elems += i3.Rectangle(layer=i3.TECH.PPLAYER.WG.TEXT, center=(
                                    100+j*10000, -3000+100+10000*i-2000),box_size=(100, 100))
                        elems += i3.Rectangle(layer=i3.TECH.PPLAYER.WG.TEXT, center=(
                            100+j*10000, -3000 - 100 + 10000 * i-2000), box_size=(100, 100))
                elems += i3.Rectangle(layer=i3.TECH.PPLAYER.WG.TEXT, center=(
                    300, -3000 + 100 + 6000 * 3 + 10000), box_size=(100, 100))
                elems += i3.Rectangle(layer=i3.TECH.PPLAYER.WG.TEXT, center=(
                    300, -5000 - 100), box_size=(100, 100))

            return elems
Beispiel #4
0
        def _generate_elements(self, elems):
            elems += i3.Rectangle(
                layer=i3.TECH.PPLAYER.PPLUS.LINE,
                center=(0, 10000),  # change
                box_size=(190, 30000))
            elems += i3.Rectangle(
                layer=i3.TECH.PPLAYER.PPLUS.LINE,
                center=(10000, 10000),  # change
                box_size=(190, 30000))
            elems += i3.Rectangle(
                layer=i3.TECH.PPLAYER.PPLUS.LINE,
                center=(6000 + 13905 + 190 / 2, 10000),  # change
                box_size=(190, 30000))
            elems += i3.Rectangle(
                layer=i3.TECH.PPLAYER.PPLUS.LINE,
                center=(5000, 15000),  # change
                box_size=(30000, 190))
            elems += i3.Rectangle(
                layer=i3.TECH.PPLAYER.SIL.LINE,
                center=(0, 10000),  # change
                box_size=(210, 30000))

            # Medphab = mmi_slots_cell_test()
            # elems += i3.ARef(n_o_periods=(2,6), period=(20000,5000), reference=Medphab, origin=(-21400,13625))

            return elems
Beispiel #5
0
        def _generate_elements(self, elems):

            # Draw the central bar, which is longer than the others
            elems += i3.Rectangle(
                layer=i3.TECH.PPLAYER.CH1.
                TRENCH,  #i3.PPLayer(self.process, self.purpose),
                center=(0, (self.bar_length + self.bar_extra_length) * 0.5),
                box_size=(self.bar_width,
                          self.bar_length + self.bar_extra_length))

            # Draw the other bars
            for i in range((self.number_of_bars - 1) / 2):
                elems += i3.Rectangle(
                    layer=i3.TECH.PPLAYER.CH1.
                    TRENCH,  #i3.PPLayer(self.process, self.purpose),
                    center=(-(i + 1) * self.spacing, self.bar_length * 0.5),
                    box_size=(self.bar_width, self.bar_length))

            for j in range((self.number_of_bars - 1) / 2):
                elems += i3.Rectangle(
                    layer=i3.TECH.PPLAYER.CH1.
                    TRENCH,  #i3.PPLayer(self.process, self.purpose),
                    center=((j + 1) * self.spacing, self.bar_length * 0.5),
                    box_size=(self.bar_width, self.bar_length))

            return elems
Beispiel #6
0
        def _generate_elements(self, elems):

            # Center of the structure
            (x0, y0) = self.position

            elems += i3.Rectangle(layer=self.layer, center=(x0 + 7500, y0 + 4500),
                                  box_size=(15000, 1000))

            # elems += i3.Rectangle(layer=i3.TECH.PPLAYER.NONE.DOC, center=(x0 + 7500, y0 + 4500),
            #                       box_size=(15000, 1000))

            elems += i3.Rectangle(layer=self.layer, center=(x0 + 7500, y0 + 500),
                                  box_size=(15000, 1000))
            elems += i3.Rectangle(layer=self.layer, center=(x0 + 12500+1000, y0 + 2500), #change
                                  box_size=(self.length, self.width))

            if self.pocket:
                PO = i3.Rectangle(layer=self.layer_bool, center=(10001+2000, 2500), box_size=(2, 160)) #change
                elems += PO
                generated1 = self.layer - self.layer_bool
                mapping = {generated1: self.layer}
                elems = i3.get_elements_for_generated_layers(elems, mapping)

            if self.tilt:
                # TI = i3.Rectangle(layer=self.layer_bool, center=(10001, 2500), box_size=(2, 160))
                # elems += TI
                TI_shape = i3.Shape(points=[(10000.0+2000, 2470.0), (10010.58+2000, 2530.0), (10000.0+2000, 2530.0)], closed=True) #change
                TI = i3.Boundary(layer=self.layer_bool, shape=TI_shape)
                elems += TI

            generated1 = self.layer - self.layer_bool
            mapping = {generated1: self.layer}
            elems = i3.get_elements_for_generated_layers(elems, mapping)

            return elems
Beispiel #7
0
        def _generate_elements(self, elems):
            # Center of the structure
            (x0, y0) = self.position

            # elems += i3.Rectangle(layer=self.layer, center=(x0, y0),
            #                       box_size=(self.length + self.release_margin, self.width + self.release_margin))

            elems += i3.Rectangle(layer=self.layer,
                                  center=(300, 300),
                                  box_size=(200, 200))

            rec = i3.Rectangle(layer=self.layer,
                               center=(0, 0),
                               box_size=(200, 200))
            layer2 = i3.Layer(2)
            remove = i3.Wedge(layer=layer2,
                              begin_coord=(-100, 0),
                              end_coord=(-50, 0),
                              begin_width=8,
                              end_width=0.001)
            elems += rec
            elems += remove

            generated1 = self.layer - layer2
            mapping = {generated1: self.layer}
            output_elems = i3.get_elements_for_generated_layers(elems, mapping)
            # # elems = elems | wedge,
            # haha = rec | remove,
            # elems += remove,
            # # elems +=rec,
            # elems = elems.extend(haha),
            return output_elems
Beispiel #8
0
        def _generate_elements(self, elems):
            elems += i3.Rectangle(layer=i3.TECH.PPLAYER.WG.CORE,
                                  center=(0.5 * self.length, 0.0),
                                  box_size=(self.length, self.width))
            elems += i3.Wedge(layer=i3.TECH.PPLAYER.WG.CORE,
                              begin_coord=(-self.taper_length, 0.0),
                              end_coord=(0.0, 0.0),
                              begin_width=self.trace_template.core_width,
                              end_width=self.taper_width)
            elems += i3.Wedge(layer=i3.TECH.PPLAYER.WG.CORE,
                              begin_coord=(self.length,
                                           0.5 * self.waveguide_spacing),
                              end_coord=(self.length + self.taper_length,
                                         0.5 * self.waveguide_spacing),
                              begin_width=self.taper_width,
                              end_width=self.trace_template.core_width)
            elems += i3.Wedge(layer=i3.TECH.PPLAYER.WG.CORE,
                              begin_coord=(self.length,
                                           -0.5 * self.waveguide_spacing),
                              end_coord=(self.length + self.taper_length,
                                         -0.5 * self.waveguide_spacing),
                              begin_width=self.taper_width,
                              end_width=self.trace_template.core_width)

            elems += i3.Rectangle(
                layer=i3.TECH.PPLAYER.WG.CLADDING,
                center=(0.5 * self.length, 0.0),
                box_size=(self.length + 2 * self.taper_length,
                          self.width + 2.0))
            return elems
Beispiel #9
0
        def _generate_elements(self, elems):
            # Center of the structure
            (x0, y0) = self.position

            elems += i3.Rectangle(layer=self.layer,
                                  center=(1500 - 20, 2500),
                                  box_size=(3000 - 40, 3000 - 40 * 2))
            if self.tilt_0:
                elems += i3.Rectangle(layer=self.layer,
                                      center=(x0 + 6500 - 40 + 20 + 7.5, 2500),
                                      box_size=(self.length + 40 + 15,
                                                self.width - 40 * 2))
            else:
                elems += i3.Rectangle(layer=self.layer,
                                      center=(x0 + 6500 - 40 + 20 + 5, 2500),
                                      box_size=(self.length + 40 + 10,
                                                self.width - 40 * 2))

            for i in range(7):
                elems += i3.Rectangle(layer=self.layer_bool,
                                      center=(10000 - 725 - i * 750, 1000 +
                                              (3000 - self.width) / 2 + 185),
                                      box_size=(130, 130))
                elems += i3.Rectangle(
                    layer=self.layer_bool,
                    center=(10000 - 725 - i * 750,
                            1000 + (3000 - self.width) / 2 + self.width - 185),
                    box_size=(130, 130))

            generated1 = self.layer - self.layer_bool
            mapping = {generated1: self.layer}
            elems = i3.get_elements_for_generated_layers(elems, mapping)

            return elems
Beispiel #10
0
        def _generate_elements(self, elems):
            elems += i3.Rectangle(layer=i3.TECH.PPLAYER.PPLUS.LINE,
                                  center=(0, 7500),  # change
                                  box_size=(190, 21000))
            elems += i3.Rectangle(layer=i3.TECH.PPLAYER.PPLUS.LINE,
                                  center=(6000, 7500),  # change
                                  box_size=(190, 21000))
            elems += i3.Rectangle(layer=i3.TECH.PPLAYER.SIL.LINE,
                                  center=(0, 7500),  # change
                                  box_size=(210, 21000))

            return elems
Beispiel #11
0
        def _generate_elements(self, elems):

            # Center of the structure
            (x0, y0) = self.position

            elems += i3.Rectangle(layer=self.layer,
                                  center=(x0 + 6500 + 2000,
                                          y0 + 600 + (1800 - self.width) / 4),
                                  box_size=(self.length,
                                            (1800 - self.width) / 2))

            elems += i3.Rectangle(
                layer=self.layer,
                center=(x0 + 6500 + 2000,
                        y0 + 600 + self.width + (1800 - self.width) * 3 / 4),
                box_size=(self.length, (1800 - self.width) / 2))

            elems += i3.SRef(
                reference=Interface_mmi12(pocket=self.pocket, tilt=self.tilt))

            if self.pillar:
                self.label = "NO"
                for i in range(7):
                    elems += i3.Rectangle(
                        layer=self.layer,
                        center=(10000 - 725 - i * 750 + 2000,
                                600 + (1800 - self.width) / 2 + 30),  #change
                        box_size=(50, 60))
                    elems += i3.Rectangle(
                        layer=self.layer,
                        center=(10000 - 725 - i * 750 + 2000,
                                600 + (1800 - self.width) / 2 + self.width -
                                30),  #change
                        box_size=(50, 60))
            if self.width > 330:
                self.label += "W"
            if self.pocket:
                self.label += "_WP"
            if self.tilt:
                self.label += "WT"
            elems += i3.PolygonText(
                layer=self.layer_bool,
                text=self.label,
                coordinate=(8000, 2700),
                # alignment=(i3.TEXT_ALIGN_LEFT, i3.TEXT_ALIGN_LEFT),
                font=2,
                height=700.0)

            generated1 = self.layer - self.layer_bool
            mapping = {generated1: self.layer}
            elems = i3.get_elements_for_generated_layers(elems, mapping)
            return elems
Beispiel #12
0
        def _generate_elements(self, elems):

            num_x = 5
            x_step = 200
            y_step = 200

            pplayers = get_pplayers_from_tree(i3.TECH.PPLAYER)

            xcnt = 0
            ycnt = 0

            for p in pplayers:

                x = xcnt * x_step
                y = ycnt * y_step

                if not (p.process, p.purpose) in i3.TECH.GDSII.LAYERTABLE:
                    continue
                elems += i3.Rectangle(layer=p, center=(x, y), box_size=(100.0, 100.0))
                elems += i3.PolygonText(layer=p, text=p.name, coordinate=(x, y + 75.0), height=15.0)

                if xcnt == num_x - 1:
                    xcnt = 0
                    ycnt += 1
                else:
                    xcnt += 1

            return elems
Beispiel #13
0
        def _generate_elements(self, elems):
            elems += i3.Rectangle(
                layer=i3.TECH.PPLAYER.NONE.DOC,
                center=(0, 9000),  # change
                box_size=(200, 28000))

            # generated1 = i3.TECH.PPLAYER.HFW - i3.TECH.PPLAYER.NONE.DOC
            # mapping = {generated1: i3.TECH.PPLAYER.HFW}
            # elems = i3.get_elements_for_generated_layers(elems, mapping)
            return elems
Beispiel #14
0
        def _generate_elements(self, elems):
            elems += i3.Rectangle(
                layer=i3.TECH.PPLAYER.PPLUS.LINE,
                center=(0, 7500),  # change
                box_size=(190, 21000))
            elems += i3.Rectangle(
                layer=i3.TECH.PPLAYER.PPLUS.LINE,
                center=(6000, 7500),  # change
                box_size=(190, 21000))
            elems += i3.Rectangle(
                layer=i3.TECH.PPLAYER.SIL.LINE,
                center=(0, 7500),  # change
                box_size=(210, 21000))

            #ebeam
            for i in range(0, 7, 1):
                elems += i3.Rectangle(
                    layer=i3.TECH.PPLAYER.N.LINE,
                    center=(-5770, -1215 + 3000 * i),  # change
                    box_size=(540, 150))
                elems += i3.Rectangle(
                    layer=i3.TECH.PPLAYER.N.LINE,
                    center=(6000, -1215 + 3000 * i),  # change
                    box_size=(1000, 150))
                elems += i3.Rectangle(
                    layer=i3.TECH.PPLAYER.N.LINE,
                    center=(17770, -1215 + 3000 * i),  # change
                    box_size=(540, 150))
            return elems
Beispiel #15
0
 def _generate_elements(self, elems):
     layer_core = self.trace_template.core_layer
     # mmi core
     elems += i3.Rectangle(layer=layer_core, center=(+self.length / 2.0, 0.0),
                           box_size=(self.length, self.width))
     # input wedges
     for bc, ec in self._get_input_taper_coords():
         elems += i3.Wedge(layer_core, begin_coord=bc, end_coord=ec, begin_width=self.taper_width,
                           end_width=self.trace_template.core_width)
     for bc, ec in self._get_output_taper_coords():
         elems += i3.Wedge(layer_core, begin_coord=bc, end_coord=ec, begin_width=self.taper_width,
                           end_width=self.trace_template.core_width)
     return elems
Beispiel #16
0
        def _generate_elements(self, elems):
            for counter, child in enumerate(self.DC_list):
                name = child.name

                elems += i3.PolygonText(
                    layer=i3.TECH.PPLAYER.WG.TEXT,
                    text="{}_{}".format(name, self.cell.wg_t1.name),
                    # coordinate=(1300.0, 100.0),
                    alignment=(i3.TEXT_ALIGN_LEFT, i3.TEXT_ALIGN_LEFT),
                    font=2,
                    height=30.0,
                    transformation=i3.Translation((600, 100 + 6000 * counter)))
                for i in range(1, 8, 1):
                    elems += i3.PolygonText(
                        layer=i3.TECH.PPLAYER.WG.TEXT,
                        text="{}".format(i),
                        coordinate=(400, -4400 + 3000 * i),
                        font=2,
                        height=200.0,
                    )
                for j in range(-1, 2, 1):
                    for i in range(0, 4, 1):
                        elems += i3.Rectangle(layer=i3.TECH.PPLAYER.WG.TEXT,
                                              center=(100 + j * 6000,
                                                      -3000 + 100 + 6000 * i),
                                              box_size=(100, 100))
                        elems += i3.Rectangle(layer=i3.TECH.PPLAYER.WG.TEXT,
                                              center=(100 + j * 6000,
                                                      -3000 - 100 + 6000 * i),
                                              box_size=(100, 100))
                    elems += i3.Rectangle(layer=i3.TECH.PPLAYER.WG.TEXT,
                                          center=(100 + j * 6000, -3000 + 100 +
                                                  6000 * 3 + 3000),
                                          box_size=(100, 100))
                    elems += i3.Rectangle(layer=i3.TECH.PPLAYER.WG.TEXT,
                                          center=(100 + j * 6000, -3000 - 100 +
                                                  6000 * 3 + 3000),
                                          box_size=(100, 100))
                elems += i3.Rectangle(layer=i3.TECH.PPLAYER.WG.TEXT,
                                      center=(300,
                                              -3000 + 100 + 6000 * 3 + 3000),
                                      box_size=(100, 100))
                elems += i3.Rectangle(layer=i3.TECH.PPLAYER.WG.TEXT,
                                      center=(300, -3000 - 100),
                                      box_size=(100, 100))

            return elems
Beispiel #17
0
        def _generate_elements(self, elems):
            # Center of the structure
            (x0, y0) = self.position

            for i in range(0, 4, 1):
                for j in range(0, 3, 1):
                    elems += i3.Rectangle(layer=self.layer,
                                          center=(x0 + i * 6000,
                                                  y0 + j * 7000),
                                          box_size=(100, 100))
                    elems += i3.Rectangle(layer=self.layer,
                                          center=(x0 + 200 + i * 6000,
                                                  y0 + j * 7000),
                                          box_size=(100, 100))
                    elems += i3.Rectangle(layer=self.layer,
                                          center=(x0 + i * 6000,
                                                  y0 + 200 + j * 7000),
                                          box_size=(100, 100))
                    elems += i3.Rectangle(layer=self.layer,
                                          center=(x0 + i * 6000 + 200,
                                                  y0 + 200 + j * 7000),
                                          box_size=(100, 100))
                    for k in range(0, 20, 1):
                        elems += i3.Rectangle(
                            layer=self.layer,
                            center=(-1000 + 0 + i * 6000,
                                    1000 + 10 * k + j * 7000),
                            box_size=(500, 0.6 + 0.2 * k))
                        elems += i3.PolygonText(
                            layer=self.layer,
                            text="{}".format(str(k)),
                            # coordinate=(1300.0, 100.0),
                            # alignment=(i3.TEXT_ALIGN_LEFT, i3.TEXT_ALIGN_LEFT),
                            font=2,
                            height=7.0,
                            transformation=i3.Translation(
                                (-1000 + 260 + i * 6000,
                                 1000 + 3 + 10 * k + j * 7000)))
            elems += i3.Rectangle(layer=i3.TECH.PPLAYER.NONE.DOC,
                                  center=(9000, 7500),
                                  box_size=(21000, 16000))
            # elems += i3.Rectangle(layer=i3.TECH.PPLAYER.CONTACT.PILLAR, center=(8500, 7500),
            #                       box_size=(22000, 18000))

            return elems
Beispiel #18
0
        def _generate_elements(self, elems):

            # Center of the structure
            (x0, y0) = self.position

            shift = 0.5 * self.cross_width + self.cross_margin
            square_length = 0.5 * self.cross_length - shift

            if (self.complement == False and self.protection == False):

                # Add cross
                elems += i3.Rectangle(layer=self.layer,
                                      center=(x0, y0),
                                      box_size=(self.cross_length,
                                                self.cross_width))
                elems += i3.Rectangle(layer=self.layer,
                                      center=(x0, y0),
                                      box_size=(self.cross_width,
                                                self.cross_length))

                # Add rectangles left VERNIER
                elems += i3.Rectangle(layer=self.layer,
                                      center=(self.vernier_left_center[0],
                                              self.vernier_left_center[1]),
                                      box_size=(self.vernier_length,
                                                self.vernier_width))
                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_left_center[0],
                            self.vernier_left_center[1] + self.vernier_period),
                    box_size=(self.vernier_length, self.vernier_width))
                elems += i3.Rectangle(layer=self.layer,
                                      center=(self.vernier_left_center[0],
                                              self.vernier_left_center[1] +
                                              2.0 * self.vernier_period),
                                      box_size=(self.vernier_length,
                                                self.vernier_width))
                elems += i3.Rectangle(layer=self.layer,
                                      center=(self.vernier_left_center[0],
                                              self.vernier_left_center[1] +
                                              3.0 * self.vernier_period),
                                      box_size=(self.vernier_length,
                                                self.vernier_width))
                elems += i3.Rectangle(layer=self.layer,
                                      center=(self.vernier_left_center[0],
                                              self.vernier_left_center[1] +
                                              4.0 * self.vernier_period),
                                      box_size=(self.vernier_length,
                                                self.vernier_width))
                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_left_center[0],
                            self.vernier_left_center[1] - self.vernier_period),
                    box_size=(self.vernier_length, self.vernier_width))
                elems += i3.Rectangle(layer=self.layer,
                                      center=(self.vernier_left_center[0],
                                              self.vernier_left_center[1] -
                                              2.0 * self.vernier_period),
                                      box_size=(self.vernier_length,
                                                self.vernier_width))
                elems += i3.Rectangle(layer=self.layer,
                                      center=(self.vernier_left_center[0],
                                              self.vernier_left_center[1] -
                                              3.0 * self.vernier_period),
                                      box_size=(self.vernier_length,
                                                self.vernier_width))
                elems += i3.Rectangle(layer=self.layer,
                                      center=(self.vernier_left_center[0],
                                              self.vernier_left_center[1] -
                                              4.0 * self.vernier_period),
                                      box_size=(self.vernier_length,
                                                self.vernier_width))

                # Add rectangles top VERNIER
                elems += i3.Rectangle(layer=self.layer,
                                      center=(self.vernier_top_center[0],
                                              self.vernier_top_center[1]),
                                      box_size=(self.vernier_width,
                                                self.vernier_length))
                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_top_center[0] + self.vernier_period,
                            self.vernier_top_center[1]),
                    box_size=(self.vernier_width, self.vernier_length))
                elems += i3.Rectangle(layer=self.layer,
                                      center=(self.vernier_top_center[0] +
                                              2.0 * self.vernier_period,
                                              self.vernier_top_center[1]),
                                      box_size=(self.vernier_width,
                                                self.vernier_length))
                elems += i3.Rectangle(layer=self.layer,
                                      center=(self.vernier_top_center[0] +
                                              3.0 * self.vernier_period,
                                              self.vernier_top_center[1]),
                                      box_size=(self.vernier_width,
                                                self.vernier_length))
                elems += i3.Rectangle(layer=self.layer,
                                      center=(self.vernier_top_center[0] +
                                              4.0 * self.vernier_period,
                                              self.vernier_top_center[1]),
                                      box_size=(self.vernier_width,
                                                self.vernier_length))
                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_top_center[0] - self.vernier_period,
                            self.vernier_top_center[1]),
                    box_size=(self.vernier_width, self.vernier_length))
                elems += i3.Rectangle(layer=self.layer,
                                      center=(self.vernier_top_center[0] -
                                              2.0 * self.vernier_period,
                                              self.vernier_top_center[1]),
                                      box_size=(self.vernier_width,
                                                self.vernier_length))
                elems += i3.Rectangle(layer=self.layer,
                                      center=(self.vernier_top_center[0] -
                                              3.0 * self.vernier_period,
                                              self.vernier_top_center[1]),
                                      box_size=(self.vernier_width,
                                                self.vernier_length))
                elems += i3.Rectangle(layer=self.layer,
                                      center=(self.vernier_top_center[0] -
                                              4.0 * self.vernier_period,
                                              self.vernier_top_center[1]),
                                      box_size=(self.vernier_width,
                                                self.vernier_length))

                # Add TEXT
                elems += i3.PolygonText(layer=self.layer,
                                        coordinate=(x0, y0 - 100.0),
                                        text=self.layer_text,
                                        height=35.0)

            elif (self.complement == True and self.protection == False):

                # Add squares
                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(x0 - 0.25 * self.cross_length - 0.5 * shift,
                            y0 + 0.25 * self.cross_length + 0.5 * shift),
                    box_size=(square_length, square_length))
                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(x0 + 0.25 * self.cross_length + 0.5 * shift,
                            y0 + 0.25 * self.cross_length + 0.5 * shift),
                    box_size=(square_length, square_length))
                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(x0 - 0.25 * self.cross_length - 0.5 * shift,
                            y0 - 0.25 * self.cross_length - 0.5 * shift),
                    box_size=(square_length, square_length))
                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(x0 + 0.25 * self.cross_length + 0.5 * shift,
                            y0 - 0.25 * self.cross_length - 0.5 * shift),
                    box_size=(square_length, square_length))

                # Add rectangles left VERNIER
                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_left_center[0] -
                            self.vernier_complement_shift -
                            0.5 * self.vernier_complement_long_length,
                            self.vernier_left_center[1]),
                    box_size=(self.vernier_complement_long_length,
                              self.vernier_complement_width))
                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_left_center[0] +
                            self.vernier_complement_shift +
                            0.5 * self.vernier_complement_long_length,
                            self.vernier_left_center[1]),
                    box_size=(self.vernier_complement_long_length,
                              self.vernier_complement_width))

                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_left_center[0] -
                            self.vernier_complement_shift -
                            0.5 * self.vernier_complement_length,
                            self.vernier_left_center[1] +
                            self.vernier_complement_period),
                    box_size=(self.vernier_complement_length,
                              self.vernier_complement_width))
                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_left_center[0] +
                            self.vernier_complement_shift +
                            0.5 * self.vernier_complement_length,
                            self.vernier_left_center[1] +
                            self.vernier_complement_period),
                    box_size=(self.vernier_complement_length,
                              self.vernier_complement_width))

                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_left_center[0] -
                            self.vernier_complement_shift -
                            0.5 * self.vernier_complement_length,
                            self.vernier_left_center[1] +
                            2.0 * self.vernier_complement_period),
                    box_size=(self.vernier_complement_length,
                              self.vernier_complement_width))
                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_left_center[0] +
                            self.vernier_complement_shift +
                            0.5 * self.vernier_complement_length,
                            self.vernier_left_center[1] +
                            2.0 * self.vernier_complement_period),
                    box_size=(self.vernier_complement_length,
                              self.vernier_complement_width))

                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_left_center[0] -
                            self.vernier_complement_shift -
                            0.5 * self.vernier_complement_length,
                            self.vernier_left_center[1] +
                            3.0 * self.vernier_complement_period),
                    box_size=(self.vernier_complement_length,
                              self.vernier_complement_width))
                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_left_center[0] +
                            self.vernier_complement_shift +
                            0.5 * self.vernier_complement_length,
                            self.vernier_left_center[1] +
                            3.0 * self.vernier_complement_period),
                    box_size=(self.vernier_complement_length,
                              self.vernier_complement_width))

                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_left_center[0] -
                            self.vernier_complement_shift -
                            0.5 * self.vernier_complement_length,
                            self.vernier_left_center[1] +
                            4.0 * self.vernier_complement_period),
                    box_size=(self.vernier_complement_length,
                              self.vernier_complement_width))
                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_left_center[0] +
                            self.vernier_complement_shift +
                            0.5 * self.vernier_complement_length,
                            self.vernier_left_center[1] +
                            4.0 * self.vernier_complement_period),
                    box_size=(self.vernier_complement_length,
                              self.vernier_complement_width))

                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_left_center[0] -
                            self.vernier_complement_shift -
                            0.5 * self.vernier_complement_length,
                            self.vernier_left_center[1] -
                            self.vernier_complement_period),
                    box_size=(self.vernier_complement_length,
                              self.vernier_complement_width))
                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_left_center[0] +
                            self.vernier_complement_shift +
                            0.5 * self.vernier_complement_length,
                            self.vernier_left_center[1] -
                            self.vernier_complement_period),
                    box_size=(self.vernier_complement_length,
                              self.vernier_complement_width))

                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_left_center[0] -
                            self.vernier_complement_shift -
                            0.5 * self.vernier_complement_length,
                            self.vernier_left_center[1] -
                            2.0 * self.vernier_complement_period),
                    box_size=(self.vernier_complement_length,
                              self.vernier_complement_width))
                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_left_center[0] +
                            self.vernier_complement_shift +
                            0.5 * self.vernier_complement_length,
                            self.vernier_left_center[1] -
                            2.0 * self.vernier_complement_period),
                    box_size=(self.vernier_complement_length,
                              self.vernier_complement_width))

                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_left_center[0] -
                            self.vernier_complement_shift -
                            0.5 * self.vernier_complement_length,
                            self.vernier_left_center[1] -
                            3.0 * self.vernier_complement_period),
                    box_size=(self.vernier_complement_length,
                              self.vernier_complement_width))
                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_left_center[0] +
                            self.vernier_complement_shift +
                            0.5 * self.vernier_complement_length,
                            self.vernier_left_center[1] -
                            3.0 * self.vernier_complement_period),
                    box_size=(self.vernier_complement_length,
                              self.vernier_complement_width))

                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_left_center[0] -
                            self.vernier_complement_shift -
                            0.5 * self.vernier_complement_length,
                            self.vernier_left_center[1] -
                            4.0 * self.vernier_complement_period),
                    box_size=(self.vernier_complement_length,
                              self.vernier_complement_width))
                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_left_center[0] +
                            self.vernier_complement_shift +
                            0.5 * self.vernier_complement_length,
                            self.vernier_left_center[1] -
                            4.0 * self.vernier_complement_period),
                    box_size=(self.vernier_complement_length,
                              self.vernier_complement_width))

                # Add rectangles top VERNIER
                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_top_center[0],
                            self.vernier_top_center[1] -
                            self.vernier_complement_shift -
                            0.5 * self.vernier_complement_long_length),
                    box_size=(self.vernier_complement_width,
                              self.vernier_complement_long_length))
                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_top_center[0],
                            self.vernier_top_center[1] +
                            self.vernier_complement_shift +
                            0.5 * self.vernier_complement_long_length),
                    box_size=(self.vernier_complement_width,
                              self.vernier_complement_long_length))

                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_top_center[0] +
                            self.vernier_complement_period,
                            self.vernier_top_center[1] -
                            self.vernier_complement_shift -
                            0.5 * self.vernier_complement_length),
                    box_size=(self.vernier_complement_width,
                              self.vernier_complement_length))
                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_top_center[0] +
                            self.vernier_complement_period,
                            self.vernier_top_center[1] +
                            self.vernier_complement_shift +
                            0.5 * self.vernier_complement_length),
                    box_size=(self.vernier_complement_width,
                              self.vernier_complement_length))

                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_top_center[0] +
                            2.0 * self.vernier_complement_period,
                            self.vernier_top_center[1] -
                            self.vernier_complement_shift -
                            0.5 * self.vernier_complement_length),
                    box_size=(self.vernier_complement_width,
                              self.vernier_complement_length))
                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_top_center[0] +
                            2.0 * self.vernier_complement_period,
                            self.vernier_top_center[1] +
                            self.vernier_complement_shift +
                            0.5 * self.vernier_complement_length),
                    box_size=(self.vernier_complement_width,
                              self.vernier_complement_length))

                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_top_center[0] +
                            3.0 * self.vernier_complement_period,
                            self.vernier_top_center[1] -
                            self.vernier_complement_shift -
                            0.5 * self.vernier_complement_length),
                    box_size=(self.vernier_complement_width,
                              self.vernier_complement_length))
                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_top_center[0] +
                            3.0 * self.vernier_complement_period,
                            self.vernier_top_center[1] +
                            self.vernier_complement_shift +
                            0.5 * self.vernier_complement_length),
                    box_size=(self.vernier_complement_width,
                              self.vernier_complement_length))

                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_top_center[0] +
                            4.0 * self.vernier_complement_period,
                            self.vernier_top_center[1] -
                            self.vernier_complement_shift -
                            0.5 * self.vernier_complement_length),
                    box_size=(self.vernier_complement_width,
                              self.vernier_complement_length))
                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_top_center[0] +
                            4.0 * self.vernier_complement_period,
                            self.vernier_top_center[1] +
                            self.vernier_complement_shift +
                            0.5 * self.vernier_complement_length),
                    box_size=(self.vernier_complement_width,
                              self.vernier_complement_length))

                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_top_center[0] -
                            self.vernier_complement_period,
                            self.vernier_top_center[1] -
                            self.vernier_complement_shift -
                            0.5 * self.vernier_complement_length),
                    box_size=(self.vernier_complement_width,
                              self.vernier_complement_length))
                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_top_center[0] -
                            self.vernier_complement_period,
                            self.vernier_top_center[1] +
                            self.vernier_complement_shift +
                            0.5 * self.vernier_complement_length),
                    box_size=(self.vernier_complement_width,
                              self.vernier_complement_length))

                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_top_center[0] -
                            2.0 * self.vernier_complement_period,
                            self.vernier_top_center[1] -
                            self.vernier_complement_shift -
                            0.5 * self.vernier_complement_length),
                    box_size=(self.vernier_complement_width,
                              self.vernier_complement_length))
                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_top_center[0] -
                            2.0 * self.vernier_complement_period,
                            self.vernier_top_center[1] +
                            self.vernier_complement_shift +
                            0.5 * self.vernier_complement_length),
                    box_size=(self.vernier_complement_width,
                              self.vernier_complement_length))

                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_top_center[0] -
                            3.0 * self.vernier_complement_period,
                            self.vernier_top_center[1] -
                            self.vernier_complement_shift -
                            0.5 * self.vernier_complement_length),
                    box_size=(self.vernier_complement_width,
                              self.vernier_complement_length))
                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_top_center[0] -
                            3.0 * self.vernier_complement_period,
                            self.vernier_top_center[1] +
                            self.vernier_complement_shift +
                            0.5 * self.vernier_complement_length),
                    box_size=(self.vernier_complement_width,
                              self.vernier_complement_length))

                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_top_center[0] -
                            4.0 * self.vernier_complement_period,
                            self.vernier_top_center[1] -
                            self.vernier_complement_shift -
                            0.5 * self.vernier_complement_length),
                    box_size=(self.vernier_complement_width,
                              self.vernier_complement_length))
                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(self.vernier_top_center[0] -
                            4.0 * self.vernier_complement_period,
                            self.vernier_top_center[1] +
                            self.vernier_complement_shift +
                            0.5 * self.vernier_complement_length),
                    box_size=(self.vernier_complement_width,
                              self.vernier_complement_length))

            else:
                elems += i3.Rectangle(layer=self.layer,
                                      center=(x0 - 43.5, y0 + 11.5),
                                      box_size=(self.protection_length,
                                                self.protection_width))

            return elems
Beispiel #19
0
        def _generate_elements(self, elems):
            super(PlaceAndAutoRoute.Layout, self)._generate_elements(elems)

            total_length = self.modulator_length + self.additional_length
            delta = self.delta
            delay = self.delay

            signal_width = self.signal_width
            metal_spacing = self.metal_spacing
            ground_width = self.ground_width

            period_pad = self.period_pad
            taper_length = self.taper_length
            pad_length = self.pad_length
            pad_width = self.pad_width
            pad_size = (pad_length, pad_width)

            y_ground = -delta + min(
                delay / 2.,
                0.) - signal_width - 1.5 * metal_spacing - ground_width / 2.
            y_arm1_n = -delta + min(
                delay / 2., 0.) - signal_width / 2. - metal_spacing / 2.
            y_arm1_p = delay / 4. - signal_width / 2. - metal_spacing / 2.
            y_arm2_n = delta + max(delay / 2.,
                                   0.) - signal_width / 2. - metal_spacing / 2.
            y_arm2_p = delta + max(delay / 2.,
                                   0.) + ground_width / 2. + metal_spacing / 2.

            arm2_n_width = 2 * delta + abs(
                delay / 2.) - signal_width - 2 * metal_spacing

            # Metal lines
            lines = []
            ground = i3.Rectangle(layer=i3.TECH.PPLAYER.M1,
                                  center=(0., y_ground),
                                  box_size=(total_length, ground_width))
            arm1_n = i3.Rectangle(layer=i3.TECH.PPLAYER.M1,
                                  center=(0., y_arm1_n),
                                  box_size=(total_length, signal_width))
            arm1_p = i3.Rectangle(layer=i3.TECH.PPLAYER.M1,
                                  center=(0., y_arm1_p),
                                  box_size=(total_length, arm2_n_width))
            arm2_n = i3.Rectangle(layer=i3.TECH.PPLAYER.M1,
                                  center=(0., y_arm2_n),
                                  box_size=(total_length, signal_width))
            arm2_p = i3.Rectangle(layer=i3.TECH.PPLAYER.M1,
                                  center=(0., y_arm2_p),
                                  box_size=(total_length, ground_width))

            lines += [ground, arm1_n, arm1_p, arm2_n, arm2_p]

            # Metal left pads
            left_pads = []
            taper_ground = i3.Boundary(
                layer=i3.TECH.PPLAYER.M1,
                shape=[
                    (-(total_length / 2. + taper_length),
                     y_arm1_p - 2 * period_pad + pad_width / 2.),
                    (-(total_length / 2. + taper_length),
                     y_arm1_p - 2 * period_pad - pad_width / 2.),
                    (-total_length / 2., y_ground - ground_width / 2.),
                    (-total_length / 2., y_ground + ground_width / 2.),
                ])
            taper_arm1_n = i3.Boundary(
                layer=i3.TECH.PPLAYER.M1,
                shape=[
                    (-(total_length / 2. + taper_length),
                     y_arm1_p - period_pad + pad_width / 2.),
                    (-(total_length / 2. + taper_length),
                     y_arm1_p - period_pad - pad_width / 2.),
                    (-total_length / 2., y_arm1_n - signal_width / 2.),
                    (-total_length / 2., y_arm1_n + signal_width / 2.),
                ])
            taper_arm1_p = i3.Wedge(
                layer=i3.TECH.PPLAYER.M1,
                begin_coord=(-(total_length / 2. + taper_length), y_arm1_p),
                end_coord=(-total_length / 2., y_arm1_p),
                begin_width=pad_width,
                end_width=arm2_n_width,
            )
            taper_arm2_n = i3.Boundary(
                layer=i3.TECH.PPLAYER.M1,
                shape=[
                    (-(total_length / 2. + taper_length),
                     y_arm1_p + period_pad + pad_width / 2.),
                    (-(total_length / 2. + taper_length),
                     y_arm1_p + period_pad - pad_width / 2.),
                    (-total_length / 2., y_arm2_n - signal_width / 2.),
                    (-total_length / 2., y_arm2_n + signal_width / 2.),
                ])
            taper_arm2_p = i3.Boundary(
                layer=i3.TECH.PPLAYER.M1,
                shape=[
                    (-(total_length / 2. + taper_length),
                     y_arm1_p + 2 * period_pad + pad_width / 2.),
                    (-(total_length / 2. + taper_length),
                     y_arm1_p + 2 * period_pad - pad_width / 2.),
                    (-total_length / 2., y_arm2_p - ground_width / 2.),
                    (-total_length / 2., y_arm2_p + ground_width / 2.),
                ])

            for i in range(-2, 3):
                left_pads += i3.Rectangle(
                    layer=i3.TECH.PPLAYER.M1,
                    center=(
                        -(total_length / 2. + taper_length + pad_length / 2.),
                        y_arm1_p + i * period_pad),
                    box_size=pad_size)

            left_pads += [
                taper_ground, taper_arm1_n, taper_arm1_p, taper_arm2_n,
                taper_arm2_p
            ]

            # Metal right pads
            right_pads = [
                elt.transform_copy(i3.HMirror(0.)) for elt in left_pads
            ]

            elems += lines
            elems += left_pads
            elems += right_pads
            return elems
Beispiel #20
0
        def _generate_elements(self, elems):

            elems += i3.Rectangle(layer=self.layer,
                                  center=(0, 0),
                                  box_size=(self.length, self.width))
            return elems
Beispiel #21
0
        def _generate_elements(self, elems):

            # Center of the structure
            (x0, y0) = self.position

            elems += i3.Rectangle(layer=self.layer,
                                  center=(8750 - 15 - 10 + 5, 1500),
                                  box_size=(500 - 40, 1800 - 100))

            elems += i3.Rectangle(layer=self.layer,
                                  center=(10500 - 15 - 10 + self.tilt / 2,
                                          1500),
                                  box_size=(3000 + 50 + self.tilt,
                                            450 - 15 * 2))

            elems += i3.Rectangle(layer=self.layer,
                                  center=(8750 - 15 - 10 + 5 + 2420 - 150,
                                          1000 - 120),
                                  box_size=(2000, 500 - 40))  # extra SiN pad

            # for i in range(4):
            #     elems += i3.Rectangle(layer=self.layer,
            #                           center=(
            #                               10000 - 725 - i * 750 + 2000 + 350, 1316+72.75),
            #                           box_size=(145, 77.5))
            #     elems += i3.Rectangle(layer=self.layer, center=(
            #         10000 - 725 - i * 750 + 2000 + 350, 1684-72.75),  # change
            #                           box_size=(145, 77.5))

            if self.pillar:
                for i in range(4):
                    elems += i3.Rectangle(
                        layer=self.layer_bool,
                        center=(10000 - 725 - i * 750 + 2000 + 550,
                                1316 + self.width / 2 - 11.0 / 2),
                        box_size=(self.length + 30, self.width + 30 + 11))
                    elems += i3.Rectangle(
                        layer=self.layer_bool,
                        center=(10000 - 725 - i * 750 + 2000 + 550,
                                1684 - self.width / 2 + 11.0 / 2),  # change
                        box_size=(self.length + 30, self.width + 30 + 11))
                    if self.double:
                        elems += i3.Rectangle(
                            layer=self.layer_bool,
                            center=(10000 - 725 - i * 750 + 2000 + 550 - 400,
                                    1316 + self.width / 2 - 11.0 / 2),
                            box_size=(self.length + 30, self.width + 30 + 11))
                        elems += i3.Rectangle(
                            layer=self.layer_bool,
                            center=(10000 - 725 - i * 750 + 2000 + 550 - 400,
                                    1684 - self.width / 2 + 11.0 / 2),
                            # change
                            box_size=(self.length + 30, self.width + 30 + 11))

            # if self.tilt_0:
            #     elems += i3.Rectangle(layer=self.layer,
            #                           center=(x0 + 6500 - 40 + 20 + 7.5, 2500),
            #                           box_size=(self.length + 40 + 15, self.width - 40 * 2))
            # else:
            #     elems += i3.Rectangle(layer=self.layer,
            #                           center=(x0 + 6500 - 40 + 20 + 5, 2500),
            #                           box_size=(self.length + 40 + 10, self.width - 40 * 2))
            #
            # if self.pillar:
            #     for i in range(7):
            #         elems += i3.Rectangle(layer=self.layer_bool,
            #                               center=(10000 - 725 - i * 750, 1000 + (3000 - self.width) / 2 + 30),
            #                               box_size=(130, 140))
            #         elems += i3.Rectangle(layer=self.layer_bool, center=(
            #             10000 - 725 - i * 750, 1000 + (3000 - self.width) / 2 + self.width - 30),
            #                               box_size=(130, 140))

            generated1 = self.layer - self.layer_bool
            mapping = {generated1: self.layer}
            elems = i3.get_elements_for_generated_layers(elems, mapping)
            return elems
Beispiel #22
0
        def _generate_elements(self, elems):

            # Center of the structure
            (x0, y0) = self.position

            elems += i3.Rectangle(layer=self.layer, center=(6250, -500),
                                  box_size=(500, 500))

            elems += i3.Rectangle(layer=self.layer, center=(6250, 1000),
                                  box_size=(500, 500))



            elems += i3.Rectangle(layer=self.layer2, center=(9950, 1000),
                                  box_size=(4100, self.width))  # heaters

            elems += i3.Rectangle(layer=self.layer3, center=(9950, 1000),
                                  box_size=(3900, self.width+20))  # heaters during plating

            elems += i3.Rectangle(layer=self.layer, center=(9950 - 4100 / 2+50, 1000),
                                  box_size=(100, self.width))  # heaters butt left

            elems += i3.Rectangle(layer=self.layer, center=(9950 + 4100 / 2 - 50, 1000),
                                  box_size=(100, self.width))  # heaters butt right


            elems += i3.Rectangle(layer=self.layer, center=(9950 - 4100 / 2 + 50-750, 1000),
                                  box_size=(1400, 100))  # left

            elems += i3.Rectangle(layer=self.layer, center=(9950 - 4100 / 2 + 50 - 750-450, -500),
                                  box_size=(500, 100))

            elems += i3.Rectangle(layer=self.layer, center=(9950 + 4100 / 2 - 50, 1000 - (500+self.width) / 2),
                                  box_size=(100, 500))

            elems += i3.Rectangle(layer=self.layer, center=(9450, 1000-self.width/2-450),
                                  box_size=(4900, 100))

            elems += i3.Rectangle(layer=self.layer, center=(5050 + 4100 / 2 - 50, -550+(1000-self.width/2+50)/2),
                                  box_size=(100, 1000-self.width/2+50))

            elems += i3.PolygonText(layer=i3.TECH.PPLAYER.WG.TEXT,
                                    text="width_{}".format(self.width),
                                    # coordinate=(1300.0, 100.0),
                                    alignment=(i3.TEXT_ALIGN_LEFT, i3.TEXT_ALIGN_LEFT),
                                    font=2,
                                    height=400.0,
                                    transformation=i3.Translation((8000, 0))
                                    )

            return elems
Beispiel #23
0
        def _generate_elements(self, elems):

            # Center of the structure
            (x0, y0) = self.position
            # width2 = 338 + 15 + 15

            elems += i3.Rectangle(layer=self.layer,
                                  center=(8750 - 15 - 10 + 5, 1500),
                                  box_size=(500 - 40, 1800 - 100))

            elems += i3.Rectangle(layer=self.layer,
                                  center=(10500 - 15 - 10, 1500),
                                  box_size=(3000 + 50, 145))

            elems += i3.Rectangle(layer=self.layer,
                                  center=(8750 - 15 - 10 + 5 + 2420 - 150,
                                          1000 - 120),
                                  box_size=(2000, 500 - 40))  #extra pad

            elems += i3.Rectangle(
                layer=self.layer_bool,
                center=(8750 - 15 - 10 + 5 + 2420 - 150 + 998,
                        1000 - 120 + 620),
                box_size=(4, 145))  #extra shrink on the interface

            for i in range(4):
                elems += i3.Rectangle(layer=self.layer,
                                      center=(10000 - 725 - i * 750 + 2000 +
                                              350 + self.offset, 1316 + 72.75),
                                      box_size=(145, 77.5))
                elems += i3.Rectangle(
                    layer=self.layer,
                    center=(10000 - 725 - i * 750 + 2000 + 350 + self.offset,
                            1684 - 72.75),  # change
                    box_size=(145, 77.5))

            # Avoid solder spill on facet
            elems += i3.Rectangle(layer=self.layer_bool,
                                  center=(12000 - 20, 1500),
                                  box_size=(40, 50))
            elems += i3.Rectangle(layer=self.layer_bool,
                                  center=(12000 - 750 * 2, 1500),
                                  box_size=(80, 50))
            elems += i3.Rectangle(layer=self.layer_bool,
                                  center=(12000 - 750 * 3, 1500),
                                  box_size=(80, 50))
            elems += i3.Rectangle(layer=self.layer_bool,
                                  center=(12000 - 750 * 4, 1500),
                                  box_size=(80, 50))

            # reservoir
            if self.reservoir:
                for i in range(3):
                    elems += i3.Rectangle(layer=self.layer,
                                          center=(-750 * i + 12000 - 750,
                                                  1572.5 + 20),
                                          box_size=(149, 40))
                    elems += i3.Rectangle(layer=self.layer,
                                          center=(-750 * i + 12000 - 750,
                                                  1427.5 - 20),
                                          box_size=(149, 40))
                    elems += i3.Rectangle(layer=self.layer,
                                          center=(-750 * i + 12000 - 750,
                                                  1572.5 + 20),
                                          box_size=(149, 40))
                    elems += i3.Rectangle(layer=self.layer,
                                          center=(-750 * i + 12000 - 750,
                                                  1427.5 - 20),
                                          box_size=(149, 40))
                    elems += i3.Rectangle(layer=self.layer,
                                          center=(-750 * i + 12000 - 750,
                                                  1572.5 + 20),
                                          box_size=(149, 40))
                    elems += i3.Rectangle(layer=self.layer,
                                          center=(-750 * i + 12000 - 750,
                                                  1427.5 - 20),
                                          box_size=(149, 40))
                elems += i3.PolygonText(
                    layer=self.layer,
                    text="RE",
                    coordinate=(12000, 2600),
                    # alignment=(i3.TEXT_ALIGN_LEFT, i3.TEXT_ALIGN_LEFT),
                    font=2,
                    height=400.0)

            # Markers
            bigsquare = 16.5
            smallsquare = 11.5
            for i in range(-3, 0, 2):
                elems += i3.Rectangle(layer=self.layer_bool,
                                      center=(750 * i + 12000 - 78, 1568.75),
                                      box_size=(9, 9.5))
                elems += i3.Rectangle(layer=self.layer_bool,
                                      center=(750 * i + 12000 - 49.5,
                                              1572 - 32),
                                      box_size=(9, 9))
                elems += i3.Rectangle(layer=self.layer_bool,
                                      center=(750 * i + 12000 - 49.5 - 57,
                                              1572 - 32),
                                      box_size=(9, 9))
                elems += i3.Rectangle(layer=self.layer_bool,
                                      center=(750 * i + 12000 - 78,
                                              1568.75 - 57.5),
                                      box_size=(9, 9.5))
                elems += i3.Rectangle(layer=self.layer_bool,
                                      center=(750 * i + 12000 - 58.75,
                                              1572.5 - 13.25),
                                      box_size=(smallsquare, smallsquare))
                elems += i3.Rectangle(layer=self.layer_bool,
                                      center=(750 * i + 12000 - 58.75 - 38.5,
                                              1572.5 - 13.25),
                                      box_size=(smallsquare, smallsquare))
                elems += i3.Rectangle(layer=self.layer_bool,
                                      center=(750 * i + 12000 - 58.75,
                                              1572.5 - 13.25 - 38.5),
                                      box_size=(smallsquare, smallsquare))
                elems += i3.Rectangle(layer=self.layer_bool,
                                      center=(750 * i + 12000 - 58.75 - 38.5,
                                              1572.5 - 13.25 - 38.5),
                                      box_size=(smallsquare, smallsquare))
                # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 78, 1568.75-80), box_size=(7, 7.5))
                # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 49.5, 1572 - 32-80), box_size=(7, 7))
                # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 49.5 - 57, 1572 - 32-80), box_size=(7, 7))
                # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 78, 1568.75 - 57.5-80), box_size=(7, 7.5))
                # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 58.75-2.5, 1572.5 - 13.25-80-2.5), box_size=(bigsquare, bigsquare))
                # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 58.75 - 38.5+2.5, 1572.5 - 13.25-80-2.5),
                #                       box_size=(bigsquare, bigsquare))
                # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 58.75-2.5, 1572.5 - 13.25 - 38.5-80+2.5),
                #                       box_size=(bigsquare, bigsquare))
                # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 58.75 - 38.5+2.5, 1572.5 - 13.25 - 38.5-80+2.5),
                #                       box_size=(bigsquare, bigsquare))

                # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 78-594, 1568.75), box_size=(7, 7.5))
                # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 49.5-594, 1572 - 32), box_size=(7, 7))
                # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 49.5 - 57-594, 1572 - 32), box_size=(7, 7))
                # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 78-594, 1568.75 - 57.5), box_size=(7, 7.5))
                # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 58.75-594-2.5, 1572.5 - 13.25-2.5), box_size=(bigsquare, bigsquare))
                # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 58.75 - 38.5-594+2.5, 1572.5 - 13.25-2.5),
                #                       box_size=(bigsquare, bigsquare))
                # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 58.75-594-2.5, 1572.5 - 13.25 - 38.5+2.5),
                #                       box_size=(bigsquare, bigsquare))
                # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 58.75 - 38.5-594+2.5, 1572.5 - 13.25 - 38.5+2.5),
                #                       box_size=(bigsquare, bigsquare))
                elems += i3.Rectangle(layer=self.layer_bool,
                                      center=(750 * i + 12000 - 78 - 594,
                                              1568.75 - 80),
                                      box_size=(9, 9.5))
                elems += i3.Rectangle(layer=self.layer_bool,
                                      center=(750 * i + 12000 - 49.5 - 594,
                                              1572 - 32 - 80),
                                      box_size=(9, 9))
                elems += i3.Rectangle(layer=self.layer_bool,
                                      center=(750 * i + 12000 - 49.5 - 57 -
                                              594, 1572 - 32 - 80),
                                      box_size=(9, 9))
                elems += i3.Rectangle(layer=self.layer_bool,
                                      center=(750 * i + 12000 - 78 - 594,
                                              1568.75 - 57.5 - 80),
                                      box_size=(9, 9.5))
                elems += i3.Rectangle(layer=self.layer_bool,
                                      center=(750 * i + 12000 - 58.75 - 594,
                                              1572.5 - 13.25 - 80),
                                      box_size=(smallsquare, smallsquare))
                elems += i3.Rectangle(layer=self.layer_bool,
                                      center=(750 * i + 12000 - 58.75 - 38.5 -
                                              594, 1572.5 - 13.25 - 80),
                                      box_size=(smallsquare, smallsquare))
                elems += i3.Rectangle(layer=self.layer_bool,
                                      center=(750 * i + 12000 - 58.75 - 594,
                                              1572.5 - 13.25 - 38.5 - 80),
                                      box_size=(smallsquare, smallsquare))
                elems += i3.Rectangle(layer=self.layer_bool,
                                      center=(750 * i + 12000 - 58.75 - 38.5 -
                                              594, 1572.5 - 13.25 - 38.5 - 80),
                                      box_size=(smallsquare, smallsquare))

            for i in range(-2, 1, 2):
                # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 78, 1568.75), box_size=(7, 7.5))
                # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 49.5, 1572-32), box_size=(7, 7))
                # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 49.5-57, 1572-32), box_size=(7, 7))
                # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 78, 1568.75-57.5), box_size=(7, 7.5))
                # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 58.75, 1572.5-13.25), box_size=(smallsquare, smallsquare))
                # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 58.75-38.5, 1572.5 - 13.25), box_size=(smallsquare, smallsquare))
                # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 58.75, 1572.5 - 13.25-38.5), box_size=(smallsquare, smallsquare))
                # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 58.75-38.5, 1572.5 - 13.25-38.5), box_size=(smallsquare, smallsquare))
                elems += i3.Rectangle(layer=self.layer_bool,
                                      center=(750 * i + 12000 - 78,
                                              1568.75 - 80),
                                      box_size=(9, 9.5))
                elems += i3.Rectangle(layer=self.layer_bool,
                                      center=(750 * i + 12000 - 49.5,
                                              1572 - 32 - 80),
                                      box_size=(9, 9))
                elems += i3.Rectangle(layer=self.layer_bool,
                                      center=(750 * i + 12000 - 49.5 - 57,
                                              1572 - 32 - 80),
                                      box_size=(9, 9))
                elems += i3.Rectangle(layer=self.layer_bool,
                                      center=(750 * i + 12000 - 78,
                                              1568.75 - 57.5 - 80),
                                      box_size=(9, 9.5))
                elems += i3.Rectangle(layer=self.layer_bool,
                                      center=(750 * i + 12000 - 58.75 - 2.5,
                                              1572.5 - 13.25 - 80 - 2.5),
                                      box_size=(bigsquare, bigsquare))
                elems += i3.Rectangle(layer=self.layer_bool,
                                      center=(750 * i + 12000 - 58.75 - 38.5 +
                                              2.5, 1572.5 - 13.25 - 80 - 2.5),
                                      box_size=(bigsquare, bigsquare))
                elems += i3.Rectangle(
                    layer=self.layer_bool,
                    center=(750 * i + 12000 - 58.75 - 2.5,
                            1572.5 - 13.25 - 38.5 - 80 + 2.5),
                    box_size=(bigsquare, bigsquare))
                elems += i3.Rectangle(
                    layer=self.layer_bool,
                    center=(750 * i + 12000 - 58.75 - 38.5 + 2.5,
                            1572.5 - 13.25 - 38.5 - 80 + 2.5),
                    box_size=(bigsquare, bigsquare))

                elems += i3.Rectangle(layer=self.layer_bool,
                                      center=(750 * i + 12000 - 78 - 594,
                                              1568.75),
                                      box_size=(9, 9.5))
                elems += i3.Rectangle(layer=self.layer_bool,
                                      center=(750 * i + 12000 - 49.5 - 594,
                                              1572 - 32),
                                      box_size=(9, 9))
                elems += i3.Rectangle(layer=self.layer_bool,
                                      center=(750 * i + 12000 - 49.5 - 57 -
                                              594, 1572 - 32),
                                      box_size=(9, 9))
                elems += i3.Rectangle(layer=self.layer_bool,
                                      center=(750 * i + 12000 - 78 - 594,
                                              1568.75 - 57.5),
                                      box_size=(9, 9.5))
                elems += i3.Rectangle(layer=self.layer_bool,
                                      center=(750 * i + 12000 - 58.75 - 594 -
                                              2.5, 1572.5 - 13.25 - 2.5),
                                      box_size=(bigsquare, bigsquare))
                elems += i3.Rectangle(layer=self.layer_bool,
                                      center=(750 * i + 12000 - 58.75 - 38.5 -
                                              594 + 2.5, 1572.5 - 13.25 - 2.5),
                                      box_size=(bigsquare, bigsquare))
                elems += i3.Rectangle(
                    layer=self.layer_bool,
                    center=(750 * i + 12000 - 58.75 - 594 - 2.5,
                            1572.5 - 13.25 - 38.5 + 2.5),
                    box_size=(bigsquare, bigsquare))
                elems += i3.Rectangle(
                    layer=self.layer_bool,
                    center=(750 * i + 12000 - 58.75 - 38.5 - 594 + 2.5,
                            1572.5 - 13.25 - 38.5 + 2.5),
                    box_size=(bigsquare, bigsquare))
                # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 78-594, 1568.75 - 80), box_size=(7, 7.5))
                # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 49.5-594, 1572 - 32 - 80), box_size=(7, 7))
                # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 49.5 - 57-594, 1572 - 32 - 80), box_size=(7, 7))
                # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 78-594, 1568.75 - 57.5 - 80), box_size=(7, 7.5))
                # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 58.75 -594, 1572.5 - 13.25 - 80 ),
                #                       box_size=(smallsquare, smallsquare))
                # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 58.75 - 38.5 -594, 1572.5 - 13.25 - 80 ),
                #                       box_size=(smallsquare, smallsquare))
                # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 58.75 -594, 1572.5 - 13.25 - 38.5 - 80 ),
                #                       box_size=(smallsquare, smallsquare))
                # elems += i3.Rectangle(layer=self.layer_bool,
                #                       center=(750*i+12000 - 58.75 - 38.5 -594, 1572.5 - 13.25 - 38.5 - 80 ),
                #                       box_size=(smallsquare, smallsquare))

            generated1 = self.layer - self.layer_bool
            mapping = {generated1: self.layer}
            elems = i3.get_elements_for_generated_layers(elems, mapping)
            return elems
Beispiel #24
0
        def _generate_elements(self, elems):

            # Center of the structure
            (x0, y0) = self.position
            width2 = 450.0
            elems += i3.Rectangle(layer=self.layer,
                                  center=(x0 + 6500 + 2000 + 2000,
                                          600 + (1800 - width2) / 4),
                                  box_size=(3000, (1800 - width2) / 2))

            elems += i3.Rectangle(layer=self.layer,
                                  center=(x0 + 6500 + 2000 + 2000, y0 + 600 +
                                          width2 + (1800 - width2) * 3 / 4),
                                  box_size=(3000, (1800 - width2) / 2))

            elems += i3.SRef(
                reference=Interface_mmi12(pocket=self.pocket, tilt=self.tilt))

            if self.pillar:
                self.label = "NO"
                for i in range(4):
                    elems += i3.Rectangle(
                        layer=self.layer,
                        center=(10000 - 725 - i * 750 + 2000 + 550,
                                1275 + self.width / 2),
                        box_size=(self.length, self.width))
                    elems += i3.Rectangle(
                        layer=self.layer,
                        center=(10000 - 725 - i * 750 + 2000 + 550,
                                1725 - self.width / 2),  # change
                        box_size=(self.length, self.width))

                    if self.double:
                        elems += i3.Rectangle(
                            layer=self.layer,
                            center=(10000 - 725 - i * 750 + 2000 + 550 - 400,
                                    1275 + self.width / 2),
                            box_size=(self.length, self.width))
                        elems += i3.Rectangle(
                            layer=self.layer,
                            center=(10000 - 725 - i * 750 + 2000 + 550 - 400,
                                    1725 - self.width / 2),
                            # change
                            box_size=(self.length, self.width))

            if self.width > 120:
                self.label += "W"
            if self.pocket:
                self.label += "_WP"
            if self.tilt:
                self.label += "WT"
            elems += i3.PolygonText(
                layer=self.layer_bool,
                text=self.label,
                coordinate=(10800, 2600),
                # alignment=(i3.TEXT_ALIGN_LEFT, i3.TEXT_ALIGN_LEFT),
                font=2,
                height=400.0)

            generated1 = self.layer - self.layer_bool
            mapping = {generated1: self.layer}
            elems = i3.get_elements_for_generated_layers(elems, mapping)

            if self.pillar:
                for i in range(4):
                    elems += i3.Rectangle(
                        layer=self.layer2,
                        center=(10000 - 725 - i * 750 + 2000 + 550,
                                1275 + self.width / 2),
                        box_size=(self.length + 10, self.width + 10))
                    elems += i3.Rectangle(
                        layer=self.layer2,
                        center=(10000 - 725 - i * 750 + 2000 + 550,
                                1725 - self.width / 2),  # change
                        box_size=(self.length + 10, self.width + 10))

                    if self.double:
                        elems += i3.Rectangle(
                            layer=self.layer2,
                            center=(10000 - 725 - i * 750 + 2000 + 550 - 400,
                                    1275 + self.width / 2),
                            box_size=(self.length + 10, self.width + 10))
                        elems += i3.Rectangle(
                            layer=self.layer2,
                            center=(10000 - 725 - i * 750 + 2000 + 550 - 400,
                                    1725 - self.width / 2),
                            # change
                            box_size=(self.length + 10, self.width + 10))

            return elems
		def _generate_elements(self, elems):
			elems += i3.Rectangle(layer=self.layer, box_size=(self.heightchip,self.widthchip))
						
			return elems
Beispiel #26
0
        def _generate_elements(self, elems):

            for i in range(0, 5, 1):
                elems += i3.PolygonText(
                    layer=i3.TECH.PPLAYER.WG.TEXT,
                    text="WITDH={}_length={}*2_R=500".format(
                        str(self.width), 17000 - 4000 * i),
                    coordinate=(900, 55 + 4000 * i + 100 * self.offset),
                    font=2,
                    height=20.0,
                )
                for j in range(0, 13, 1):
                    elems += i3.PolygonText(
                        layer=i3.TECH.PPLAYER.WG.TEXT,
                        text="{}_{}".format(str(i), str(j)),
                        coordinate=(550, 63 + 4000 * i + 100 * j),
                        font=2,
                        height=30.0,
                    )
                    elems += i3.PolygonText(
                        layer=i3.TECH.PPLAYER.WG.TEXT,
                        text="{}_{}".format(str(i), str(j)),
                        # coordinate=(),
                        font=2,
                        height=30.0,
                        transformation=i3.Rotation(rotation=-90) +
                        i3.Translation(
                            (20000 - 4000 * i - 100 * j + 63, 20000 - 550)),
                    )
            for i in range(0, 6, 1):
                elems += i3.Rectangle(layer=i3.TECH.PPLAYER.WG.TEXT,
                                      center=(100, 4000 * i - 1000 + 700),
                                      box_size=(100, 100))
                elems += i3.Rectangle(layer=i3.TECH.PPLAYER.WG.TEXT,
                                      center=(300, 4000 * i - 1000 + 700),
                                      box_size=(100, 100))
                elems += i3.Rectangle(layer=i3.TECH.PPLAYER.WG.TEXT,
                                      center=(4000 * i + 300, 19700),
                                      box_size=(100, 100))
                elems += i3.Rectangle(layer=i3.TECH.PPLAYER.WG.TEXT,
                                      center=(4000 * i + 300, 19900),
                                      box_size=(100, 100))
            elems += i3.Rectangle(layer=i3.TECH.PPLAYER.WG.TEXT,
                                  center=(100, 19900),
                                  box_size=(100, 100))
            elems += i3.Rectangle(layer=i3.TECH.PPLAYER.WG.TEXT,
                                  center=(-100, 19900),
                                  box_size=(100, 100))
            elems += i3.Rectangle(layer=i3.TECH.PPLAYER.WG.TEXT,
                                  center=(500, 19900),
                                  box_size=(100, 100))
            elems += i3.Rectangle(layer=i3.TECH.PPLAYER.WG.TEXT,
                                  center=(100, 19500),
                                  box_size=(100, 100))
            elems += i3.Rectangle(layer=i3.TECH.PPLAYER.WG.TEXT,
                                  center=(100, 20100),
                                  box_size=(100, 100))
            elems += i3.Rectangle(layer=i3.TECH.PPLAYER.WG.TEXT,
                                  center=(-100, -500),
                                  box_size=(100, 100))
            elems += i3.Rectangle(layer=i3.TECH.PPLAYER.WG.TEXT,
                                  center=(100, -500),
                                  box_size=(100, 100))
            elems += i3.Rectangle(layer=i3.TECH.PPLAYER.WG.TEXT,
                                  center=(300, -500),
                                  box_size=(100, 100))
            elems += i3.Rectangle(layer=i3.TECH.PPLAYER.WG.TEXT,
                                  center=(500, -500),
                                  box_size=(100, 100))
            elems += i3.Rectangle(layer=i3.TECH.PPLAYER.WG.TEXT,
                                  center=(20500, 19500),
                                  box_size=(100, 100))
            elems += i3.Rectangle(layer=i3.TECH.PPLAYER.WG.TEXT,
                                  center=(20500, 19700),
                                  box_size=(100, 100))
            elems += i3.Rectangle(layer=i3.TECH.PPLAYER.WG.TEXT,
                                  center=(20500, 19900),
                                  box_size=(100, 100))
            elems += i3.Rectangle(layer=i3.TECH.PPLAYER.WG.TEXT,
                                  center=(20500, 20100),
                                  box_size=(100, 100))

            return elems
Beispiel #27
0
 def _generate_elements(self, elems):
     elems += i3.Rectangle(layer=self.metal1_layer, box_size=self.metal1_size)
     elems += i3.Rectangle(layer=self.metal2_layer, box_size=self.metal2_size)
     return elems