Как и D-алгоритм, метод PODEM (path-oriented decision making) использует тот же шестизначный алфавит $$T_{6}$$, но в нем применяется другая стратегия поиска тестового набора [19.1]. Отметим, что целью любого алгоритма построения теста для данной неисправности является входной двоичный вектор, который проверяет эту неисправность. Таким образом, искомый тест принадлежит пространству всевозможных двоичных входных наборов. Но пространством поиска в D-алгоритме является множество всевозможных (в том числе и кратных) $$2^{N}$$ путей в схеме от места неисправности до какого либо внешнего выхода, где $$N$$ - число элементов. В методе PODEM пространством поиска является непосредственно множество всевозможных входных наборов, мощность которого $$2^{n}$$ обычно меньше $$2^{N}$$, поскольку, как правило, $$n<N$$. Это позволяет существенно ускорить процесс поиска.
Основные отличия метода PODEM от D-алгоритма следующие:
D-распространение в методе РОДЕМ выполняется пошагово. В D-границе выбирается в качестве "цели" наиболее перспективный элемент (ближайший к внешнему выходу или имеющий лучший показатель наблюдаемости) и затем сразу с помощью других процедур (в первую очередь процедуры продвижения назад) находится входной набор, обеспечивающий достижение поставленной локальной цели - D-распространения через данный элемент. Напомним, что в D-алгоритме D-распространение выполняется до внешнего выхода, а затем производится доопределение.
Алгоритм выбора цели для константной неисправности вентиля $$i\equiv v$$ представлен псевдокодом рис. 19.1.
(рис 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) Алгоритм PODEM
В качестве примера рассмотрим построение теста для неисправности
$$a\equiv 1$$ в схеме рис. 19.4. В табл. 19.1 показаны результаты основных этапов генерации теста для этой неисправности. Здесь для каждого этапа приведены значения
(рис 19.4) Схема для иллюстрации метода PODEM
(рис 19.5) Дерево решений при поиске теста методом PODEM
| Цель | Внешние входы | Импликация | 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-алгоритм и доказал свою эффективность для больших комбинационных ДУ (объемом до нескольких десятков тысяч вентилей).
Идеи, заложенные в этом методе, получили развитие в алгоритме "
Более эффективные процедуры продвижения назад и перебора позволяют уменьшить количество возвратов при поиске теста и тем самым уменьшить время генерации теста.
Выполнение импликации в обоих направлениях позволяет в некоторых случаях раньше обнаруживать конфликтные ситуации и, что еще более важно избыточные неисправности. Отметим, что многие алгоритмы генерации тестов тратят большие вычислительные ресурсы на избыточные неисправности (для которых нельзя построить тестовый набор). Поскольку задача построения теста носит переборный характер, то в худшем случае потребуется рассмотреть всевозможные значения входных переменных. Если схема имеет достаточно много избыточных неисправностей, то система генерации тестов может более половины времени работать на построение тестов, которые не существуют. Поэтому избыточные неисправности желательно находить как можно быстрее.
Процедура кратного продвижения назад по нескольким путям позволяет методу
В том случае, когда $$D$$-граница содержит один элемент, в методе
(рис 19.6) Пример схемы для активизации в FAN
для которой необходимо построить тест для неисправности coinst1 входа вентиля G. Влияние неисправности должно распространяться через мультиплексор и вентиль H. Для распространения через вентиль H его верхнему входу необходимо присвоить значение 1. Но из процедуры активизации в месте неисправности следует, что этот вход устанавливается в блокирующее значение 0. Поэтому для обнаружения подобных ситуаций в методе
На этапе препроцессорной обработки схема разбивается на одновыходные древовидные подсхемы, которые не содержат сходящихся разветвлений. Очевидно, внутри таких подсхем продвижение назад выполняется без конфликтов и может остановиться на линиях, которые являются выходами предыдущих подсхем без разветвлений. После того, как в процессе продвижения назад внутри подсхемы некоторые линии получили определенно значение, можно выполнить процедуру подтверждения этих значений. Рассмотрим узел разветвления $$J$$ на рис. 19.7 [19.3] c ветвями $$J_{1}$$ и $$J_{2}$$ .
(рис 19.7) Пример схемы, содержащей древовидную подсхему
Здесь вентили $$G$$ и $$J$$ являются выходами древовидных подсхем (иногда их называют головными - head). Если существует путь от узла разветвления вперед (по направлению к выходам) до схемы $$P$$, то схема называется граничной (bound). Схемы, которые не являются граничными, называются свободными. Для нашего примера схемы $$A,B,C,D,E,F,G,H,J$$ являются граничными, в то время как схемы $$J_{1}$$, $$J_{2}$$, $$K$$ и $$L$$ представляют свободные схемы. Свободные схемы, которые непосредственно питают граничные cхемы (как в случае разветвления $$J$$) или через логические элементы (случай $$G$$) являются головными (head). Они определяют границу между свободными и граничными линиями.
Как и предыдущий метод
Для того, чтобы сохранить полученные значения в процессе продвижения назад и разрешить конфликтные ситуации,
При продвижении назад через логический элемент логические значения его входов зависят от значения на выходе и типа вентиля. Для И/НЕ-И вентилей 1/0 на выходе ведет к присвоению 1 на всех его входах. Соответственно для вентилей ИЛИ/НЕ-ИЛИ 0/1 на выходе ведет к необходимости присвоения значений 0 всем его входам. Кроме этого, если вентиль инвертирующего типа, то значения $$n_{0}(s)$$ и $$n_{1}(s)$$ в триплете меняются местами. Например, для вентиля НЕ-ИЛИ с триплетом $$(Z,u,v)$$ на выходе его входам присваивается триплет $$(Z,v,u)$$, если значение 1 требуется на выходе.
Если входу вентиля необходимо присвоить контролирующее значение (0 для И или НЕ-И, 1 для ИЛИ или НЕ-ИЛИ), то при продвижении назад через логический элемент выбирается как и в методе PODEM выбирается вход, имеющий лучшую управляемость. Предположим, что вентиль имеет входы $$X_{1},…,X_{n}$$ и выход $$Y$$ и без потери общности вход $$X_{1} $$имеет лучший показатель управляемости. Тогда при продвижении назад через логический элемент значения $$n_{0}(s)$$, $$n_{1}(s)$$ для его входов можно найти (по заданным значения выхода $$n_{0}(s)$$, $$n_{1}(s)$$) согласно правилам, приведенным в табл. 19.2 [19.3].
| N п/п | Функция | 0-счетчик | 1-счетчик | Управляемость |
|---|---|---|---|---|
| 1 | И | $$n_0(X_1)=n_0(Y)$$ | $$n_1(X_1)=n_1(Y)$$ | легкий 0 |
| 2 | И | $$n_0(X_i)=0$$ | $$n_1(X_i)=n_1(Y) $$ | остальные |
| 3 | НЕ-И | $$n_0(X_1)=n_1(Y)$$ | $$n_1(X_1)=n_0(Y) $$ | легкий 0 |
| 4 | НЕ-И | $$n_0(X_i)=0$$ | $$n_1(X_i)=n_0(Y) $$ | остальные |
| 5 | ИЛИ | $$n_0(X_1)=n_0(Y)$$ | $$n_1(X_1)=n_1(Y) $$ | Легкая 1 |
| 6 | ИЛИ | $$n_0(X_i)=n_0(Y) $$ | $$n_1(X_i)=0$$ | остальные |
| 7 | НЕ-ИЛИ | $$n_0(X_1)=n_1(Y)$$ | $$n_0(X_1)=n_0(Y) $$ | Легкая 1 |
| 8 | НЕ-ИЛИ | $$n_0(X_i)=n_1(Y)$$ | $$n_1(X_i)=0$$ | остальные |
| 9 | НЕ | $$n_0(X)=n_1(Y)$$ | $$n_1(X)=n0(Y) $$ | |
| 10 | разветвление | $$n_0(X)=\sum\limts_{i=1}^k{n_0(X_i)} $$ | $$n_1(X)=\sum\limts_{i=1}^k{n_1(X_i)} $$ |
Рассмотрим для примера распространение назад триплета через вентиль И. Если на выходе этого вентиля необходимо установить 0, то очевидно хотя бы один из его входов надо установить в 0. В методе
Применение этих правил рассмотрим на примере схемы 19.8 [19.3].
(рис 19.8) Пример вычислений n0(s), n1(s) при обратном распространении
Предположим, что в процессе обратного распространения на ветвях разветвления получились значения $$(J_{1},1,1)$$ и $$(J_{2},1,2)$$. Поскольку оба значения $$n_{0}(J_{1})$$ и $$n_{1}(J_{1})$$ для ветви $$J_{1}$$ ненулевые (как и для второй ветви $$J_{2}$$), то имеет место конфликтная ситуация - не ясно, какое значение надо присвоить для разветвления $$J$$. Поскольку нулевое значение имеет вес 2, а единичное - вес 3, то мы выбираем для $$J $$значение 1 с большим весом. Так как сложилась конфликтная ситуация, то кратное продвижение назад в этом месте прекращается и необходимо разрешить конфликт путем возврата к точке последнего выбора и присвоения альтернативного значения. Если на узле разветвления невозможно найти согласованные значения, то неисправность является избыточной.
Рассмотрим работу метода
| Текущие цели | Стем цели | Голова цели |
|---|---|---|
| $$(R,0,1), (T,1,0), (U,1,0)$$ | ||
| $$(T,1,0), (U,1,0), (N,0,1)$$ | ||
| $$(U,1,0), (N,0,1)$$ | $$(S,1,0)$$ | |
| $$(N,0,1)$$ | $$(S,2,0)$$ | |
| $$(S,2,0), (M,0,1)$$ | ||
| $$(P,0,2), (Q,0,2)$$ | $$(M,0,1)$$ | |
| $$(Q,0,2)$$ | $$(M,0,3)$$ | |
| $$(L,0,2)$$ | $$(M,0,3)$$ | |
| $$(J,2,0)$$ | $$(M,0,3)$$ | |
| $$(G,2,0)$$ | ||
| $$(K,3,0)$$ | $$(G,2,0)$$ | |
| $$(H,0,3)$$ | $$(G,2,0)$$ | |
| $$(G,2,3)$$ | ||
| $$(F,0,2)$$ | $$(G,2,3)$$ |
В заключение рассмотрим укрупненный алгоритм метода
Входной параметр
Значение $$B$$ входного параметра процедуры MBack используется, если множество текущих целей пусто. В этом случае узел разветвления
При инициализации признак $$b_flag$$ устанавливается в 1, если по окончании фазы импликации остались неподтвержденные значения в схеме. В этой точке все множества целей инициализируются (присваивается пустое множество) и производится сброс флага $$b_flag$$.
Если есть неподтвержденные линии, то они образуют множество начальных целей $$\{IO\}$$. Если $$D$$-значение не достигает внешнего выхода, элемент из $$D$$-границы добавляется в $$\{IO\}$$. Как уже отмечалось
FAN() / / аргументы -номер элемента и линии с константной неисправностью
{
инициализация неисправности; // присваивание D или D' неисправной линии
b_flag=A; //режим обратного распространения от неподтвержденных линий
for(::) //основной цикл
{
импликация; //прямая и обратная
if(необходимо обратное распространение)
b_flag=B; // обработка разветвлений
if(значение D достигло внешнего выхода) {
if(число неподтвержденных линий==0) {
подтверждение свободных линий;
return(тест);
}
else{
конечная_цель();
присваивание значений линиям конечной цели;
}
}
else {
if(число элементов в D-границе >1) {
//выбор вентиля, ближайшего к выходу
конечная_цель();
присваивание значений линиям конечной цели;
}
else if(число вентилей в D-границе ==1)
одномерная активизация;
else { //число вентилей ==0
if (есть нерассмотренные варианты) {
установка нерассмотренного варианта;
b_flag=B;
}
else
return (нет теста);
}
}
}
}
конечная_цель()
{
mb = 0:
if(b_flag==A)
mb=Mback(A);
else if (множество целей разветвлений не пусто)
mb=Mback(A);
if (mb==D) {
конечная_цель=FPO; //узел разветвления
return;
}
for(;;)
{
if (множество головных целей пусто)
mb=Mback(A);
выбор головной цели;
if(головная линия не определена)
break;
}
головная цель= конечная цель;
}
Mback(flag)
{
if(flag==A) {
b_flag=0;
if (число неподтвержденных линий>0)
{Начальная цель} =неподтвержденные линии;
if(D-значение не достигло внешнего выхода)
добавить элемент в D-границе в начальные цели;
{текущая_цель}={начальная_цель};
if({текущая_цель} не пусто) {
выбор текущей цели;
следущая_цель();
}
else {
if (FPO ==пусто)
return(C);
else
flag=B;
}
}
if (flag==B) {
выбор узла разветвления, ближайшего к внешнему выходу;
if (p достижимо от неисправной линии) или ( (n_{0}==0) или (n_{1}==0) )
следующая_цель();
else
return(D):
}
}
следующая_цель()
{
if (текущая_цель==головная линия)
добавить текущую_цель в головные цели;
else if (текущая_цель питается узлом разветвления)
добавить n_{0} и n_{1} к FPO //согласно правилу 10 табл. 19.2
else // определить следующую цель
распространение назад согласно правилам табл. 19.2
}
Метод SOCRATES (structure-oriented cost-reducing automatic test
Рассмотрим сначала процедуру импликации на примере схемы рис. 19.9 [19.3].
(рис 19.9) Импликация в SOCRATES
Здесь входной сигнал $$A=1$$ (рис. 19.9а)) имплицирует 1 на выходах вентилей ИЛИ и И. С другой стороны, на рис. 19.9b) значение $$D=0$$ имплицирует значение $$A=0$$, что следует из тождества контрапозиции импликации $$(A\Rightarrow D)\Leftrightarrow (\thicksim D\Rightarrow \thicksim A)$$, где $$\thicksim$$ обозначает дополнение. Из этого следует, что если в процессе обратного распространения выходу вентиля И будет присвоено значение $$D=0$$, то отсюда вытекает значение входа $$A=0$$. Такая импликация, в свою очередь, может привести к раннему обнаружению конфликтов и сокращению числа возвратов при поиске решения.
Для распознавания таких ситуаций перед фазой генерации тестов выполняется фаза обучения. В процессе обучения значение 0 присваивается схеме $$n_{i}$$ с последующей импликацией и анализом результатов. Этот процесс повторяется для значения 1. Предположим, что в процессе импликации $$n_{i}$$ инициализируется значением $$v_i,v_i\in \{0,1\}$$ и схема $$n_{i}$$принимает значение $$v_j\in \{0,1\}$$ в результате выполнения импликации, то есть $$(значение(n_i)=v_i)\Rigtharrow(значение(n_j)=v_j)$$. Пусть $$n_{j}$$ управляется вентилем $$g$$. Таким образом, если: 1) $$v_j$$ требует, чтобы все входы $$g$$ имели неконтролирующие значения и 2) прямая импликация дает значение $$v_j$$ схеме $$n_{j}$$ , то импликация $$(значение(n_i)=\overline{v}_i)\Rigtharrow(значение(n_j)=\overline{v}_j)$$имеет место. Условие 1) удовлетворяется, если $$v_j$$ имеет значение 0(1) и $$g$$ является вентилем типа И/НЕ -И(ИЛИ/НЕ-ИЛИ) или исключающее ИЛИ. При этом дополнительная функция проверяет отсутствие прямого пути от $$n_{j}$$ к $$n_{i}$$ . Для комбинационной ранжированной схемы при $$j>i$$ эта функция дает значение 0. Это подтверждает выполнение условия 2). Возможно, что описанная выше процедура не всегда найдет все возможные импликации, но в целом затраты на этапе обучения окупаются за счет сокращения возвратов в поиске решения.
Уникальная активизация в методе
Определение 19.1. Говорят, что сигнал $$y$$ доминирует над сигналом $$x$$-$$y\in dom(x)$$, если все ориентированные пути от $$x$$ ко внешним выходам схемы проходят через $$y$$.
Пусть $$x$$ является единственным в $$D$$-границе и множество сигналов $$dom(x)=\{y_{1}, y_{2},…, y_{n}\}$$ - выходы сигналов соответствующих вентилей множества $$G=\{g_{1}, g_{2},…, g_{n}\}$$. Тогда для всех вентилей $$g\in G$$ неконтролирующие значения присваиваются всем входам $$g$$, которые могут быть достигнуты из $$x$$ любым путем. Это иллюстрируется на рис. 19.10.
(рис 19.10) Улучшенная одномерная активизация
Здесь выход вентиля $$a$$ имеет D-значение, который разветвляется на вентили $$b$$ и $$c$$, которые далее сходятся на вентиле $$g$$. Очевидно, в этой ситуации сигнал $$d$$ должен быть установлен в неконтролирующее значение $$d=1$$.
Определение 19.2. Сигнал $$y$$ называется непосредственным доминатором сигнала $$x$$, если $$y\in dom(x)$$ и $$y$$ является элементом $$dom(x)$$ с минимальным рангом схемы.
Если непосредственные доминаторы всех сигналов известны, то доминаторы любого сигнала могут быть определены рекурсивно. Например, если сигнал $$y$$ является непосредственным доминатором сигнала $$x$$, и сигнал $$z$$ является непосредственным доминатором $$y$$, то сигнал $$z$$ является доминатором $$x$$.
Предложено дополнительное правило для уникальной активизации, которое требуется для обработки ситуаций, представленных на рис. 19.11.
(рис 19.11) Уникальная активизация кратных путей
Предположим, что сигнал $$a$$ является единственным сигналом D-границы или доминатором такого единственного сигнала. Он разветвляется на три вентиля И, на вход которых поступает сигнал $$b$$. Кроме этого, один из И вентилей имеет третий вход c. Предположим, что сигнал $$a$$ - единственный сигнал в D-границе, или доминатор такого сигнала и разветвляется на вентили $$g_{1}, g_{2},…, g_{n}$$ , которые все требуют одинаковых неконтролирующих значений - 0 или 1. Если сигнал $$b$$ разветвляется на те же вентили $$g_{1}, g_{2},…, g_{n}$$ , то $$b$$ присваивается неконтролирующее значение.
Кратное обратное распространение в SOCRATES использует тот факт, что некоторые часто встречающиеся схемные конфигурации обрабатываются как примитивы (базовые элементы). Например, это относится к схемам, реализующим исключающее ИЛИ. Важнейшим свойством этого элемента является то, что активизированный путь на входе двухвходового элемента распространяется на его выход независимо от значения второго входа. Например, значения $$(D,0)$$ дают на выходе значение $$D$$, а $$(D,1)$$ соответственно - $$D'$$. Более того, при распространении через (НЕ) исключающее ИЛИ необходимо только следить за тем, чтобы входы имели определенные значения и не имели одновременно два $$D$$-значения. Это можно расширить на произвольное число входов элементов исключающее ИЛИ, которые SOCRATES также поддерживает.
Отметим, что метод PODEM не поддерживает исключающее ИЛИ (как примитив) в отличие от $$D$$-алгоритма, который имеет примитивные $$D$$-кубы для этого элемента.
| Формулы | Условия | |
|---|---|---|
| $$n_0(x_1)=n_0(y)$$ | $$n_0(x_2)=n_0(y)$$ | $$c_{00}< c_{11}$$ |
| $$n_1(x_1)=n_0(y)$$ | $$n_1(x_2)=n_0(y)$$ | $$c_{00}\ge c_{11}$$ |
| $$n_0(x_1)=n_0(x_1)+n_1(y)$$ | $$n_1(x_2)=n_0(x_2)+n_1(y)$$ | $$c_{01}< c_{10}$$ |
| $$n_1(x_1)=n_1(x_1)+n_1(y)$$ | $$n_0(x_2)=n_0(x_2)+n_1(y)$$ | $$c_{01}\ge c_{10}$$ |
В методе SOCRATES исключающее ИЛИ обрабатывается в соответствии с правилами, представленными в табл. 19.4. Здесь $$c_{ij}$$ представляют значения управляемости, которые отражают сложность установки $$x_{1}$$ в $$i$$ и $$x_{2}$$ в $$j$$ для $$i,j\in\{0,1\}$$, где $$x_{1}$$ и $$x_{2}$$ - входы для двухвходового вентиля исключающего ИЛИ и $$y$$ - его выход. Этот подход можно использовать и для других примитивов высокого уровня, для которых получены соответствующие формулы. Основное преимущество этих примитивов лежит в сокращении числа разветвлений (потенциальных конфликтов). Но иногда это можно реализовать и на вентильном уровне. Например, если двухвходовой мультиплексор имеет 1 на обоих входах данных, то выходу следует установить значение 1 даже при наличии неопределенного значения на управляющем входе.
D-распространение - распространение в схеме символов $$D$$, $$D'$$, характеризующих различие значений сигналов в исправной и неисправной схеме.
Обратное распространение (продвижение назад) - процедура поиска значений сигналов, обеспечивающих значения сигналов для элементов, находящихся ближе к выходам. Выполняется в обратном порядке: от выходов ко входам.
Прямая импликация - процедура снятия неопределённости на линиях схемы, выполняемая в прямом порядке от входов к выходам.
Обратная импликация - процедура снятия неопределённости на линиях схемы, выполняемая в обратном порядке от выходов ко входам.
В лекции продолжено рассмотрение задачи построения проверяющего теста для конкретной заданной неисправности с использованием 6-значного алфавита.
(рис 19.12) Схема для упражнения 7, 12
Чем отличается метод SOCRATES от метода
Как и D-алгоритм, метод PODEM (path-oriented decision making) использует тот же шестизначный алфавит $$T_{6}$$, но в нем применяется другая стратегия поиска тестового набора [19.1]. Отметим, что целью любого алгоритма построения теста для данной неисправности является входной двоичный вектор, который проверяет эту неисправность. Таким образом, искомый тест принадлежит пространству всевозможных двоичных входных наборов. Но пространством поиска в D-алгоритме является множество всевозможных (в том числе и кратных) $$2^{N}$$ путей в схеме от места неисправности до какого либо внешнего выхода, где $$N$$ - число элементов. В методе PODEM пространством поиска является непосредственно множество всевозможных входных наборов, мощность которого $$2^{n}$$ обычно меньше $$2^{N}$$, поскольку, как правило, $$n<N$$. Это позволяет существенно ускорить процесс поиска.
Основные отличия метода PODEM от D-алгоритма следующие:
D-распространение в методе РОДЕМ выполняется пошагово. В D-границе выбирается в качестве "цели" наиболее перспективный элемент (ближайший к внешнему выходу или имеющий лучший показатель наблюдаемости) и затем сразу с помощью других процедур (в первую очередь процедуры продвижения назад) находится входной набор, обеспечивающий достижение поставленной локальной цели - D-распространения через данный элемент. Напомним, что в D-алгоритме D-распространение выполняется до внешнего выхода, а затем производится доопределение.
Алгоритм выбора цели для константной неисправности вентиля $$i\equiv v$$ представлен псевдокодом рис. 19.1.
(рис 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) Алгоритм PODEM
В качестве примера рассмотрим построение теста для неисправности
$$a\equiv 1$$ в схеме рис. 19.4. В табл. 19.1 показаны результаты основных этапов генерации теста для этой неисправности. Здесь для каждого этапа приведены значения
(рис 19.4) Схема для иллюстрации метода PODEM
(рис 19.5) Дерево решений при поиске теста методом PODEM
| Цель | Внешние входы | Импликация | 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-алгоритм и доказал свою эффективность для больших комбинационных ДУ (объемом до нескольких десятков тысяч вентилей).
Идеи, заложенные в этом методе, получили развитие в алгоритме "
Более эффективные процедуры продвижения назад и перебора позволяют уменьшить количество возвратов при поиске теста и тем самым уменьшить время генерации теста.
Выполнение импликации в обоих направлениях позволяет в некоторых случаях раньше обнаруживать конфликтные ситуации и, что еще более важно избыточные неисправности. Отметим, что многие алгоритмы генерации тестов тратят большие вычислительные ресурсы на избыточные неисправности (для которых нельзя построить тестовый набор). Поскольку задача построения теста носит переборный характер, то в худшем случае потребуется рассмотреть всевозможные значения входных переменных. Если схема имеет достаточно много избыточных неисправностей, то система генерации тестов может более половины времени работать на построение тестов, которые не существуют. Поэтому избыточные неисправности желательно находить как можно быстрее.
Процедура кратного продвижения назад по нескольким путям позволяет методу
В том случае, когда $$D$$-граница содержит один элемент, в методе
(рис 19.6) Пример схемы для активизации в FAN
для которой необходимо построить тест для неисправности coinst1 входа вентиля G. Влияние неисправности должно распространяться через мультиплексор и вентиль H. Для распространения через вентиль H его верхнему входу необходимо присвоить значение 1. Но из процедуры активизации в месте неисправности следует, что этот вход устанавливается в блокирующее значение 0. Поэтому для обнаружения подобных ситуаций в методе
На этапе препроцессорной обработки схема разбивается на одновыходные древовидные подсхемы, которые не содержат сходящихся разветвлений. Очевидно, внутри таких подсхем продвижение назад выполняется без конфликтов и может остановиться на линиях, которые являются выходами предыдущих подсхем без разветвлений. После того, как в процессе продвижения назад внутри подсхемы некоторые линии получили определенно значение, можно выполнить процедуру подтверждения этих значений. Рассмотрим узел разветвления $$J$$ на рис. 19.7 [19.3] c ветвями $$J_{1}$$ и $$J_{2}$$ .
(рис 19.7) Пример схемы, содержащей древовидную подсхему
Здесь вентили $$G$$ и $$J$$ являются выходами древовидных подсхем (иногда их называют головными - head). Если существует путь от узла разветвления вперед (по направлению к выходам) до схемы $$P$$, то схема называется граничной (bound). Схемы, которые не являются граничными, называются свободными. Для нашего примера схемы $$A,B,C,D,E,F,G,H,J$$ являются граничными, в то время как схемы $$J_{1}$$, $$J_{2}$$, $$K$$ и $$L$$ представляют свободные схемы. Свободные схемы, которые непосредственно питают граничные cхемы (как в случае разветвления $$J$$) или через логические элементы (случай $$G$$) являются головными (head). Они определяют границу между свободными и граничными линиями.
Как и предыдущий метод
Для того, чтобы сохранить полученные значения в процессе продвижения назад и разрешить конфликтные ситуации,
При продвижении назад через логический элемент логические значения его входов зависят от значения на выходе и типа вентиля. Для И/НЕ-И вентилей 1/0 на выходе ведет к присвоению 1 на всех его входах. Соответственно для вентилей ИЛИ/НЕ-ИЛИ 0/1 на выходе ведет к необходимости присвоения значений 0 всем его входам. Кроме этого, если вентиль инвертирующего типа, то значения $$n_{0}(s)$$ и $$n_{1}(s)$$ в триплете меняются местами. Например, для вентиля НЕ-ИЛИ с триплетом $$(Z,u,v)$$ на выходе его входам присваивается триплет $$(Z,v,u)$$, если значение 1 требуется на выходе.
Если входу вентиля необходимо присвоить контролирующее значение (0 для И или НЕ-И, 1 для ИЛИ или НЕ-ИЛИ), то при продвижении назад через логический элемент выбирается как и в методе PODEM выбирается вход, имеющий лучшую управляемость. Предположим, что вентиль имеет входы $$X_{1},…,X_{n}$$ и выход $$Y$$ и без потери общности вход $$X_{1} $$имеет лучший показатель управляемости. Тогда при продвижении назад через логический элемент значения $$n_{0}(s)$$, $$n_{1}(s)$$ для его входов можно найти (по заданным значения выхода $$n_{0}(s)$$, $$n_{1}(s)$$) согласно правилам, приведенным в табл. 19.2 [19.3].
| N п/п | Функция | 0-счетчик | 1-счетчик | Управляемость |
|---|---|---|---|---|
| 1 | И | $$n_0(X_1)=n_0(Y)$$ | $$n_1(X_1)=n_1(Y)$$ | легкий 0 |
| 2 | И | $$n_0(X_i)=0$$ | $$n_1(X_i)=n_1(Y) $$ | остальные |
| 3 | НЕ-И | $$n_0(X_1)=n_1(Y)$$ | $$n_1(X_1)=n_0(Y) $$ | легкий 0 |
| 4 | НЕ-И | $$n_0(X_i)=0$$ | $$n_1(X_i)=n_0(Y) $$ | остальные |
| 5 | ИЛИ | $$n_0(X_1)=n_0(Y)$$ | $$n_1(X_1)=n_1(Y) $$ | Легкая 1 |
| 6 | ИЛИ | $$n_0(X_i)=n_0(Y) $$ | $$n_1(X_i)=0$$ | остальные |
| 7 | НЕ-ИЛИ | $$n_0(X_1)=n_1(Y)$$ | $$n_0(X_1)=n_0(Y) $$ | Легкая 1 |
| 8 | НЕ-ИЛИ | $$n_0(X_i)=n_1(Y)$$ | $$n_1(X_i)=0$$ | остальные |
| 9 | НЕ | $$n_0(X)=n_1(Y)$$ | $$n_1(X)=n0(Y) $$ | |
| 10 | разветвление | $$n_0(X)=\sum\limts_{i=1}^k{n_0(X_i)} $$ | $$n_1(X)=\sum\limts_{i=1}^k{n_1(X_i)} $$ |
Рассмотрим для примера распространение назад триплета через вентиль И. Если на выходе этого вентиля необходимо установить 0, то очевидно хотя бы один из его входов надо установить в 0. В методе
Применение этих правил рассмотрим на примере схемы 19.8 [19.3].
(рис 19.8) Пример вычислений n0(s), n1(s) при обратном распространении
Предположим, что в процессе обратного распространения на ветвях разветвления получились значения $$(J_{1},1,1)$$ и $$(J_{2},1,2)$$. Поскольку оба значения $$n_{0}(J_{1})$$ и $$n_{1}(J_{1})$$ для ветви $$J_{1}$$ ненулевые (как и для второй ветви $$J_{2}$$), то имеет место конфликтная ситуация - не ясно, какое значение надо присвоить для разветвления $$J$$. Поскольку нулевое значение имеет вес 2, а единичное - вес 3, то мы выбираем для $$J $$значение 1 с большим весом. Так как сложилась конфликтная ситуация, то кратное продвижение назад в этом месте прекращается и необходимо разрешить конфликт путем возврата к точке последнего выбора и присвоения альтернативного значения. Если на узле разветвления невозможно найти согласованные значения, то неисправность является избыточной.
Рассмотрим работу метода
| Текущие цели | Стем цели | Голова цели |
|---|---|---|
| $$(R,0,1), (T,1,0), (U,1,0)$$ | ||
| $$(T,1,0), (U,1,0), (N,0,1)$$ | ||
| $$(U,1,0), (N,0,1)$$ | $$(S,1,0)$$ | |
| $$(N,0,1)$$ | $$(S,2,0)$$ | |
| $$(S,2,0), (M,0,1)$$ | ||
| $$(P,0,2), (Q,0,2)$$ | $$(M,0,1)$$ | |
| $$(Q,0,2)$$ | $$(M,0,3)$$ | |
| $$(L,0,2)$$ | $$(M,0,3)$$ | |
| $$(J,2,0)$$ | $$(M,0,3)$$ | |
| $$(G,2,0)$$ | ||
| $$(K,3,0)$$ | $$(G,2,0)$$ | |
| $$(H,0,3)$$ | $$(G,2,0)$$ | |
| $$(G,2,3)$$ | ||
| $$(F,0,2)$$ | $$(G,2,3)$$ |
В заключение рассмотрим укрупненный алгоритм метода
Входной параметр
Значение $$B$$ входного параметра процедуры MBack используется, если множество текущих целей пусто. В этом случае узел разветвления
При инициализации признак $$b_flag$$ устанавливается в 1, если по окончании фазы импликации остались неподтвержденные значения в схеме. В этой точке все множества целей инициализируются (присваивается пустое множество) и производится сброс флага $$b_flag$$.
Если есть неподтвержденные линии, то они образуют множество начальных целей $$\{IO\}$$. Если $$D$$-значение не достигает внешнего выхода, элемент из $$D$$-границы добавляется в $$\{IO\}$$. Как уже отмечалось
FAN() / / аргументы -номер элемента и линии с константной неисправностью
{
инициализация неисправности; // присваивание D или D' неисправной линии
b_flag=A; //режим обратного распространения от неподтвержденных линий
for(::) //основной цикл
{
импликация; //прямая и обратная
if(необходимо обратное распространение)
b_flag=B; // обработка разветвлений
if(значение D достигло внешнего выхода) {
if(число неподтвержденных линий==0) {
подтверждение свободных линий;
return(тест);
}
else{
конечная_цель();
присваивание значений линиям конечной цели;
}
}
else {
if(число элементов в D-границе >1) {
//выбор вентиля, ближайшего к выходу
конечная_цель();
присваивание значений линиям конечной цели;
}
else if(число вентилей в D-границе ==1)
одномерная активизация;
else { //число вентилей ==0
if (есть нерассмотренные варианты) {
установка нерассмотренного варианта;
b_flag=B;
}
else
return (нет теста);
}
}
}
}
конечная_цель()
{
mb = 0:
if(b_flag==A)
mb=Mback(A);
else if (множество целей разветвлений не пусто)
mb=Mback(A);
if (mb==D) {
конечная_цель=FPO; //узел разветвления
return;
}
for(;;)
{
if (множество головных целей пусто)
mb=Mback(A);
выбор головной цели;
if(головная линия не определена)
break;
}
головная цель= конечная цель;
}
Mback(flag)
{
if(flag==A) {
b_flag=0;
if (число неподтвержденных линий>0)
{Начальная цель} =неподтвержденные линии;
if(D-значение не достигло внешнего выхода)
добавить элемент в D-границе в начальные цели;
{текущая_цель}={начальная_цель};
if({текущая_цель} не пусто) {
выбор текущей цели;
следущая_цель();
}
else {
if (FPO ==пусто)
return(C);
else
flag=B;
}
}
if (flag==B) {
выбор узла разветвления, ближайшего к внешнему выходу;
if (p достижимо от неисправной линии) или ( (n_{0}==0) или (n_{1}==0) )
следующая_цель();
else
return(D):
}
}
следующая_цель()
{
if (текущая_цель==головная линия)
добавить текущую_цель в головные цели;
else if (текущая_цель питается узлом разветвления)
добавить n_{0} и n_{1} к FPO //согласно правилу 10 табл. 19.2
else // определить следующую цель
распространение назад согласно правилам табл. 19.2
}
Метод SOCRATES (structure-oriented cost-reducing automatic test
Рассмотрим сначала процедуру импликации на примере схемы рис. 19.9 [19.3].
(рис 19.9) Импликация в SOCRATES
Здесь входной сигнал $$A=1$$ (рис. 19.9а)) имплицирует 1 на выходах вентилей ИЛИ и И. С другой стороны, на рис. 19.9b) значение $$D=0$$ имплицирует значение $$A=0$$, что следует из тождества контрапозиции импликации $$(A\Rightarrow D)\Leftrightarrow (\thicksim D\Rightarrow \thicksim A)$$, где $$\thicksim$$ обозначает дополнение. Из этого следует, что если в процессе обратного распространения выходу вентиля И будет присвоено значение $$D=0$$, то отсюда вытекает значение входа $$A=0$$. Такая импликация, в свою очередь, может привести к раннему обнаружению конфликтов и сокращению числа возвратов при поиске решения.
Для распознавания таких ситуаций перед фазой генерации тестов выполняется фаза обучения. В процессе обучения значение 0 присваивается схеме $$n_{i}$$ с последующей импликацией и анализом результатов. Этот процесс повторяется для значения 1. Предположим, что в процессе импликации $$n_{i}$$ инициализируется значением $$v_i,v_i\in \{0,1\}$$ и схема $$n_{i}$$принимает значение $$v_j\in \{0,1\}$$ в результате выполнения импликации, то есть $$(значение(n_i)=v_i)\Rigtharrow(значение(n_j)=v_j)$$. Пусть $$n_{j}$$ управляется вентилем $$g$$. Таким образом, если: 1) $$v_j$$ требует, чтобы все входы $$g$$ имели неконтролирующие значения и 2) прямая импликация дает значение $$v_j$$ схеме $$n_{j}$$ , то импликация $$(значение(n_i)=\overline{v}_i)\Rigtharrow(значение(n_j)=\overline{v}_j)$$имеет место. Условие 1) удовлетворяется, если $$v_j$$ имеет значение 0(1) и $$g$$ является вентилем типа И/НЕ -И(ИЛИ/НЕ-ИЛИ) или исключающее ИЛИ. При этом дополнительная функция проверяет отсутствие прямого пути от $$n_{j}$$ к $$n_{i}$$ . Для комбинационной ранжированной схемы при $$j>i$$ эта функция дает значение 0. Это подтверждает выполнение условия 2). Возможно, что описанная выше процедура не всегда найдет все возможные импликации, но в целом затраты на этапе обучения окупаются за счет сокращения возвратов в поиске решения.
Уникальная активизация в методе
Определение 19.1. Говорят, что сигнал $$y$$ доминирует над сигналом $$x$$-$$y\in dom(x)$$, если все ориентированные пути от $$x$$ ко внешним выходам схемы проходят через $$y$$.
Пусть $$x$$ является единственным в $$D$$-границе и множество сигналов $$dom(x)=\{y_{1}, y_{2},…, y_{n}\}$$ - выходы сигналов соответствующих вентилей множества $$G=\{g_{1}, g_{2},…, g_{n}\}$$. Тогда для всех вентилей $$g\in G$$ неконтролирующие значения присваиваются всем входам $$g$$, которые могут быть достигнуты из $$x$$ любым путем. Это иллюстрируется на рис. 19.10.
(рис 19.10) Улучшенная одномерная активизация
Здесь выход вентиля $$a$$ имеет D-значение, который разветвляется на вентили $$b$$ и $$c$$, которые далее сходятся на вентиле $$g$$. Очевидно, в этой ситуации сигнал $$d$$ должен быть установлен в неконтролирующее значение $$d=1$$.
Определение 19.2. Сигнал $$y$$ называется непосредственным доминатором сигнала $$x$$, если $$y\in dom(x)$$ и $$y$$ является элементом $$dom(x)$$ с минимальным рангом схемы.
Если непосредственные доминаторы всех сигналов известны, то доминаторы любого сигнала могут быть определены рекурсивно. Например, если сигнал $$y$$ является непосредственным доминатором сигнала $$x$$, и сигнал $$z$$ является непосредственным доминатором $$y$$, то сигнал $$z$$ является доминатором $$x$$.
Предложено дополнительное правило для уникальной активизации, которое требуется для обработки ситуаций, представленных на рис. 19.11.
(рис 19.11) Уникальная активизация кратных путей
Предположим, что сигнал $$a$$ является единственным сигналом D-границы или доминатором такого единственного сигнала. Он разветвляется на три вентиля И, на вход которых поступает сигнал $$b$$. Кроме этого, один из И вентилей имеет третий вход c. Предположим, что сигнал $$a$$ - единственный сигнал в D-границе, или доминатор такого сигнала и разветвляется на вентили $$g_{1}, g_{2},…, g_{n}$$ , которые все требуют одинаковых неконтролирующих значений - 0 или 1. Если сигнал $$b$$ разветвляется на те же вентили $$g_{1}, g_{2},…, g_{n}$$ , то $$b$$ присваивается неконтролирующее значение.
Кратное обратное распространение в SOCRATES использует тот факт, что некоторые часто встречающиеся схемные конфигурации обрабатываются как примитивы (базовые элементы). Например, это относится к схемам, реализующим исключающее ИЛИ. Важнейшим свойством этого элемента является то, что активизированный путь на входе двухвходового элемента распространяется на его выход независимо от значения второго входа. Например, значения $$(D,0)$$ дают на выходе значение $$D$$, а $$(D,1)$$ соответственно - $$D'$$. Более того, при распространении через (НЕ) исключающее ИЛИ необходимо только следить за тем, чтобы входы имели определенные значения и не имели одновременно два $$D$$-значения. Это можно расширить на произвольное число входов элементов исключающее ИЛИ, которые SOCRATES также поддерживает.
Отметим, что метод PODEM не поддерживает исключающее ИЛИ (как примитив) в отличие от $$D$$-алгоритма, который имеет примитивные $$D$$-кубы для этого элемента.
| Формулы | Условия | |
|---|---|---|
| $$n_0(x_1)=n_0(y)$$ | $$n_0(x_2)=n_0(y)$$ | $$c_{00}< c_{11}$$ |
| $$n_1(x_1)=n_0(y)$$ | $$n_1(x_2)=n_0(y)$$ | $$c_{00}\ge c_{11}$$ |
| $$n_0(x_1)=n_0(x_1)+n_1(y)$$ | $$n_1(x_2)=n_0(x_2)+n_1(y)$$ | $$c_{01}< c_{10}$$ |
| $$n_1(x_1)=n_1(x_1)+n_1(y)$$ | $$n_0(x_2)=n_0(x_2)+n_1(y)$$ | $$c_{01}\ge c_{10}$$ |
В методе SOCRATES исключающее ИЛИ обрабатывается в соответствии с правилами, представленными в табл. 19.4. Здесь $$c_{ij}$$ представляют значения управляемости, которые отражают сложность установки $$x_{1}$$ в $$i$$ и $$x_{2}$$ в $$j$$ для $$i,j\in\{0,1\}$$, где $$x_{1}$$ и $$x_{2}$$ - входы для двухвходового вентиля исключающего ИЛИ и $$y$$ - его выход. Этот подход можно использовать и для других примитивов высокого уровня, для которых получены соответствующие формулы. Основное преимущество этих примитивов лежит в сокращении числа разветвлений (потенциальных конфликтов). Но иногда это можно реализовать и на вентильном уровне. Например, если двухвходовой мультиплексор имеет 1 на обоих входах данных, то выходу следует установить значение 1 даже при наличии неопределенного значения на управляющем входе.
D-распространение - распространение в схеме символов $$D$$, $$D'$$, характеризующих различие значений сигналов в исправной и неисправной схеме.
Обратное распространение (продвижение назад) - процедура поиска значений сигналов, обеспечивающих значения сигналов для элементов, находящихся ближе к выходам. Выполняется в обратном порядке: от выходов ко входам.
Прямая импликация - процедура снятия неопределённости на линиях схемы, выполняемая в прямом порядке от входов к выходам.
Обратная импликация - процедура снятия неопределённости на линиях схемы, выполняемая в обратном порядке от выходов ко входам.
В лекции продолжено рассмотрение задачи построения проверяющего теста для конкретной заданной неисправности с использованием 6-значного алфавита.
(рис 19.12) Схема для упражнения 7, 12
Чем отличается метод SOCRATES от метода
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.