Example #1
0
    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
Example #2
0
    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)
Example #3
0
    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