def gain(self, value): r1_dev = self.get_elem_by_idx('R1').data['device'] r1_fp = self.get_elem_by_idx('R1').data['footprint'] if r1_fp[0:3] == "MY-": r1_fp = r1_fp[3:] self.rseries = series.get_series(self._configdict['Rseries'], 'resistor', start=self._configdict['Rmin'], end=self._configdict['Rmax'], device=r1_dev, footprint=r1_fp) allowed_res_vals = self.rseries.gen_vals('resistor') required_res_val = self.gain_to_res(value) if required_res_val and not isinstance(required_res_val, Resistance): required_res_val = Resistance(required_res_val) if required_res_val is None: self.get_elem_by_idx('R1').data['fillstatus'] = 'DNP' return lastval = None for rval in allowed_res_vals: if not lastval: lastval = rval if rval > required_res_val: try: value = self.rseries.get_symbol(lastval).value except AttributeError: value = self.rseries.get_symbol(lastval) self.get_elem_by_idx('R1').data['value'] = value # noqa break lastval = rval
def _get_component_series(self, idx, stype): if stype == 'capacitor': sstr = 'Cseries' smin = 'Cmin' smax = 'Cmax' elif stype == 'resistor': sstr = 'Rseries' smin = 'Rmin' smax = 'Rmax' else: raise NotImplementedError dev = self.get_elem_by_idx(idx).data['device'] fp = self.get_elem_by_idx(idx).data['footprint'] if fp[0:3] == "MY-": fp = fp[3:] return get_series(self._configdict[sstr], stype, start=self._configdict[smin], end=self._configdict[smax], device=dev, footprint=fp)
def Fdiff(self, value): c1_dev = self.get_elem_by_idx('C1').data['device'] c1_fp = self.get_elem_by_idx('C1').data['footprint'] if c1_fp[0:3] == "MY-": c1_fp = c1_fp[3:] cseries = series.get_series(self._configdict['Cseries'], 'capacitor', start=self._configdict['Cmin'], end=self._configdict['Cmax'], device=c1_dev, footprint=c1_fp) allowed_cap_vals = cseries.gen_vals('capacitor') fcm_est = self.target_Fcm required_cap_val = Capacitance(1 / (2 * pi * float(self.R1) * float(fcm_est))) cval = None lastval = None for cval in allowed_cap_vals: if not lastval: lastval = cval if cval >= required_cap_val: self.get_elem_by_idx('C2').data['value'] = cseries.get_symbol(lastval).value # noqa self.get_elem_by_idx('C3').data['value'] = cseries.get_symbol(lastval).value # noqa break lastval = cval if cval is None: raise ValueError allowed_cap_vals = cseries.gen_vals('capacitor') required_cap_val = lastval * 10 for cval in allowed_cap_vals: if cval >= required_cap_val: self.get_elem_by_idx('C1').data['value'] = cseries.get_symbol(cval).value # noqa break