С.И. Родзин
Введение
Затраты на синтез теста интегральных схем приближенно оцениваются соотношением W=k*Va , где 1.5<а<2.5, V - число вентилей схемы, k - коэффициент, зависящий от структуры проектируемой схемы. В сравнении с началом 70-х годов число вентилей выросло почти на четыре порядка, что означает рост затрат W на синтез теста, примерно, на восемь порядков! Необъяснимым остается вопрос, как вообще тестируется СБИС в ходе эксплуатации? Между тем решение проблемы вытекает непосредственно из приведенного выше соотношения. Поскольку в будущем вряд ли следует ожидать уменьшения степени интеграции СБИС, то сокращение затрат на тестирование можно достигнуть лишь через структуру проектируемой схемы. Это обстоятельство является фундаментом для развития работ в области проектирования самотестируемых СБИС. Причем термин самотестирование здесь употребляется применительно к СБИС, на кристалле которых размещаются средства генерации теста, сигнатурного анализа результатов и управления тестом [1].
1. Постановка задачи
В данной работе предлагается метод функционального проектирования самотестируемых СБИС. Идея метода состоит в том, что для синтеза теста используется внутренняя логика проектируемой схемы, которая управляет генератором теста (ГТ), работая в цепи обратной связи ГТ, что позволяет значительно сократить аппаратные затраты на проектирование ГТ. Эти затраты определяются прежде всего числом используемых в ГТ триггеров. И хотя, как известно, минимальное число состояний не обязательно приводит к уменьшению затрат при реализации схемы, однако предлагаемый метод проектирования ГТ направлен на минимизацию числа состояний и реализацию ГТ с возможно меньшим числом триггеров. Кроме того для синтеза теста при необходимости может привлекаться сигнатурный регистр(СР),что позволяет дополнительно сократить число элементов памяти. В этом случае при проектировании может оказаться, что ГТ либо вообще не содержит триггеров, либо содержит небольшое их число, а это упрощает кодирование состояний. Отметим также, что подобного рода подход к самотестированию позволяет через СР наблюдать состояние элементов памяти проектируемой схемы, при этом не требуется разрывать их обратные связи, что, в свою очередь, приводит к сокращению общей длины теста[2].
Таким образом, цель метода состоит в том, чтобы проектируемая схема тестировалась в своем рабочем состоянии, то есть чтобы функции схемы во время теста не изменялись. Поэтому сокращение числа состояний относится только к ГТ.
Для достижения поставленной цели предлагается решить во взаимосвязи две следующие задачи:
Синтез тестовой последовательности входных векторов для обнаружения заданного класса неисправностей проектируемой схемы, имея в виду подходящую реализацию ГТ и, используя для синтеза теста внутреннюю логику проектируемой схемы;
Проектирование ГТ на кристалле.
В качестве заданного класса неисправностей наряду с одиночными константными неисправностями на внешних и внутренних контактах схемы рассматривается также неисправности характерные для КМОП-схем, которые могут приводит к секвенциальным отношениям в проектируемой схеме[3].
Для определения тестовой последовательности проводится трансформация последовательной схемы в виртуальную комбинационную схему. С этой целью триггеры заменяются проводящими элементами, имеющими нулевую задержку и служащими для запоминания информации; обратные связи мысленно обрываются. В качестве метода получения тестовых наборов для виртуальной комбинационной схемы можно, например, применить D-алгоритм либо его модификации. При этом разрешается образовывать не полностью определенные тестовые векторы следующего вида: T={ (x,z)1,(x,z)2,...,(x,z)q }, где x - входные наборы, z - состояния схемы. Ясно, что для различных начальных состояний могут быть получены различные тестовые последовательности. Возникает вопрос: какая из последовательностей является наиболее подходящей для аппаратной реализации ГТ? Ответ на этот вопрос потребовал проведения дальнейших исследований по установлению взаимосвязи между реализацией ГТ и синтезированным тестом. В частности, удалось доказать, что число внутренних состояний ГТ зависит от числа переходов состояний d (d - это максимальное число всех переходов состояний во время прохода теста из заданного состояния, включая и повторяющиеся переходы), причем минимальное число триггеров для реализации ГТ равно [log2d]. Требования минимизации длины теста и минимизации числа триггеров ГТ не могут выполняться одновременно. Необходим компромисс. Современные СБИС работают с высокой тактовой частотой, что делает параметр длины теста некритичным и позволяет существенно снижать аппаратные затраты при проектировании ГТ для самотестируемых СБИС.
2. Алгоритм проектирования генератора теста
Проведенное исследование зависимости между реализацией ГТ и синтезируемой тестовой последовательностью позволяет сформулировать следующую процедуру проектирования ГТ:
– синтез тестовой последовательности, которая обеспечивает проверку всех неисправностей заданного класса и для которой величина d является минимальной (если существует несколько таких последовательностей, то выбирается наиболее короткая из них);
– проектирование ГТ с минимальным числом триггеров таким образом, что СБИС образует вместе с ГТ самотестируемую схему.
Рассмотрим подробнее алгоритм синтеза теста с помощью ГТ. Пусть заданно множество не полностью определенных тестовых векторов T в виде пар входов и состояний. Предлагается следующий алгоритм синтеза оптимальной по отношению к величине d тестовой последовательности для самотестируемой схемы, состоящей из ГТ и проектируемой схемы.
Алгоритм
Начало.
Выбираем начальное состояние в искомой тестовой последовательности {xF, zF}={(x1,z1), (x2,z2)...}, где функция перехода состояний определяется обычным автоматным отношение zt+1=Fz(xt,zt), t – момент времени. Образуем множество L1={z1}.
Полагаем i:=1.
Поиск в множестве T не полностью определенных пар(x,z)j таких, которые покрывают все вектора z уже принадлежащие множеству Li. Переход к п. 5. В противном случае , переход к п. 4.
Образуем с помощью функции перехода состояний Fz множество Li+1, содержащее все те состояния , которые достигаются из состояний zeLi. Полагаем i:=i+1 и переходим к п. 3.
Образуем из Li множество Li+1, содержащее все состояния установленные в п.3 парами (x,y)j. Состояния, включенные в L1,...,Li, описывают часть последовательности (z1,...zi+1)j,z1eL1,...,zi+1eLi+1, удовлетворяющей отношению zt+1=Fz(xt,zt), и поэтому они могут прибавляться к искомой последовательности zF.
Подсчитываем частоту вхождения каждого из состояний в последовательность zF и в прибавляемую часть последовательности (z1,...,zi+1)j, а также определяем для каждого состояния величину d.
Прибавляем к последовательности zFте части последовательностей, установленных в п.п.2-5 алгоритма, которые имеют минимальное значение d. Удаляем из zF состояния, которые покрываются парами из исходного множества T. Если существует несколько последовательностей с одинаковой минимальной величиной d, то выбираем любую из них.
Образуем новое множество L1, в которое входит последнее из включенных в zF состояний. Если в множестве T остались непомеченные пары, то переход к п.2, в противном случае, переход к п.9.
Конец.
Результирующая последовательность {xF,zF} является тестом для проектируемой схемы.
Необходимо также отметить, что вместо случайного выбора последовательностей с минимальным d в п.7 алгоритма можно, например, набирать из T вектора с меньшим числом неопределенных состояний.
Исследуем оценку сложности приведенного алгоритма в зависимости от числа q пар, содержащихся в множестве T. Так при поиске пар (x,z) в п.3 алгоритма требуется выполнить q операций сравнения. Если покрытие не получается, то идет перепроверка состояний из множества L2.
Если обозначить мощность множества входных векторов X через M, то L2 содержит максимум M элементов, L3-M2 и т.д. В общем случае, считаем, что множество Li содержит максимум Mi-1 элементов. Чтобы прибавить вектор z пары (x,z)jeT, требуется выполнить максимум q*Mi-1 операций сравнения, исходя из некоторого начального состояния. Прибавление в дальнейшем потребует не более, чем (q-1)*Mi-1 операций сравнения. Для определения последовательности, содержащей все q векторов из T, необходимо q-раз выполнить цикл п.п.2-7 алгоритма. Следовательно, общая оценка сложности алгоритма имеет порядок O(q2). Множество T при этом является исходным для работы алгоритма. Сомножитель Mi-1 зависит от функций, реализуемых проектируемой схемой, и от исходного множества пар тестовых векторов T. Общая оценка Mi-1 в этой связи затруднительна.
Выше отмечалось, что аппаратные затраты на реализацию ГТ можно сокращать и дальше, если использовать для синтеза теста не только внутреннюю логику проектируемой схемы, но и СР. Чтобы решить эту задачу вполне достаточно установленной ранее взаимосвязи между реализацией ГТ и синтезируемым тестом. Там триггер был необходим всегда, если тестовый вектор на входах проектируемой схемы не определялся однозначно различными состояниями. В связи с тем, что нет принципиальной разницы в том находится ли этот триггер в ГТ или же в СР, можно сократить число триггеров в ГТ путем использования СР для синтеза теста. При этом однако возникает вопрос: не приводит ли использование СР для синтеза теста к ограничению его способности выполнять свою основную функцию - сигнатурную оценку результатов тестирования? Чтобы ответить на это вопрос, приведем следующие рассуждения. До тех пор, пока неисправность не приводит к искажению последовательности состояний в СР и проектируемой схеме, самотестируемая СБИС выполняет синтезированную входную последовательность xF. Если некоторая неисправность приводит к искажению xF, то это с большой вероятностью ведет к искажению состояния СР и входной последовательности проектируемой схемы (напомним, что на входы проектируемой схемы подаются выходные сигналы ГТ). Между тем, известно, что вероятность маскирования неисправностей в СР при удачном выборе функций обратной связи СР является величиной независимой от числа этих искажений. В этой связи весьма проблематично ожидать каких-то ограничений в способности СР проводить оценку результатов тестирования.