def get_test_all_mask(self, test0mask, test1mask): """ Возвращает маску замены команды TEST(m0, m1) -> TEST_ALL(mask) :param test0mask: маска для проверки нулевых битов :param test1mask: маска для проверки единичных битов :return: маска для проверки всех пинов или None если не хватило данных для формирования маски """ if isinstance(test0mask, (list, tuple)): test0mask = list_to_mask(test0mask, self.pins) if isinstance(test1mask, (list, tuple)): test1mask = list_to_mask(test1mask, self.pins) result_pins = [] # состояние входов микросхемы должно быть таким, каким мы его установили for pin in range(self.pins): expected = None if (test0mask & (1 << pin)) and (test1mask & (1 << pin)): print "ERROR: wrong TEST command, pin ", (pin + 1) sys.exit(1) if self.ddr[pin] == "o": expected = self.levels[pin] if expected == 0 and (test1mask & (1 << pin)): print "TEST: expected output level 0 but found in mask_1 at pin ", (pin + 1), " for ", self.chip_name elif expected == 1 and (test0mask & (1 << pin)): print "TEST: expected output level 1 but found int mask_0 at pin ", (pin + 1), " for ", self.chip_name if expected is None: if test0mask & (1 << pin): expected = 0 elif test1mask & (1 << pin): expected = 1 else: self.warning( "TEST: Can't detect tested level at pin ", (pin + 1), " for ", self.chip_name, ". Unconnected pin?", ) return None result_pins.append(expected) # проверяем, что нам известны состояния всех уровней и формируем маску result = 0 for pin in range(self.pins): if result_pins[pin] == 1: result |= 1 << pin return result
def get_test_all_mask(self, test0mask, test1mask): """ Возвращает маску замены команды TEST(m0, m1) -> TEST_ALL(mask) :param test0mask: маска для проверки нулевых битов :param test1mask: маска для проверки единичных битов :return: маска для проверки всех пинов или None если не хватило данных для формирования маски """ if isinstance(test0mask, (list, tuple)): test0mask = list_to_mask(test0mask, self.pins) if isinstance(test1mask, (list, tuple)): test1mask = list_to_mask(test1mask, self.pins) result_pins = [] # состояние входов микросхемы должно быть таким, каким мы его установили for pin in range(self.pins): expected = None if (test0mask & (1 << pin)) and (test1mask & (1 << pin)): print 'ERROR: wrong TEST command, pin ', (pin+1) sys.exit(1) if self.ddr[pin] == 'o': expected = self.levels[pin] if expected == 0 and (test1mask & (1 << pin)): print 'TEST: expected output level 0 but found in mask_1 at pin ', (pin+1), ' for ', self.chip_name elif expected == 1 and (test0mask & (1 << pin)): print 'TEST: expected output level 1 but found int mask_0 at pin ', (pin+1), ' for ', self.chip_name if expected is None: if test0mask & (1 << pin): expected = 0 elif test1mask & (1 << pin): expected = 1 else: self.warning("TEST: Can't detect tested level at pin ", (pin+1), ' for ', self.chip_name, '. Unconnected pin?') return None result_pins.append(expected) # проверяем, что нам известны состояния всех уровней и формируем маску result = 0 for pin in range(self.pins): if result_pins[pin] == 1: result |= 1 << pin return result
def set_pins_to_1(self, mask): """ :param mask: :return: """ if isinstance(mask, (list, tuple)): mask = list_to_mask(mask, self.pins) for pin in range(self.pins): if mask & (1 << pin): self.levels[pin] = 1
def set_ddr(self, mask): """ Настраивает пины тестера на ввод/вывод :param mask: :return: """ if isinstance(mask, (list, tuple)): mask = list_to_mask(mask, self.pins) for pin in range(self.pins): if mask & (1 << pin): self.ddr[pin] = 'o' else: self.ddr[pin] = 'i'
def set_ddr(self, mask): """ Настраивает пины тестера на ввод/вывод :param mask: :return: """ if isinstance(mask, (list, tuple)): mask = list_to_mask(mask, self.pins) for pin in range(self.pins): if mask & (1 << pin): self.ddr[pin] = "o" else: self.ddr[pin] = "i"