Esempio n. 1
0
    def create_elements(self, elems):
        p1, p2, p3 = self.get_io_ports()

        elems += self.ytron

        # R = spira.RouteManhattan(
        elems += spira.RouteManhattan(ports=[self.ytron.ports['Pl_M1'], p1],
                                      width=self.ytron.ref.shape.arm_widths[0],
                                      layer=RDD.PLAYER.M1.METAL,
                                      corners=self.corners)

        # print(R[0].layer)
        # R[0].set(layer=RDD.PLAYER.M2.METAL)
        # print(R[0].layer)

        # elems += R

        elems += spira.RouteStraight(p1=p2,
                                     p2=self.ytron.ports['Pr_M1'],
                                     layer=RDD.PLAYER.M1.METAL,
                                     path_type='sine',
                                     width_type='sine')

        elems += spira.RouteStraight(p1=p3,
                                     p2=self.ytron.ports['Psrc_M1'],
                                     layer=RDD.PLAYER.M1.METAL,
                                     path_type='sine',
                                     width_type='sine')

        return elems
Esempio n. 2
0
    def create_elements(self, elems):
        elems += [self.via_left, self.via_right]

        d1 = spira.Port(name='Al:D1',
                        midpoint=(-1000, 0),
                        orientation=180,
                        width=20)
        d11 = spira.Port(name='M0:D3',
                         midpoint=(-1000, 0),
                         orientation=0,
                         width=20)
        d2 = spira.Port(name='Al:D2',
                        midpoint=(1000, 0),
                        orientation=0,
                        width=20)
        d12 = spira.Port(name='M0:D4',
                         midpoint=(1000, 0),
                         orientation=180,
                         width=20)
        d3 = spira.Port(name='M0:D5',
                        midpoint=(0, 0),
                        orientation=90,
                        width=20)

        # FIXME: Throughs out with a wierd angle.
        # elems += spira.RouteManhattan(
        #     ports=[self.p1, d1],
        #     width=5, layer=RDD.PLAYER.Al.METAL)

        elems += spira.RouteStraight(p1=self.p1,
                                     p2=d1,
                                     layer=RDD.PLAYER.Al.METAL)
        elems += spira.RouteStraight(p1=d11, p2=d12, layer=RDD.PLAYER.M0.METAL)
        elems += spira.RouteStraight(p1=self.p2,
                                     p2=d2,
                                     layer=RDD.PLAYER.Al.METAL)
        elems += spira.RouteStraight(p1=self.p1_out,
                                     p2=d3,
                                     layer=RDD.PLAYER.M0.METAL)

        return elems
Esempio n. 3
0
 def create_elements(self, elems):
     elems += spira.RouteStraight(p1=self.p1,
                                  p2=self.p2,
                                  layer=spira.RDD.PLAYER.R1.METAL)
     return elems
Esempio n. 4
0
 def create_elements(self, elems):
     p1, p2 = self.get_ports()
     elems += spira.RouteStraight(p1=p1,
                                  p2=p2,
                                  layer=spira.RDD.PLAYER.R1.METAL)
     return elems