D-алгоритм является дальнейшим развитием концепции активизации путей проверяемой схемы. В отличие от метода одномерной активизации данный алгоритм основан на возможности одновременной активизации всевозможных путей ( как одномерных так и многомерных ) от места возникновения неисправности ко всем выходам схемы. Формальное описание алгоритма базируется на D-исчислении - модифицированном кубическом исчислении булевых функций.
1.1 D-исчисление
D - исчисление представляет собой р - исчисление, дополненное следующими понятиями и определениями.
D - куб . Это определенное над опорными координатами вентиля либо схемы множество, состоящее из элементов {0,1,х,d,d'} и составленное таким образом, чтобы хотя бы одной входной и одной выходной координатам соответствовал символ d либо d`. Символы d, d` могут принимать значения из множества {0,1}. D-куб имеет кратность k ( будем также называть такой его n-мерным кубом) , если символы d либо d' соответствуют k входным координатам. D - куб кратности 1 называется простым . Формально построение d-куба сводится к попарному пересечению кубов из единичного и нулевого вырожденных покрытий по следующим соотношениям:
0 ^ 0 = 0 ^ х = 0 ,
1 ^ 1 = 1 ^ х = 1 ,
х ^ х = х ,
1 ^ 0 = d ,
0 ^ 1 = d`.
Например, для элемента 2 ИЛИ d-кубы можно построить следующим образом:
Два d-куба, один из которых получен из другого путем замены всех символов d на d` или наоборот без изменения остальных символов, являются равносильными и называются эквивалентными.
Физическая интерпретация d - куба. В простом d-кубе отражается факт управляемости выхода вентиля от одного входа; в кратном кубе выходом управляют одновременно несколько входов.
D - куб неисправности. Это понятие используется для выражения теста неисправности вентиля либо схемы вцелом через входные и выходные координаты. D - куб неисправности состоит из входного набора (локального теста) и символов d, d' на выходных координатах. Локальный тест строится над входными координатами вентиля таким образом, чтобы под его воздействием неисправность проявлялась (наблюдалась) на выходе вентиля ( схемы ). Символ d говорит о том, что элемент ( схема ) в исправном состоянии на выходе должен иметь 1, в неисправном - 0; для символа d' - наоборот. Различают примитивный и сложный d-кубы неисправности вентиля и d-куб неисправности схемы. Примитивный d - куб строится над координатами одного вентиля, сложный
d - куб - над координатами нескольких вентилей. D - к у б неисправности схемы задается над входными и выходными координатами схемы. Например, для неисправности =0 на выходе элемента 2 ИЛИ примитивный d-куб неисправности вентиля
говорит о том, что при подаче теста {1,х} на входы вентиля на его выходе в исправном состоянии должна быть 1, а в неисправном - 0. При построении D-куба неисправности необходимо придерживаться следующих рекомендаций: - если KТ, в которой моделируется неисправность, является внешним входом схемы, то D-куб неисправности составляется относительно одного или нескольких вентилей, которые питает данный вход, в зависимости от того какой путь (одномерный или многомерный) будет активизироваться. Так, например, для приводимого ниже фрагмента схемы D-куб неисправности х1=1 при попытке активизации
одномерного пути {x2,V1,...} необходимо составлять относительно одного вентиля - V1:
Если же требуется активизировать многомерный путь
то D-куб неисправности должен быть построен относительно вентилей V1 и V2:
При моделировании неисправности на непосредственном входе (выходе) элемента схемы D-куб неисправности составляется относительно вентиля, которому принадлежит рассматриваемый вход, вне зависимости от того, кто питает этот вход ( выход другого элемента или внешний вход схемы ) и имеются ли ответвления в цепи данной КТ. Например, D-кубы неисправностей V1.вх2=1, V1.вых=0 в приведенном выше фрагменте схемы строятся относительно вентиля V1:
D-куб неисправности на внешнем выходе схемы строится от- носительно вентиля, выход которого является выходом схемы.
D - пересечение. Эта операция выражает формализм активизации пути от места возникновения неисправности до выходов схемы. Этим обеспечивается наблюдаемость неисправности. Операция обозначается как "^" и определяется над d-кубами на основе следующих соотношений:
Рассмотрим пример d-пересечения кубов:
Правило d-пересечения кубов. Куб, являющийся результатом d-пересечения двух d-кубов неопределен, если он содержит символы y, p либо одновременно встречаются символы j и m. Если в кубе имеются символы j, но не m, то вместо пересечения А^В необходимо выполнить А^~В. В случае наличия символов m пересечение производить по соотношениям:
1.2 Тестирование КЛС по D-алгоритму
Синтез теста конкретной неисправности производится по следующему алгоритму.
Алгоритм D1. (Алгоритм тестирования отдельной неисправности k=h на базе D-исчисления).
1. Относительно выбранного вентиля составляется D-куб Сh0 заданной неисправности.
2. Описываются всевозможные пути L = {li}, порождаемые Кт k.
3. D - проход (D-продвижение, прямая фаза(1-я)). Из списка L выбирается путь li (одномерный или многомерный и выполняется его активизация путем последовательного D-пересечения куба Сh0 с D-кубами вентилей, лежащих на пути li. При этом на каждом шаге символ d либо d' "продвигается" по данному пути на выход очередного вентиля. Эта заканчивается по получении на выходной координате символа d либо d'.В результате на некотором n-шаге получаем D-куб неисправности схемы D"(li) с неопределенными выходными координатами вентилей.
4. Доопределение (обратная фаза(2-я)). Этап предназначен для установки (доопределения) требуемых выходных значений куба D"(li), которые после d-прохода не обязательно обеспечены соответствующими входными значениями. Доопределение выполняется на основе операции D-пересечения куба D"(li) с соответствующими сингулярными кубами вырожденных покрытий вентилей. Если же какую-либо из координат не удается доопределить, т. е. всевозможные варианты пере- сечений образуют пустые либо неопределенные кубы,то активизация пути li прекращается, путь вычеркивается из списка L и производится переход на п.3 данного алгоритма. При этом, если список L окажется пустым, то это говорит о том, что ни один из путей, порождаемых КТ k, не активизируется и теста данной неисправности не существует. В этом случае она объявляется несущественной, и алгоритм прекращается. В случае же успешного доопределения получаем D-куб неисправности схемы D(li).
5. Составление теста . Искомый тест t(k=h) составляется по входным координатам куба D(li).