def _generate_instances(self, insts):
            x_inc = self.mysingleObstacle.gap_btw_barriers * 1 + self.mysingleObstacle.obstacle_trap_radius * 2
            y_inc = self.mysingleObstacle.obstacle_trap_radius * 2 + self.mysingleObstacle.gap_btw_barriers

            cycles_x = int(self.wholeTrapX /
                           (self.mysingleObstacle.gap_btw_barriers +
                            self.mysingleObstacle.obstacle_trap_radius * 2))
            cycles_y = int(self.wholeTrapY / (y_inc))

            insts += i3.ARef(
                reference=self.mysingleObstacle,
                origin=(0, 0.0 * self.cell.wholeTrapY),
                period=(x_inc, 0),
                n_o_periods=(cycles_x, 1),
                #transformation=i3.Rotation((0.0, 0.0), 40.0)
            )

            xf = self.mysingleObstacle.gap_btw_barriers + self.mysingleObstacle.obstacle_trap_radius * 0.5
            insts += i3.ARef(
                reference=self.mysingleObstacle,
                origin=(xf, y_inc),
                period=(x_inc, 0),
                n_o_periods=(cycles_x, 1),
                #transformation=i3.Rotation((0.0, 0.0), 40.0)
            )
            insts += i3.SRef(reference=self.rightFilling,
                             position=(cycles_x * x_inc, 0))
            insts += i3.SRef(reference=self.leftFilling, position=(0, y_inc))
            #transformation=i3.Rotation((0.0, 0.0), 40.0)

            print 'insts', insts

            return insts
Пример #2
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
Пример #3
0
        def _generate_elements(self, elems):
            from ..metal.contact import CONTACT_STD
            elems += i3.Line(layer=i3.TECH.PPLAYER.GE,
                             begin_coord=(0.0, 0.0),
                             end_coord=(self.length, 0.0),
                             line_width=self.width)
            elems += i3.Line(layer=i3.TECH.PPLAYER.N,
                             begin_coord=(0.0, self.contact_offset),
                             end_coord=(self.length, self.contact_offset),
                             line_width=1.0)
            elems += i3.Line(layer=i3.TECH.PPLAYER.P,
                             begin_coord=(0.0, -self.contact_offset),
                             end_coord=(self.length, -self.contact_offset),
                             line_width=1.0)
            elems += i3.Wedge(layer=i3.TECH.PPLAYER.SI,
                              begin_coord=(-5.0, 0.0),
                              end_coord=(0.0, 0.0),
                              begin_width=0.45,
                              end_width=self.taper_width)
            elems += i3.ARef(
                reference=CONTACT_STD(),
                origin=(0.5 * self.contact_pitch, self.contact_offset),
                period=(self.contact_pitch, 0.0),
                n_o_periods=(int(np.floor(self.length / self.contact_pitch)),
                             1))
            elems += i3.ARef(
                reference=CONTACT_STD(),
                origin=(0.5 * self.contact_pitch, -self.contact_offset),
                period=(self.contact_pitch, 0.0),
                n_o_periods=(int(np.floor(self.length / self.contact_pitch)),
                             1))
            elems += i3.Boundary(layer=i3.TECH.PPLAYER.M1,
                                 shape=[
                                     (0.0, self.contact_offset - 0.5),
                                     (self.length, self.contact_offset - 0.5),
                                     (self.length, self.contact_offset + 2.0),
                                     (0.0, self.contact_offset + 2.0)
                                 ])
            elems += i3.Boundary(layer=i3.TECH.PPLAYER.M1,
                                 shape=[
                                     (0.0, -self.contact_offset + 0.5),
                                     (self.length, -self.contact_offset + 0.5),
                                     (self.length, -self.contact_offset - 2.0),
                                     (0.0, -self.contact_offset - 2.0)
                                 ])

            return elems
Пример #4
0
 def _generate_instances(self, insts):
     from numpy import floor
     via_span_x = min(self.metal1_size[0], self.metal2_size[0])
     via_span_y = min(self.metal1_size[1], self.metal2_size[1])
     periods_x = int(floor(via_span_x / self.via_pitch[0]))
     periods_y = int(floor(via_span_y / self.via_pitch[1]))
     insts += i3.ARef(reference=self.via,
                      origin=(-0.5 * via_span_x + 0.5 * self.via_pitch[0], -0.5 * via_span_y + 0.5 * self.via_pitch[1]),
                      period=self.via_pitch,
                      n_o_periods=(periods_x, periods_y))
     return insts
Пример #5
0
        def _generate_instances(self, insts):
            x_inc = (self.mysingleObstacle.gap_btw_barriers +
                     self.mysingleObstacle.obstacle_trap_length) * 2
            y_inc = self.mysingleObstacle.channel_trap_width * 1.5

            cycles_x = int(self.wholeTrapX /
                           ((self.mysingleObstacle.gap_btw_barriers +
                             self.mysingleObstacle.obstacle_trap_length) * 2))
            cycles_y = int(self.wholeTrapY / (y_inc))

            insts += i3.ARef(reference=self.mysingleObstacle,
                             origin=(0, 0.0 * self.cell.wholeTrapY),
                             period=(x_inc, y_inc),
                             n_o_periods=(cycles_x, cycles_y))

            print 'insts', insts

            return insts
Пример #6
0
        def _generate_elements(self, elems):
            # Center of the structure
            (x0, y0) = self.position
            # RELEASE
            release = Release(
                length=self.length,
                width=self.width,
            )
            # release = i3.Rectangle(layer=i3.Layer(number=1, name="release"), center=(0, 0),
            #                         box_size=(self.length, self.width))
            # elems += i3.SRef(reference=release, position=self.position)  Error

            dx = 918.125  # 800nm coupon
            for i in range(0, 3, 1):
                elems += i3.ARef(n_o_periods=(3, 7),
                                 period=(159.5, 210),
                                 reference=release,
                                 origin=(640.5 + i * dx, 468.4))
                elems += i3.ARef(n_o_periods=(3, 7),
                                 period=(159.5, 210),
                                 reference=release,
                                 origin=(640.5 + i * dx, 538.4))
                elems += i3.ARefY(n_o_periods_1d=7,
                                  period_1d=210,
                                  reference=release,
                                  origin=(560.75 + i * dx, 511.6))

                dy = 1725
                elems += i3.ARef(n_o_periods=(3, 15),
                                 period=(159.5, 210),
                                 reference=release,
                                 origin=(640.5 + i * dx, 468.4 + dy))
                elems += i3.ARef(n_o_periods=(3, 15),
                                 period=(159.5, 210),
                                 reference=release,
                                 origin=(640.5 + i * dx, 538.4 + dy))
                elems += i3.ARefY(n_o_periods_1d=15,
                                  period_1d=210,
                                  reference=release,
                                  origin=(560.75 + i * dx, 511.6 + dy))

                dy = 5060
                elems += i3.ARef(n_o_periods=(3, 15),
                                 period=(159.5, 210),
                                 reference=release,
                                 origin=(640.5 + i * dx, 468.4 + dy))
                elems += i3.ARef(n_o_periods=(3, 15),
                                 period=(159.5, 210),
                                 reference=release,
                                 origin=(640.5 + i * dx, 538.4 + dy))
                elems += i3.ARefY(n_o_periods_1d=15,
                                  period_1d=210,
                                  reference=release,
                                  origin=(560.75 + i * dx, 511.6 + dy))

                dy = 8395
                elems += i3.ARef(n_o_periods=(3, 8),
                                 period=(159.5, 210),
                                 reference=release,
                                 origin=(640.5 + i * dx, 468.4 + dy))
                elems += i3.ARef(n_o_periods=(3, 7),
                                 period=(159.5, 210),
                                 reference=release,
                                 origin=(640.5 + i * dx, 538.4 + dy))
                elems += i3.ARefY(n_o_periods_1d=7,
                                  period_1d=210,
                                  reference=release,
                                  origin=(560.75 + i * dx, 511.6 + dy))

            dx += 200  # 1000nm coupon
            for i in range(0, 3, 1):
                elems += i3.ARef(n_o_periods=(4, 7),
                                 period=(167.6, 210),
                                 reference=release,
                                 origin=(3402.975 + i * dx, 468.4))
                elems += i3.ARef(n_o_periods=(4, 7),
                                 period=(167.6, 210),
                                 reference=release,
                                 origin=(3402.975 + i * dx, 538.4))
                elems += i3.ARefY(n_o_periods_1d=7,
                                  period_1d=210,
                                  reference=release,
                                  origin=(3319.175 + i * dx, 511.6))

                dy = 1725
                elems += i3.ARef(n_o_periods=(4, 15),
                                 period=(167.6, 210),
                                 reference=release,
                                 origin=(3402.975 + i * dx, 468.4 + dy))
                elems += i3.ARef(n_o_periods=(4, 15),
                                 period=(167.6, 210),
                                 reference=release,
                                 origin=(3402.975 + i * dx, 538.4 + dy))
                elems += i3.ARefY(n_o_periods_1d=15,
                                  period_1d=210,
                                  reference=release,
                                  origin=(3319.175 + i * dx, 511.6 + dy))

                dy = 5060
                elems += i3.ARef(n_o_periods=(4, 15),
                                 period=(167.6, 210),
                                 reference=release,
                                 origin=(3402.975 + i * dx, 468.4 + dy))
                elems += i3.ARef(n_o_periods=(4, 15),
                                 period=(167.6, 210),
                                 reference=release,
                                 origin=(3402.975 + i * dx, 538.4 + dy))
                elems += i3.ARefY(n_o_periods_1d=15,
                                  period_1d=210,
                                  reference=release,
                                  origin=(3319.175 + i * dx, 511.6 + dy))

                dy = 8395
                elems += i3.ARef(n_o_periods=(4, 8),
                                 period=(167.6, 210),
                                 reference=release,
                                 origin=(3402.975 + i * dx, 468.4 + dy))
                elems += i3.ARef(n_o_periods=(4, 7),
                                 period=(167.6, 210),
                                 reference=release,
                                 origin=(3402.975 + i * dx, 538.4 + dy))
                elems += i3.ARefY(n_o_periods_1d=7,
                                  period_1d=210,
                                  reference=release,
                                  origin=(3319.175 + i * dx, 511.6 + dy))

            dx += 200  # 1200nm coupon
            for i in range(0, 3, 1):
                elems += i3.ARef(n_o_periods=(5, 7),
                                 period=(173, 210),
                                 reference=release,
                                 origin=(6762.75 + i * dx, 468.4))
                elems += i3.ARef(n_o_periods=(5, 7),
                                 period=(173, 210),
                                 reference=release,
                                 origin=(6762.75 + i * dx, 538.4))
                elems += i3.ARefY(n_o_periods_1d=7,
                                  period_1d=210,
                                  reference=release,
                                  origin=(6676.25 + i * dx, 511.6))

                dy = 1725
                elems += i3.ARef(n_o_periods=(5, 15),
                                 period=(173, 210),
                                 reference=release,
                                 origin=(6762.75 + i * dx, 468.4 + dy))
                elems += i3.ARef(n_o_periods=(5, 15),
                                 period=(173, 210),
                                 reference=release,
                                 origin=(6762.75 + i * dx, 538.4 + dy))
                elems += i3.ARefY(n_o_periods_1d=15,
                                  period_1d=210,
                                  reference=release,
                                  origin=(6676.25 + i * dx, 511.6 + dy))

                dy = 5060
                elems += i3.ARef(n_o_periods=(5, 15),
                                 period=(173, 210),
                                 reference=release,
                                 origin=(6762.75 + i * dx, 468.4 + dy))
                elems += i3.ARef(n_o_periods=(5, 15),
                                 period=(173, 210),
                                 reference=release,
                                 origin=(6762.75 + i * dx, 538.4 + dy))
                elems += i3.ARefY(n_o_periods_1d=15,
                                  period_1d=210,
                                  reference=release,
                                  origin=(6676.25 + i * dx, 511.6 + dy))

                dy = 8395
                elems += i3.ARef(n_o_periods=(5, 8),
                                 period=(173, 210),
                                 reference=release,
                                 origin=(6762.75 + i * dx, 468.4 + dy))
                elems += i3.ARef(n_o_periods=(5, 7),
                                 period=(173, 210),
                                 reference=release,
                                 origin=(6762.75 + i * dx, 538.4 + dy))
                elems += i3.ARefY(n_o_periods_1d=7,
                                  period_1d=210,
                                  reference=release,
                                  origin=(6676.25 + i * dx, 511.6 + dy))

            return elems
Пример #7
0
        def _generate_elements(self, elems):
            # Center of the structure
            (x0, y0) = self.position
            # RELEASE
            release = Release(
                length=self.length,
                width=self.width,
            )
            # elems += i3.SRef(reference=release, position=self.position)
            elems += i3.ARef(n_o_periods=(3, self.nb),
                             period=(self.length + 250, 210),
                             reference=release,
                             origin=(x0, y0))
            elems += i3.ARef(n_o_periods=(3, self.nb),
                             period=(self.length + 250, 280),
                             reference=release,
                             origin=(x0, y0 + 210 * self.nb -
                                     (210 - self.width) + self.space))
            elems += i3.ARef(
                n_o_periods=(3, self.nb),
                period=(self.length + 250, 350),
                reference=release,
                origin=(x0,
                        y0 + 210 * self.nb - (210 - self.width) + self.space +
                        280 * self.nb - (280 - self.width) + self.space))
            elems += i3.ARef(
                n_o_periods=(3, self.nb),
                period=(self.length + 250, 420),
                reference=release,
                origin=(x0,
                        y0 + 210 * self.nb - (210 - self.width) + self.space +
                        280 * self.nb - (280 - self.width) + self.space +
                        350 * self.nb - (350 - self.width) + self.space))

            elems += i3.ARef(n_o_periods=(2, self.nb),
                             period=(self.length + 500, 210),
                             reference=release,
                             origin=(x0 + 9250 - self.shrink * 3, y0))
            elems += i3.ARef(
                n_o_periods=(2, self.nb),
                period=(self.length + 500, 280),
                reference=release,
                origin=(x0 + 9250 - self.shrink * 3,
                        y0 + 210 * self.nb - (210 - self.width) + self.space))
            elems += i3.ARef(
                n_o_periods=(2, self.nb),
                period=(self.length + 500, 350),
                reference=release,
                origin=(x0 + 9250 - self.shrink * 3,
                        y0 + 210 * self.nb - (210 - self.width) + self.space +
                        280 * self.nb - (280 - self.width) + self.space))
            elems += i3.ARef(
                n_o_periods=(2, self.nb),
                period=(self.length + 500, 420),
                reference=release,
                origin=(x0 + 9250 - self.shrink * 3,
                        y0 + 210 * self.nb - (210 - self.width) + self.space +
                        280 * self.nb - (280 - self.width) + self.space +
                        350 * self.nb - (350 - self.width) + self.space))

            elems += i3.ARef(n_o_periods=(2, self.nb),
                             period=(self.length + 750, 210),
                             reference=release,
                             origin=(x0 + 8000 * 2 - self.shrink * 5, y0))
            elems += i3.ARef(
                n_o_periods=(2, self.nb),
                period=(self.length + 750, 280),
                reference=release,
                origin=(x0 + 8000 * 2 - self.shrink * 5,
                        y0 + 210 * self.nb - (210 - self.width) + self.space))
            elems += i3.ARef(
                n_o_periods=(2, self.nb),
                period=(self.length + 750, 350),
                reference=release,
                origin=(x0 + 8000 * 2 - self.shrink * 5,
                        y0 + 210 * self.nb - (210 - self.width) + self.space +
                        280 * self.nb - (280 - self.width) + self.space))
            elems += i3.ARef(
                n_o_periods=(2, self.nb),
                period=(self.length + 750, 420),
                reference=release,
                origin=(x0 + 8000 * 2 - self.shrink * 5,
                        y0 + 210 * self.nb - (210 - self.width) + self.space +
                        280 * self.nb - (280 - self.width) + self.space +
                        350 * self.nb - (350 - self.width) + self.space))

            elems += i3.ARef(n_o_periods=(2, self.nb),
                             period=(self.length + 1000, 210),
                             reference=release,
                             origin=(x0 + 23250 - self.shrink * 7, y0))
            elems += i3.ARef(
                n_o_periods=(2, self.nb),
                period=(self.length + 1000, 280),
                reference=release,
                origin=(x0 + 23250 - self.shrink * 7,
                        y0 + 210 * self.nb - (210 - self.width) + self.space))
            elems += i3.ARef(
                n_o_periods=(2, self.nb),
                period=(self.length + 1000, 350),
                reference=release,
                origin=(x0 + 23250 - self.shrink * 7,
                        y0 + 210 * self.nb - (210 - self.width) + self.space +
                        280 * self.nb - (280 - self.width) + self.space))
            elems += i3.ARef(
                n_o_periods=(2, self.nb),
                period=(self.length + 1000, 420),
                reference=release,
                origin=(x0 + 23250 - self.shrink * 7,
                        y0 + 210 * self.nb - (210 - self.width) + self.space +
                        280 * self.nb - (280 - self.width) + self.space +
                        350 * self.nb - (350 - self.width) + self.space))

            elems += i3.ARef(n_o_periods=(2, self.nb),
                             period=(self.length + 1500, 210),
                             reference=release,
                             origin=(x0 + 29750 + 1500 - self.shrink * 9, y0))
            elems += i3.ARef(
                n_o_periods=(2, self.nb),
                period=(self.length + 1500, 280),
                reference=release,
                origin=(x0 + 29750 + 1500 - self.shrink * 9,
                        y0 + 210 * self.nb - (210 - self.width) + self.space))
            elems += i3.ARef(
                n_o_periods=(2, self.nb),
                period=(self.length + 1500, 350),
                reference=release,
                origin=(x0 + 29750 + 1500 - self.shrink * 9,
                        y0 + 210 * self.nb - (210 - self.width) + self.space +
                        280 * self.nb - (280 - self.width) + self.space))
            elems += i3.ARef(
                n_o_periods=(2, self.nb),
                period=(self.length + 1500, 420),
                reference=release,
                origin=(x0 + 29750 + 1500 - self.shrink * 9,
                        y0 + 210 * self.nb - (210 - self.width) + self.space +
                        280 * self.nb - (280 - self.width) + self.space +
                        350 * self.nb - (350 - self.width) + self.space))

            elems += i3.ARef(n_o_periods=(2, self.nb),
                             period=(self.length + 2000, 210),
                             reference=release,
                             origin=(x0 + 38250 + 2000 - self.shrink * 11, y0))
            elems += i3.ARef(
                n_o_periods=(2, self.nb),
                period=(self.length + 2000, 280),
                reference=release,
                origin=(x0 + 38250 + 2000 - self.shrink * 11,
                        y0 + 210 * self.nb - (210 - self.width) + self.space))
            elems += i3.ARef(
                n_o_periods=(2, self.nb),
                period=(self.length + 2000, 350),
                reference=release,
                origin=(x0 + 38250 + 2000 - self.shrink * 11,
                        y0 + 210 * self.nb - (210 - self.width) + self.space +
                        280 * self.nb - (280 - self.width) + self.space))
            elems += i3.ARef(
                n_o_periods=(2, self.nb),
                period=(self.length + 2000, 420),
                reference=release,
                origin=(x0 + 38250 + 2000 - self.shrink * 11,
                        y0 + 210 * self.nb - (210 - self.width) + self.space +
                        280 * self.nb - (280 - self.width) + self.space +
                        350 * self.nb - (350 - self.width) + self.space))

            elems += i3.ARef(n_o_periods=(2, self.nb),
                             period=(self.length + 3000, 210),
                             reference=release,
                             origin=(x0 + 47750 + 3000 - self.shrink * 13, y0))
            elems += i3.ARef(
                n_o_periods=(2, self.nb),
                period=(self.length + 3000, 280),
                reference=release,
                origin=(x0 + 47750 + 3000 - self.shrink * 13,
                        y0 + 210 * self.nb - (210 - self.width) + self.space))
            elems += i3.ARef(
                n_o_periods=(2, self.nb),
                period=(self.length + 3000, 350),
                reference=release,
                origin=(x0 + 47750 + 3000 - self.shrink * 13,
                        y0 + 210 * self.nb - (210 - self.width) + self.space +
                        280 * self.nb - (280 - self.width) + self.space))
            elems += i3.ARef(
                n_o_periods=(2, self.nb),
                period=(self.length + 3000, 420),
                reference=release,
                origin=(x0 + 47750 + 3000 - self.shrink * 13,
                        y0 + 210 * self.nb - (210 - self.width) + self.space +
                        280 * self.nb - (280 - self.width) + self.space +
                        350 * self.nb - (350 - self.width) + self.space))

            # elems += i3.Circle(layer=i3.Layer(number = 5, name = "tether"),radius=50000)
            return elems