Генерирование тестов для цифровых схем методом булевой производной


Генерирование тестов для цифровых схем методом булевой производной

Булевой производной функции f(x) = f(x1, x2,..., xn) по xi называется функция

df(x) / dxi = f(x1, x2,..., xi,..., xn) Е f(x1, x2,...,,..., xn),

где Е - сумма по модулю 2.

Булева производная может быть также вычислена и по следующей формуле:

df(x) / dxi = f(x1, x2,..., 0,..., xn) Е f(x1, x2,..., 1,..., xn).

Булева производная определяет значения логических переменных x1,..., xn (кроме xi), при которых изменение состояния xi приводит к изменению значения функции f(x).

Тест для неисправности xi = 0 (хi = 1) определяют значения логических переменных, при которых

xi Ч df(x) / dxi = 1 (`xi Ч df(x) / dxi =1).

Сказанное можно распространить и на внутренние переменные. Тест для неисправностей z =0 (z =1) внутренней линии схемы определяют значения логических переменных, при которых

zЧ df(x) / dz =1 ( Ч df(x) / dz = 1).

Таким образом, входное воздействие для проверки неисправности в точке z определяется следующим образом.

  • 1. Составляем функцию f(x), в которой в качестве переменной присутствует z.
  • 2. Определяем частную булеву производную df(x) / dz, приводим полученное выражение к дизъюнктивной форме (ДФ).
  • 3. Выбираем один из термов (например, t), полученной в п. 2 ДФ.
  • 4. Неисправность z = 0 проверяется на воздействии, при котором значения переменных x1,..., xn обеспечивают условие zЧ t = 1.
  • 5. Неисправность z = 1 проверяется на воздействии, при котором значения переменных x1,..., xn обеспечивают условие `zЧ t = 1.

Приведем несколько примеров вычисления тестов методом булевой производной.

Пример. Дана схема (рис. 4.6), реализующая функцию

f(x)= x1 х2 Ъ x3. Найти тесты неисправностей x1 = 0 и x1 = 1.

Найдем булеву производную df(x) / dx1:

Рис. 4.6

Тест для x1 = 0 определим из условия x1Ч df(x) / dx1 = 1, то есть . Следовательно, x1 = 1, x2 = 1, x3 = 0.

Тест для x1 = 1 определим из условия , то есть

Следовательно, x1 = 0, x2 = 1, x3 = 0.

Пример. Для схемы рис. 4.7 найти тестовые наборы для проверки неисправностей x2 = 0 и x2 = 1.

Схема реализует функцию

Пользуясь формулой для вычисления булевой производной df(x) / dx2, находим ее значение:

df(x) / dx2 =(x1Ч 1 Ъ x1Ч 0) Е (x1Ч 0 Ъ x1 Ч 1)= 0.

Это означает, что f(x) не зависит от x2, то есть неисправности x2 = 0 и x2 = 1 являются непроверяемыми.

Пример. Дана схема рис. 4.8. Найти тестовый набор для проверки неисправности y6 = 0. Выразим f(x) через внутренние переменные схемы:

Найдем булеву производную df(x) / dy6:

Тест для y6 =0 найдем из условия y6Ч df(x) / dy6 = 1, то есть

функция неисправность булевой производная

Следовательно, тестом для проверки рассматриваемой неисправности является набор x1 = 1, x2 = 1, x3 = 0 и x4 = 0.

Если от проверяемой точки имеются несколько путей к контролируемому выходу, то производная для данной точки определяется как произведение нескольких производных, число которых зависит от числа путей.