Exemplo n.º 1
0
    def init_primitives(self):
        origin = DPoint(0, 0)

        # draw central square
        from ClassLib.Shapes import Rectangle
        lb_corner = DPoint(-self.cross_width / 2, -self.cross_width / 2)
        center_square = Rectangle(lb_corner, self.cross_width, self.cross_width)
        self.primitives["center_square"] = center_square

        """ left part of Xmon cross """
        p1 = origin + DPoint(-self.cross_width / 2, 0)
        p2 = p1 + DPoint(-self.side_length, 0)
        self.cpw_l = CPW(self.cross_width, self.gnd_gap, p1, p2)
        self.primitives["cpw_l"] = self.cpw_l
        p3 = p2 + DPoint(-self.gnd_gap, 0)
        self.cpw_lempt = CPW(0, self.cpw_l.b / 2, p2, p3)
        self.primitives["cpw_lempt"] = self.cpw_lempt

        """ right part of Xmon cross """
        p1 = origin + DPoint(self.cross_width / 2, 0)
        p2 = p1 + DPoint(self.side_length, 0)
        self.cpw_r = CPW(self.cross_width, self.gnd_gap, p1, p2)
        self.primitives["cpw_r"] = self.cpw_r
        p3 = p2 + DPoint(self.gnd_gap, 0)
        self.cpw_rempt = CPW(0, self.cpw_r.b / 2, p2, p3)
        self.primitives["cpw_rempt"] = self.cpw_rempt

        """ top part of Xmon cross """
        p1 = origin + DPoint(0, self.cross_width / 2)
        p2 = p1 + DPoint(0, self.side_length)
        self.cpw_t = CPW(self.cross_width, self.gnd_gap, p1, p2)
        self.primitives["cpw_t"] = self.cpw_t
        p3 = p2 + DPoint(0, self.gnd_gap)
        self.cpw_tempt = CPW(0, self.cpw_t.b / 2, p2, p3)
        self.primitives["cpw_tempt"] = self.cpw_tempt

        """ bottom part of Xmon cross """
        p1 = origin + DPoint(0, -self.cross_width / 2)
        p2 = p1 + DPoint(0, -self.side_length)
        self.cpw_b = CPW(self.cross_width, self.gnd_gap, p1, p2)
        self.primitives["cpw_b"] = self.cpw_b
        p3 = p2 + DPoint(0, -self.gnd_gap)
        self.cpw_bempt = CPW(0, self.cpw_l.b / 2, p2, p3)
        self.primitives["cpw_bempt"] = self.cpw_bempt

        self.connections = [origin]
Exemplo n.º 2
0
    def init_primitives(self):
        origin = DPoint(0, 0)

        # drawing chip
        self.chip = Rectangle(origin, self.chip_x, self.chip_y)
        self.primitives["chip"] = self.chip

        # contact pads
        self.contact_pad_left = Contact_Pad(
            origin + DPoint(0, self.chip_y / 2), {
                "w": self.Z_params[0].width,
                "g": self.Z_params[0].gap
            })
        self.primitives["cp_left"] = self.contact_pad_left

        self.contact_pad_right = Contact_Pad(
            origin + DPoint(self.chip_x, self.chip_y / 2), {
                "w": self.Z_params[1].width,
                "g": self.Z_params[1].gap
            },
            trans_in=Trans.R180)
        self.primitives["cp_right"] = self.contact_pad_right

        # top and bottom pads
        N_pads = 3
        self.connections = [
            self.contact_pad_left.end, self.contact_pad_right.end
        ]
        self.angle_connections = [
            self.contact_pad_left.angle_connections[1],
            self.contact_pad_right.angle_connections[1]
        ]

        self.contact_pads_top = [
            Contact_Pad(origin + DPoint(self.chip_x / (N_pads + 1) *
                                        (i + 1), self.chip_y), {
                                            "w": self.Z_params[2 + i].width,
                                            "g": self.Z_params[2 + i].gap
                                        },
                        trans_in=Trans.R270) for i in range(0, N_pads)
        ]
        for i in range(0, N_pads):
            self.primitives["cp_top_" + str(i)] = self.contact_pads_top[i]
            self.connections.append(self.contact_pads_top[i].end)
            self.angle_connections.append(
                self.contact_pads_top[i].angle_connections[1])

        self.contact_pads_bottom = [
            Contact_Pad(origin + DPoint(self.chip_x / (N_pads + 1) *
                                        (i + 1), 0), {
                                            "w": self.Z_params[5 + i].width,
                                            "g": self.Z_params[5 + i].gap
                                        },
                        trans_in=Trans.R90) for i in range(0, N_pads)
        ]
        for i in range(0, N_pads):
            self.primitives["cp_bot_" + str(i)] = self.contact_pads_bottom[i]
            self.connections.append(self.contact_pads_bottom[i].end)
            self.angle_connections.append(
                self.contact_pads_bottom[i].angle_connections[1])

        self.connections.append(DPoint(self.chip_x / 2, self.chip_y / 2))
        self.angle_connections.append(0)
Exemplo n.º 3
0
 def init_regions( self ):
     origin = DPoint(0,0)
     w = self.out_a/2 - self.in_a/2
     
     rec1 = Rectangle( origin, w,w )
     p2 = origin + DPoint(self.in_a + w,0)
     rec2 = Rectangle( p2, w,w )
     p3 = origin + DPoint( self.in_a+w,self.in_a+w )
     rec3 = Rectangle( p3, w, w )
     p4 = origin + DPoint( 0, self.in_a + w )
     rec4 = Rectangle( p4, w, w )
     
     tmp_reg = Region()
     
     rec1.place( tmp_reg )
     rec2.place( tmp_reg )
     rec3.place( tmp_reg )
     rec4.place( tmp_reg )
     
     rec = Rectangle( origin, self.out_a, self.out_a )
     rec.place( self.metal_region )
     
     self.empty_region = tmp_reg
     self.connections = [self.center]