Exemple #1
0
 def plot_JDF(cls):
     xmin = minx([])
     xmax = maxx([])
     ymin = miny([])
     ymax = maxy([])
     cls.jdf.get_member("xy_offsets").reset(cls.jdf)
     xy_off = cls.jdf.xy_offsets
     log_debug(2)
     for p in cls.jdf.patterns:
         a = cls.agent_dict[p.name]
         reset_properties(a)  #fix updating of properties
         reset_property(a, "polylist")
         log_debug(a)
         verts = []
         for chip in xy_off.get(p.name, []):
             sPoly(a,
                   x_off=chip[0] * 1.0e-6,
                   y_off=chip[1] * 1.0e-6,
                   vs=verts)
         log_debug(a)
         cls.plot.set_data(a.name, verts, a.color)
         log_debug(a)
         xmin = min([minx(verts), xmin])
         xmax = max([maxx(verts), xmax])
         ymin = min([miny(verts), ymin])
         ymax = max([maxy(verts), ymax])
     log_debug(1)
     cls.plot.set_xlim(xmin, xmax)
     cls.plot.set_ylim(ymin, ymax)
     cls.plot.draw()
Exemple #2
0
 def plot_JDF(cls):
     xmin=minx([])
     xmax=maxx([])
     ymin=miny([])
     ymax=maxy([])
     cls.jdf.get_member("xy_offsets").reset(cls.jdf)
     xy_off=cls.jdf.xy_offsets
     log_debug(2)
     for p in cls.jdf.patterns:
         a=cls.agent_dict[p.name]
         reset_properties(a) #fix updating of properties
         reset_property(a, "polylist")
         log_debug(a)
         verts=[]
         for chip in xy_off.get(p.name, []):
             sPoly(a, x_off=chip[0]*1.0e-6, y_off=chip[1]*1.0e-6, vs=verts)
         log_debug(a)
         cls.plot.set_data(a.name, verts, a.color)
         log_debug(a)
         xmin=min([minx(verts), xmin])
         xmax=max([maxx(verts), xmax])
         ymin=min([miny(verts), ymin])
         ymax=max([maxy(verts), ymax])
     log_debug(1)
     cls.plot.set_xlim(xmin, xmax)
     cls.plot.set_ylim(ymin, ymax)
     cls.plot.draw()
Exemple #3
0
 def polylist(self):
     """makes 4 branched testpad through reflections"""
     self.verts=[]
     reset_property(self, "_s_testpad_TL")
     self.verts.extend(self._s_testpad_TL)
     self.verts.extend(horiz_refl(self._s_testpad_TL))
     self.verts.extend(vert_refl(self._s_testpad_TL))
     self.verts.extend(horizvert_refl(self._s_testpad_TL))
     return self.verts
Exemple #4
0
 def polylist(self):
     """makes 4 branched testpad through reflections"""
     self.verts = []
     reset_property(self, "_s_testpad_TL")
     self.verts.extend(self._s_testpad_TL)
     self.verts.extend(horiz_refl(self._s_testpad_TL))
     self.verts.extend(vert_refl(self._s_testpad_TL))
     self.verts.extend(horizvert_refl(self._s_testpad_TL))
     return self.verts
Exemple #5
0
 def polylist(self):
     """makes inverse cross through reflections"""
     self.verts=[]
     reset_property(self, "_s_crossbox_TL")
     self.verts.extend(self._s_crossbox_TL)
     self.verts.extend(horiz_refl(self._s_crossbox_TL))
     self.verts.extend(vert_refl(self._s_crossbox_TL))
     self.verts.extend(horizvert_refl(self._s_crossbox_TL))
     return self.verts
Exemple #6
0
 def make_bond_pads(self):
     """creates bond pad portion by reflecting and rotating TL bond pad.
     Left and right bond pads are offset so gap is centered on chip. Top and bottom bond pads are not"""
     self.ocpw=self.gap/2.0+self.w/2.0
     reset_property(self, "_s_bond_pad_TL")
     self.verts.extend(self._s_bond_pad_TL)
     self.verts.extend(horiz_refl(self._s_bond_pad_TL))
     self.ocpw=0
     reset_property(self, "_s_bond_pad_TL")
     self.verts.extend(rotate(horiz_refl(self._s_bond_pad_TL), 90))
     self.verts.extend(vert_refl(rotate(horiz_refl(self._s_bond_pad_TL), 90)))
     self.ocpw=self.gap/2.0+self.w/2.0
Exemple #7
0
 def make_bond_pads(self):
     """creates bond pad portion by reflecting and rotating TL bond pad.
     Left and right bond pads are offset so gap is centered on chip. Top and bottom bond pads are not"""
     self.ocpw = self.gap / 2.0 + self.w / 2.0
     reset_property(self, "_s_bond_pad_TL")
     self.verts.extend(self._s_bond_pad_TL)
     self.verts.extend(horiz_refl(self._s_bond_pad_TL))
     self.ocpw = 0
     reset_property(self, "_s_bond_pad_TL")
     self.verts.extend(rotate(horiz_refl(self._s_bond_pad_TL), 90))
     self.verts.extend(
         vert_refl(rotate(horiz_refl(self._s_bond_pad_TL), 90)))
     self.ocpw = self.gap / 2.0 + self.w / 2.0
Exemple #8
0
 def polylist(self):
     """creates pads by using reflection on mark box and making bond pads"""
     self.verts=[]
     self.make_bond_pads()
     reset_property(self, "_s_labelbox_TL")
     self.verts.extend(self._s_labelbox_TL)
     reset_property(self, "_s_markbox_BL")
     self.verts.extend(self._s_markbox_BL)
     self.verts.extend(horiz_refl(self._s_markbox_BL))
     self.verts.extend(horizvert_refl(self._s_markbox_BL))
     self.Poly(self.test_pads, x_off=-self.testx, y_off=self.testy)
     self.Poly(self.test_pads, x_off=self.testx, y_off=self.testy)
     self.Poly(self.test_pads, x_off=self.testx, y_off=-self.testy)
     return self.verts
Exemple #9
0
 def polylist(self):
     """creates pads by using reflection on mark box and making bond pads"""
     self.verts = []
     self.make_bond_pads()
     reset_property(self, "_s_labelbox_TL")
     self.verts.extend(self._s_labelbox_TL)
     reset_property(self, "_s_markbox_BL")
     self.verts.extend(self._s_markbox_BL)
     self.verts.extend(horiz_refl(self._s_markbox_BL))
     self.verts.extend(horizvert_refl(self._s_markbox_BL))
     self.Poly(self.test_pads, x_off=-self.testx, y_off=self.testy)
     self.Poly(self.test_pads, x_off=self.testx, y_off=self.testy)
     self.Poly(self.test_pads, x_off=self.testx, y_off=-self.testy)
     return self.verts
 def _s_wafer_aligner(self):
     vs=sP([(-self.flat_length/2.0, self.linewidth/2.0),
            (-self.flat_length/2.0, 3.0*self.linewidth/2.0),
            (self.flat_length/2.0, 3.0*self.linewidth/2.0),
            (self.flat_length/2.0, self.linewidth/2.0)])
     sP([(-self.flat_length/2.0, -self.linewidth/2.0),
            (-self.flat_length/2.0, -3.0*self.linewidth/2.0),
            (self.flat_length/2.0, -3.0*self.linewidth/2.0),
            (self.flat_length/2.0, -self.linewidth/2.0)], vs=vs)
     reset_property(self, "_s_marker")
     for n in range(self.num_marker):
         sTransform(self._s_marker, (n-self.num_marker/2)*self.flat_length/self.num_marker, vs=vs)
     sTransform(self._s_marker, -self.flat_length/2.0-self.linewidth/2.0, theta=90.0, vs=vs)
     sTransform(self._s_marker, self.flat_length/2.0+self.linewidth/2.0, theta=90.0, vs=vs)
     sP([(-self.flat_length/2.0-4.0*self.linewidth, -3.0*self.linewidth/2.0),
         (-self.flat_length/2.0-4.0*self.linewidth, 3.0*self.linewidth/2.0),
         (-self.flat_length/2.0-self.linewidth, 3.0*self.linewidth/2.0),
         (-self.flat_length/2.0-self.linewidth, -3.0*self.linewidth/2.0)], vs=vs)
     sP([(self.flat_length/2.0+4.0*self.linewidth, -3.0*self.linewidth/2.0),
         (self.flat_length/2.0+4.0*self.linewidth, 3.0*self.linewidth/2.0),
         (self.flat_length/2.0+self.linewidth, 3.0*self.linewidth/2.0),
         (self.flat_length/2.0+self.linewidth, -3.0*self.linewidth/2.0)], vs=vs)
     sPoly(self.width_checker, y_off=3.0*self.linewidth/2.0+self.width_checker.height/2.0, vs=vs)
     return sPoly(self.width_checker, y_off=-3.0*self.linewidth/2.0-self.width_checker.height/2.0, vs=vs)
 def polylist(self):
     self.verts=[]
     reset_property(self, "_s_wafer_aligner")
     self.verts.extend(rotate(self._s_wafer_aligner, self.angle))
     return self.verts
 def polylist(self):
     self.verts=[]
     reset_property(self, "_s_width_checker")
     self.verts.extend(rotate(self._s_width_checker, self.angle))
     return self.verts