예제 #1
0
    def create_elements(self, elems):

        r1 = Row()

        s1 = spira.SRef(r1)
        # s2 = spira.SRef(r1, midpoint=(2000, -1000))
        s2 = spira.SRef(r1, transformation=spira.Translation((2000, -1000)))

        elems += s1
        elems += s2

        print(s1.ports['Al:T2'])
        print(s2.ports['Al:T2'])

        d1 = spira.Port(name='Al:D1',
                        midpoint=(1000, 7000),
                        orientation=180,
                        width=20)
        # d2 = spira.Port(name='Al:D2', midpoint=(-1000, -5000), orientation=0, width=20)

        elems += spira.RouteManhattan(
            ports=[s1.ports['Al:T2'], d1, s2.ports['Al:T2']],
            width=20,
            layer=RDD.PLAYER.Al.METAL)

        elems += spira.RouteManhattan(ports=[s1.ports['Al:T1'], self.d2],
                                      width=20,
                                      layer=RDD.PLAYER.Al.METAL)

        return elems
예제 #2
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
예제 #3
0
 def create_elements(self, elems):
     ports = self.get_io_ports()
     elems += spira.RouteManhattan(ports=ports, layer=spira.RDD.PLAYER.M1.METAL)
     return elems
예제 #4
0
 def create_elements(self, elems):
     elems += spira.RouteManhattan(ports=[self.p1, self.p2],
                                   layer=spira.RDD.PLAYER.R1.METAL)
     return elems
예제 #5
0
 def create_elements(self, elems):
     elems = super().create_elements(elems)
     elems += spira.RouteManhattan(ports=[self.p2, self.p3], corners='round', layer=spira.RDD.PLAYER.R1.METAL)
     return elems
예제 #6
0
 def create_elements(self, elems):
     elems += spira.RouteManhattan(ports=[self.p1, self.p2], layer=self.layer)
     return elems