Esempio n. 1
0
    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
Esempio n. 2
0
    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
Esempio n. 3
0
    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
Esempio n. 4
0
    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
Esempio n. 5
0
 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'
Esempio n. 6
0
 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"