Esempio n. 1
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
Esempio n. 2
0
        def _generate_elements(self, elems):
            elems += i3.SRef(reference=PlaceMarkers())

            elems += i3.SRef(reference=my_exe2(name="final"))

            generated1 = i3.TECH.PPLAYER.HFW - i3.TECH.PPLAYER.V12.PILLAR
            mapping = {generated1: i3.TECH.PPLAYER.M2.LINE}
            elems += i3.get_elements_for_generated_layers(elems, mapping)

            generated2 = i3.TECH.PPLAYER.WG.CLADDING - i3.TECH.PPLAYER.WG.CORE
            mapping = {generated2: i3.TECH.PPLAYER.WG.TEXT}
            elems += i3.get_elements_for_generated_layers(elems, mapping)

            # elems += i3.SRef(reference=ImportRik())
            return elems
Esempio n. 3
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
Esempio n. 4
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
Esempio n. 5
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
Esempio n. 6
0
        def _generate_elements(self, elems):

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

            if self.horizontal == False:

                # ADD RELEASE
                elems += i3.SRef(reference=AlignmentMarker(
                    layer=i3.TECH.PPLAYER.WG.TEXT, layer_text="Release"),
                                 transformation=i3.Translation(
                                     (x0 + 0.0 * self.h_spacing, y0)))
                elems += i3.SRef(reference=AlignmentMarker(
                    layer=i3.TECH.PPLAYER.HFW, complement=True),
                                 transformation=i3.Translation(
                                     (x0 + 0.0 * self.h_spacing, y0)))

                # # ADD TETHER
                # elems += i3.SRef(reference=AlignmentMarker(layer=lay_island, layer_text="Tether"),
                #                  transformation=i3.Translation((x0 + 1.0 * self.h_spacing, y0)))
                # elems += i3.SRef(reference=AlignmentMarker(layer=lay_release, protection=True),
                #                  transformation=i3.Translation((x0 + 1.0 * self.h_spacing, y0)))
                # elems += i3.SRef(reference=AlignmentMarker(layer=lay_tether, complement=True),
                #                  transformation=i3.Translation((x0 + 1.0 * self.h_spacing, y0)))
                #
                # # ADD Dongbomesa
                # elems += i3.SRef(reference=AlignmentMarker(layer=lay_island, layer_text="Dongbomesa"),
                #                  transformation=i3.Translation((x0 + 2.0 * self.h_spacing, y0)))
                # elems += i3.SRef(reference=AlignmentMarker(layer=lay_release, protection=True),
                #                  transformation=i3.Translation((x0 + 2.0 * self.h_spacing, y0)))
                # elems += i3.SRef(reference=AlignmentMarker(layer=lay_tether, protection=True),
                #                  transformation=i3.Translation((x0 + 2.0 * self.h_spacing, y0)))
                # elems += i3.SRef(reference=AlignmentMarker(layer=lay_mesa, complement=True),
                #                  transformation=i3.Translation((x0 + 2.0 * self.h_spacing, y0)))

            else:

                # ADD RECESS
                elems += i3.SRef(reference=AlignmentMarker(
                    layer=i3.TECH.PPLAYER.WG.TEXT, layer_text="RECESS"),
                                 transformation=i3.Translation(
                                     (x0 + 0.0 * self.h_spacing, y0)))
                elems += i3.SRef(reference=AlignmentMarker(
                    layer=i3.TECH.PPLAYER.HFW, complement=True),
                                 transformation=i3.Translation(
                                     (x0 + 0.0 * self.h_spacing, y0)))

                # ADD AL
                elems += i3.SRef(reference=AlignmentMarker(
                    layer=i3.TECH.PPLAYER.WG.TEXT, layer_text="AL"),
                                 transformation=i3.Translation(
                                     (x0, y0 - 1.0 * self.v_spacing)))
                elems += i3.SRef(reference=AlignmentMarker(
                    layer=i3.TECH.PPLAYER.HFW, protection=True),
                                 transformation=i3.Translation(
                                     (x0, y0 - 1.0 * self.v_spacing)))
                elems += i3.SRef(reference=AlignmentMarker(
                    layer=i3.TECH.PPLAYER.CONTACT.PILLAR, complement=True),
                                 transformation=i3.Translation(
                                     (x0, y0 - 1.0 * self.v_spacing)))

                # ADD SiN
                elems += i3.SRef(reference=AlignmentMarker(
                    layer=i3.TECH.PPLAYER.WG.TEXT, layer_text="SiN"),
                                 transformation=i3.Translation(
                                     (x0, y0 - 2.0 * self.v_spacing)))
                elems += i3.SRef(reference=AlignmentMarker(
                    layer=i3.TECH.PPLAYER.HFW, protection=True),
                                 transformation=i3.Translation(
                                     (x0, y0 - 2.0 * self.v_spacing)))
                elems += i3.SRef(reference=AlignmentMarker(
                    layer=i3.TECH.PPLAYER.SIL.LINE, complement=True),
                                 transformation=i3.Translation(
                                     (x0, y0 - 2.0 * self.v_spacing)))

                # ADD BackUp
                elems += i3.SRef(reference=AlignmentMarker(
                    layer=i3.TECH.PPLAYER.WG.TEXT, layer_text="BackUp"),
                                 transformation=i3.Translation(
                                     (x0, y0 - 3.0 * self.v_spacing)))
                elems += i3.SRef(reference=AlignmentMarker(
                    layer=i3.TECH.PPLAYER.HFW, protection=True),
                                 transformation=i3.Translation(
                                     (x0, y0 - 3.0 * self.v_spacing)))
                # elems += i3.SRef(reference=AlignmentMarker(layer=lay_tether, complement=True),
                #                  transformation=i3.Translation((x0, y0 - 3.0 * self.v_spacing)))

                # RECESS adjustment according to the mask
                elems += i3.SRef(reference=AlignmentMarker(
                    layer=i3.TECH.PPLAYER.NONE.DOC, protection=True),
                                 transformation=i3.Translation(
                                     (x0, y0 - 0.0 * self.v_spacing)))
                generated1 = i3.TECH.PPLAYER.NONE.DOC - i3.TECH.PPLAYER.HFW
                mapping = {generated1: i3.TECH.PPLAYER.V12.PILLAR}
                elems += i3.get_elements_for_generated_layers(elems, mapping)

            return elems
Esempio n. 7
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
Esempio n. 8
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
Esempio n. 9
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
Esempio n. 10
0
circle_path = i3.CirclePath(layer=layer2,
                            center=(9.0, 9.0),
                            radius=6.0,
                            line_width=1.0)

layout = i3.LayoutCell(name="original").Layout(
    elements=[rect, circle, circle_path])
layout.visualize()

# specify generated layers and the layer to use in the output
generated1 = (layer1 ^ layer2) & layer1
generated2 = ~layer3
mapping = {generated1: i3.Layer(10), generated2: i3.Layer(20)}

# generated layout
output_elems = i3.get_elements_for_generated_layers(layout.layout, mapping)
final_layout = i3.LayoutCell(name="generated").Layout(elements=output_elems)
final_layout.visualize()

# create and visualize a hierarchical layout
simple_layout = i3.LayoutCell(name="circle_and_path").Layout(
    elements=[circle, circle_path])
top_layout = i3.LayoutCell(name="top_original").Layout(elements=[
    i3.SRef(simple_layout, (0.0, 0.0)),
    i3.SRef(simple_layout, (0.0, 15.0)),
    # cover the full layout with layer3
    i3.Boundary(layer=layer3,
                shape=[(-10.0, -10.0), (-10.0, 35.0), (20.0,
                                                       35.0), (20.0, -10.0)])
])