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()
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()
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
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
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
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
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
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 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