Опубликован: 06.09.2012 | Уровень: для всех | Доступ: платный | ВУЗ: Московский государственный университет путей сообщения
Лекция 19:

Методы генерации тестов PODEM, FAN и SOCRATES

< Лекция 18 || Лекция 19: 1234 || Лекция 20 >
Аннотация: В лекции продолжается рассмотрение использования шестизначного алфавита при построении проверяющего теста для заданной неисправности. Представлен базовый метод генерации тестов PODEM и его дальнейшее развитие методы FAN и SOCRATES.

19.1 Метод PODEM

Как и D-алгоритм, метод PODEM (path-oriented decision making) использует тот же шестизначный алфавит T_{6}, но в нем применяется другая стратегия поиска тестового набора [19.1]. Отметим, что целью любого алгоритма построения теста для данной неисправности является входной двоичный вектор, который проверяет эту неисправность. Таким образом, искомый тест принадлежит пространству всевозможных двоичных входных наборов. Но пространством поиска в D-алгоритме является множество всевозможных (в том числе и кратных) 2^{N} путей в схеме от места неисправности до какого либо внешнего выхода, где N - число элементов. В методе PODEM пространством поиска является непосредственно множество всевозможных входных наборов, мощность которого 2^{n} обычно меньше 2^{N}, поскольку, как правило, n<N. Это позволяет существенно ускорить процесс поиска.

Основные отличия метода PODEM от D-алгоритма следующие:

  1. другая процедура D-распространения;
  2. отличная процедура доопределения;
  3. выполняется только прямая импликация (от внешних входов к выходам);
  4. иная стратегия поиска решения и обработки противоречивых ситуаций.

D-распространение в методе РОДЕМ выполняется пошагово. В D-границе выбирается в качестве "цели" наиболее перспективный элемент (ближайший к внешнему выходу или имеющий лучший показатель наблюдаемости) и затем сразу с помощью других процедур (в первую очередь процедуры продвижения назад) находится входной набор, обеспечивающий достижение поставленной локальной цели - D-распространения через данный элемент. Напомним, что в D-алгоритме D-распространение выполняется до внешнего выхода, а затем производится доопределение.

Алгоритм выбора цели для константной неисправности вентиля i\equiv v представлен псевдокодом рис. 19.1.

Выбор цели в PODEM

Рис. 19.1. Выбор цели в PODEM

Здесь выбор элемента в D-границе производится по лучшему показателю наблюдаемости (в простейшем случае выбирается элемент, ближайший к одному из внешних выходов).

Доопределение производится с помощью двух основных процедур - распространения назад и импликации. Эффективность метода РОДЕМ во многом определяется процедурой продвижения назад. Поскольку метод разработан для схем, описанных на уровне простейших вентилей И, ИЛИ, НЕ, НЕ-И, НЕ-ИЛИ, то процедура достаточно проста. Начиная с элемента, выбранного в качестве "цели", по мере продвижения к внешним входам, процедура для каждого вентиля по заданному значению одного выхода определяет значение только одного входа. Ее результатом является присваивание определенного значения (0 или 1) одному внешнему входу схемы в результате прохождения одного пути от "целевого элемента" до этого внешнего входа.

Пусть целью процедуры является установка значения v_{k} на линии k. Тогда значение внешнего входа определяется четностью числа элементов инвертирующего типа P вдоль выбранного пути (при прохождении через элементы НЕ, НЕ-И, НЕ-ИЛИ значение сигнала инвертируется). Процедура продвижения назад для внутренней линии (k,v_{k}) находит внешний вход (j,v_{j}). При этом v_j=v_k\oplus p, где p - четность пути от k до j. Следует отметить, что значение присваивается только одному внешнему входу. Внутренние линии сохраняют при этом свои старые значения (как правило, неопределенные значения - u). Псевдокод процедуры продвижения назад представлен на рис. 19.2.

Особо следует отметить правила выбора входа элемента. Здесь, прежде всего, определяется: имеется ли один или несколько вариантов присваивания значений входов вентиля, при которых на его выходе устанавливается требуемое значение. В случае нескольких вариантов (например, 0 на выходе вентиля И может быть получен в результате установки 0 на любом входе; аналогично 1 на выходе вентиля ИЛИ можно получить присваиванием 1 любому из его входов) выбирается вход элемента, ближайший к внешнему входу или имеющий лучший показатель управляемости. То есть в этом случае мы выбираем наиболее перспективный путь. Если имеется только один вариант (например, 0 на выходе вентиля ИЛИ может быть получен только установкой всех его входов в 0; соответственно 1 на выходе вентиля И - установкой всех входов в 1), то выбирается вход, наиболее далекий от внешних входов или имеющий худший показатель управляемости. Это делается с целью скорейшего обнаружения противоречивой ситуации, если она возможна вследствие данного присваивания.

 Алгоритм продвижения назад

Рис. 19.2. Алгоритм продвижения назад

После того, как внешний вход в результате этой процедуры получил определенное значение, выполняется прямая импликация путем моделирования в алфавите T_{6}. Если в результате импликации цель достигнута, то выполняется следующий шаг D-распространения. В противном случае, выполняется процедура продвижения назад для элементов записанных в стек на предыдущем шаге, до тех пор, пока не будет достигнута цель. Прямая импликация выполняется путем моделирования в алфавите Т_{6}, как правило, с помощью таблиц для вентилей, представленных в табл. 18.1-4, от внешних входов к выходам.

В случае возникновения противоречия на этапе импликации начинается перебор значений внешних входов, получивших к этому моменту определенные значения. После выполнения процедуры продвижения назад каждое вновь полученное двоичное значение внешнего входа заносится в стек.

В случае возникновения противоречия значение внешнего входа, записанного в стек последним, меняется на противоположное. Далее снова выполняется импликация. Если и в этом случае возникает противоречие, то меняется на противоположное значение следующего внешнего входа в стеке. Процесс поиска прекращается, если цель достигнута или все варианты исчерпаны (теста не существует). На рис. 19.3 представлен псевдокод алгоритма, реализующего метод РОDЕМ.

 Алгоритм PODEM

Рис. 19.3. Алгоритм PODEM

В качестве примера рассмотрим построение теста для неисправности a\equiv 1 в схеме рис. 19.4. В табл. 19.1 показаны результаты основных этапов генерации теста для этой неисправности. Здесь для каждого этапа приведены значения цели, внешних входов, состояние D-границы. Соответственно на рис. 19.5 показано дерево решений для этого примера. Поскольку при поиске тестового набора решение заключается в выборе одного из двух двоичных значений) 0,1 для внешнего входа, то дерево является двоичным. Здесь каждый узел соответствует внешнему входу, который принимает двоичное значение при построении теста; S и F (в квадрате) - соответственно успех и неудачу при данном выборе.

 Схема для иллюстрации метода PODEM

Рис. 19.4. Схема для иллюстрации метода PODEM
 Дерево решений при поиске теста методом PODEM

Рис. 19.5. Дерево решений при поиске теста методом PODEM
Таблица 19.1.
Цель Внешние входы Импликация D-распро-странение Неудача
a=0 a=0 h=1  G
b=1 b=1  G
c=1 c=1 g=D i, k, m
d=1 d=1 d'=0\\i=D' 
 k, m, n
k=1  e=0 e'=1\\j=0\\k=1\\n=1 M
 e=1 e'=0\\j=1\\k=D'\\n=u M, n Возврат
l=1 f=1 F'=0\\l=1\\m=D'\\n=D

Метод РОDЕМ существенно проще в программной реализации, чем D-алгоритм и доказал свою эффективность для больших комбинационных ДУ (объемом до нескольких десятков тысяч вентилей).

< Лекция 18 || Лекция 19: 1234 || Лекция 20 >
Дмитрий Медведевских
Дмитрий Медведевских

Добрый день  можно поинтересоваться где брать литературу предложенную в курсе ?Большинство книг я не могу найти  в известных источниках

Андрей Баранов
Андрей Баранов
Донецк, Донецкий национальный технический университет, 2019
Андрей Чернов
Андрей Чернов
Россия, Ростов-на-Дону, Ростовский институт инженеров железнодорожного транспорта, 1993