ТЕХНИЧЕСКИЕ НАУКИ
УДК: 519.715
Голубева О. И.
к.т.н., доцент Томский государственный университет
ТРОИЧНОЕ МОДЕЛИРОВАНИЕ ПОСЛЕДОВАТЕЛЬНОСТНОЙ СХЕМЫ И ПОСТРОЕНИЕ НА ЕГО ОСНОВЕ ВХОДНЫХ ПОСЛЕДОВАТЕЛЬНОСТЕЙ, ОБЕСПЕЧИВАЮЩИХ ЗАДАННЫЕ ПЕРЕХОДЫ СХЕМЫ
Рассматривается метод точного троичного моделирования синхронных последовательностных схем. Моделирование выполняется с использованием ROBDD функций переходов в состояния схемы. Функции переходов в состояния схемы строятся путем перемножения функций переходов или их инверсий в соответствии с кодами состояний схемы. В работе модифицируется ранее предложенный метод троичного моделирования последовательностной схемы с целью дальнейшего сокращения вычислительных затрат. Предлагается метод построения последовательности входных векторов минимальной длины, обеспечивающей переход из некоторого состояния одного множества состояний схемы в одно из состояний другого множества, на основе представленных методов и свойств. Кроме того, рассмотрено построение потокового графа схемы. Также приводятся алгоритмы решения других задач для последовательностной схемы, использующие представленные методы и свойства.
Ключевые слова: троичное моделирование, синхронная последовательностная схема, ROBDD графы, переходная последовательность, потоковый граф схемы, достижимые состояния схемы.
Golubeva Olga I.
Ph.D., Associate Professor Tomsk State University
THREE-VALUE SIMULATION OF THE SEQUENTIAL CIRCUIT AND THE CONSTRUCTION ON ITS BASIS OF TRANSITION SEQUENCES
The method of the exact three-value simulation of synchronous sequential circuits is considered. The simulation is performed using the ROBDD of transition functions to the states of the circuit. The transition functions to the states of the circuit are constructed by multiplying the transition functions or their inversions in accordance with the codes of states of the circuit. In the work the previously proposed method of three-value simulation of sequential circuit is modified to further reduce the computational costs. The method of the construction of the input sequence of minimum length providing the transition from a state of one set of sates of the sequential circuit to one of the states of another set of states based on the presented methods and properties is proposed. The construction of the control-flow graph of the circuit is considered. In addition, algorithms for solving other tasks for the sequential circuit using presented methods and properties are considered.
Key words: three-value simulation, sequential circuits, ROBDD, transition sequence, control-flow graph, reachable states of the circuit.
Троичное моделирование логических схем может быть использовано при решении различных проблем диагностирования [1, 2].
Обозначим символом х неопределенное значение из множества {0, 1}. Вектор а = (ао,...,аи), компоненты которого принимают свои значения из множества {0, 1, х}, будем называть троичным вектором. Троичный вектор а = (ао,...,аи) задает интервал Ы(а) в булевом пространстве размерности п в который входят те и только те булевы векторы размерности п, которые могут быть получены из вектора а заменой символов х на 0 или 1. Будем говорить, что троичный вектор а представляет множество булевых векторов Ы(а).
а) б) в)
Рисунок 1. — Троичное значение функции / на векторе а: а) 1, б) 0, в) х
Поясним понятие точного троичного значения булевой функции / на троичном векторе а. На рисунке 1 прямоугольником представлено булево пространство размерности п. Оно разделено на область единичных — М{, и нулевых — М^ , значений функции /. Интервал Ы(а) может лежать полностью в области единичных (нулевых) значений, как на рисунке 1а (1б), в этом случае точным значением функции / на троичном векторе а является значение 1(0) или же может пересекаться с обеими областями, как на рисунке 1в, тогда значение функции / на троичном векторе а - х.
Троичное моделирование схемы является точным, если при моделировании вычисляются точные значения булевых функций, реализуемых выходами (псевдовыходами) схемы, на входном троичном векторе (на входной троичной последовательности). При неточном троичном моделировании схемы вместо определенного значения 1 или 0 на выходе (псевдовыходе) может быть получено неопределенное значение х.
Будем называть псевдовыходами синхронной последовательностной схемы входы триггеров, а псевдовходами схемы — выходы триггеров.
В данной работе выполняется дальнейшее исследование метода точного троичного моделирования синхронной последовательностной схемы на входных последовательностях произвольной длины, основанного на ЯОБВВ представлении функций переходов-выходов, представленного в работах [1, 2]. Этот метод является переложением на ЯОВОБ представления функций метода, предложенного в работах [3, 4] и основанного на представлении функций переходов-выходов в виде ДНФ. В этих методах моделирование выполняется с использование функций переходов в состояния схемы. Кроме того, в данной работе исследуются возможности применения предложенного метода троичного моделирования для решения различных задач для синхронных последовательностных схем. Здесь рассматриваются решения задач с применением метода моделирования, основанного на ЯОБВБ представлении функций. Заметим, что они могут быть переложены и на метод, использующий ДНФ представление функций.
Итак, в данной работе:
1) модифицируются ранее предложенные процедуры троичного моделирования функций переходов схемы с целью дальнейшего сокращения вычислительных затрат;
2) подробно рассмотрено построение потокового графа схемы и получение его матрицы смежности;
3) предлагается метод построения последовательности входных векторов минимальной длины, обеспечивающей переход из некоторого состояния одного множества состояний схемы в одно из состояний другого множества;
4) приводятся решения нескольких задач для последовательностной схемы на основе представленных методов и свойств.
Задача построения последовательности входных векторов минимальной длины, обеспечивающей переход из некоторого состояния одного множества состояний схемы в одно из состояний другого множества, решается, в частности, при определении Trojan Circuits [5, 6].
В работе [6] предлагается метод решения задачи, основанный на перемножении ROBDD функций переходов схемы, с целью получения ROBDD, представляющего всевозможные переходы в заданное множество состояний. В данной работе основные вычислительные затраты приходятся на построение функций переходов в состояния схемы. Получив их, можно решить не только рассмотренную задачу для заданного множества состояний, а различные задачи для последовательностной схемы и, например, построить различные входные последовательности, выполнить троичное моделирование и т.д. с относительно небольшими вычислительными затратами.
В данной работе рассматриваются только задачи, связанные с троичным моделированием функций переходов схемы, поэтому далее будем рассматривать только функции переходов и их моделирование. Моделирование функций выходов рассмотрено в статьях [1, 2].
Далее сначала представлен метод точного троичного моделирования функции переходов схемы, а затем рассмотрено решение задач с его применением.
Рассмотрим синхронную последовательностью схему с n входами, m выходами и p линиями обратных связей. X = {x1, ..., xn} — множество входных переменных схемы, Y = {y1, ..., ym} — множество ее выходных переменных, Z = {z1, ..., zp} — множество внутренних переменных схемы.
Система функций переходов схемы имеет вид:
z = Wj(xh zb zp\ j = 1,p. (i)
Пусть Q = {qi,...,qt} — множество состояний схемы. Каждому состоянию qi е Q схемы соответствует двоичный вектор т1 = t\...t1p размерностиp значений внутренних переменных множества Z, будем этот вектор называть кодом состояния в переменных Z. Сопоставим каждому состоянию qi переменную zj. Получим функции у](xi,..., xn, Zi,..., zp), j = i,2p ,
представляющие переходы в состояния схемы, в виде ROBDD графов.
Обозначать через G(f) ROBDD представление функции f
Представим каждую функцию системы (1) в виде ROBDD. ROBDD можно получить, например, по структурному описанию схемы. При получении ROBDD для функций переходов yj, j = 1, p, выберем внутренние переменные множества Z в качестве первых переменных декомпозиции, то есть при построении ROBDD сначала выполняется декомпозиция Шеннона по внутренним переменным множества Z, а затем по входным переменным множества X. Далее, для каждого состояния схемы получим ROBDD, представляющий переходы в состояние, перемножив p ROBDD функций yj или их инверсий в соответствии с кодом состояния в переменных множества Z. Пусть т1 = т1...т p — код
состояния qi в переменных Z. Если tS = 0, s е{1,...,p} , то в произведение входит G(ys),
если tS = 1, то в произведение входит G(y^). Здесь будем иметь ввиду, что ROBDD инверсии функции можно получить из ROBDD функции заменой значений терминальных вершин на противоположные. Итак, получим t = 2p ROBDD - G(yj), представляющих переходы в
состояния схемы:
^ = вМу (XI,..., Хп, 7!,..., )) , ] = 1, X . (2)
Отметим, что ЯОБББ в(у'-(хь..., хп, хъ.., 2р)) зависят от внутренних переменных множества Z, а состояниям в системе (2) сопоставлены переменные множества 2' = {^1, ..., г'у} и ЯОБВБ в(у ' ) представляют переходы в состояния схемы.
Кодом состояния qi в переменных множества 2' является булев вектор размерности X
- У* = у1 ...УX, в котором ¿-ая компонента принимает значение 1, а все остальные компоненты
— значение 0.
Пример 1.
Пусть синхронная последовательностная схема имеет два входа, два выхода и два элемента памяти; X = (Х1,Х2) — множество входных переменных схемы, У = {У1У2} — множество ее выходных переменных, Z = {г^} — множество внутренних переменных схемы.
Сопоставим состояниям схемы коды в переменных Z: 41 -(0,0), 42 -(0,1), 4з -(1,02), 44 -(1,1) .
Сопоставим каждому состоянию qi переменную х\. Таким образом, 2' = {г[, ^2, г'ъ, ^4} . Каждому состоянию соответствует код в переменных 2', например,
кодом состояния qз является булев вектор (0, 0,1, 0). Для получения системы ЯОБВБ (2):
1) строятся ЯОБББ функций переходов С(у1) и С(у2). При построении ЯОБББ сначала выполняется декомпозиция по внутренним переменным множества Z, а затем по переменным множества X;
2) для каждого состояния qi, X = 1,4, строится функция переходов в это состояние у* в виде ЯОБВБ, для этого перемножаются ЯОБВБ функций щ,] е {1,2}, или их инверсий — у, в соответствии с кодом состояния в переменных множества Z. Для получения ЯОБВБ
в (у *) для состояния qi с кодом (11,12), необходимо перемножить ЯОБВБ функций у^1 и У22 .
Итак ЯОБББ в (у *), X = 1,4, системы (2) получаем следующим образом:
в(У1) = в(у1) ■ в(у2), в(у2) = в(у1) ■ в(У2), в(Уъ) = в(У1) ■ в(у2),
в(у4) = в(у1) ■ в(у2).
Отметим, что троичный вектор 8 ' значений переменных множества 2' порождает г, где г — число компонент вектора 8 ' со значением х, двоичных вектора {у*1,...,у'г} каждый из которых содержит единственную компоненту со значением 1 и представляет состояние из множества Q состояний схемы.
Заметим, что троичный вектор 8 ' в переменных множества 2', содержащий одну, 5-ую, компоненту со значением х, а остальные компоненты со значением 0, задает тоже
множество состояний, что и троичный вектор 8 ", у которого s-ая компонента принимает значение 1, а остальные — значение 0. Будем в дальнейшем считать эти векторы эквивалентными и иногда не будем отдельно описывать случай троичного вектора с одной единицей. Тогда между множествами состояний и троичными векторами значений переменных 2' существует взаимно однозначное соответствие.
Введем следующие замены для краткости изложения. Будем иногда:
1) вместо "поддеревья, состоящие из вершин, соответствующих входным переменным" говорить: "поддеревья из входных переменных" или "поддеревья из переменных множества X';
2) вместо "цепь ЯОБВВ, содержащая вершины, соответствующие переменным множества Z" говорить: "цепь ЯОБВБ из внутренних переменных" или "цепь ЯОБВБ из переменных множества Z";
3) вместо "множество булевых векторов, представленное троичным вектором 8" говорить: "множество булевых векторов 8" или "множество 8";
4) вместо "qi принадлежит множеству состояний, представленных кодами из множества N(8") " говорить: ííqi принадлежит множеству N(8") " или " qi е N(8") ";
5) вместо "множество состояний, соответствующих кодам в переменных Z из множества N говорить: "множество состояний, представленных множеством N или "состояния
6) вместо "множество состояний, соответствующих кодам в переменных Z из множества N(8)" говорить: "множество состояний, представленных вектором 8" или "состояния 8".
Каждой цепи ЯОБВБ О(\"■) из внутренних переменных множества Z, исходящей из
корня, соответствует троичный вектор 8* значений переменных множества Z такой что:
если цепь проходит через вершину, сопоставленную переменной Zs по значению 1(0), то
* *
8^ = 1(0), если цепь не проходит через вершину, сопоставленную zs, то 8^ = х .
Будем говорить что цепь ЯОБВБ О(\"■) из переменных множества Z, исходящая из
корня, соответствует двоичному вектору т значений переменных Z, если т входит в множество булевых векторов, представленных троичным вектором, соответствующим этой цепи. Заметим, что любому двоичному вектору т значений переменных Z соответствует только одна такая цепь, тогда как цепь, в общем случае, соответствует одному и более двоичному вектору.
Будем говорить, что цепь ЯОБВБ О(\\") из переменных множества Z, исходящая из
корня, соответствует состоянию q (представляет состояние q), если она соответствует коду состояния q в переменных Z.
Обозначим через О^ (X) ЯОБВБ из входных переменных, в который приводит цепь, исходящая из корня ЯОБВБ О(\"■) и соответствующая состоянию q^ Если цепь приводит в терминальную вершину 0, то О^ (X) = 0 . Если цепь приводит в терминальную вершину 1, то О(X) = 1.
Заметим, что переход в состояние q схемы возможен из состояния qi при каких-либо значениях входных переменных за один шаг, если ЯОБВБ О^ (X) отличен от 0. ЯОБВБ
О^ (X) представляет все векторы значений входных переменных при которых такой переход
возможен. Для двух различных состояний и , О^ (X) может совпадать с О^ (X).
Пример 2.
Рассмотрим последовательностью схему из примера 1.
Пусть система (1) функций переходов схемы имеет вид:
\ = Х V Х^,
\ = Х1г1 V ^ .
Построим систему (2) ROBDD функций переходов в состояния. Для этого построим ROBDD функций переходов С(\1) и С(\2) выполняя декомпозицию сначала по внутренним переменным множества Z, а затем по переменным множества X. Они представлены на рисунках 2а и 2б, соответственно. Выбран следующий порядок переменных для выполнения декомпозиции: ц, 22, XI, Х2. Для построения ROBDD можно использовать структурное описание схемы, в данном примере использовано заданное функциональное описание.
Для получения ROBDD функций переходов в состояния — ), закодируем
состояния схемы как в примере 1. Для каждого состояния I = 1,4, строится функция переходов в это состояние \ г' в виде ROBDD как показано в примере 1. Для краткости, здесь получим только ROBDD функции переходов в состояние цэ - О(\3). Полученный ROBDD представлен на рисунке 3 а.
Рассмотрим пример подграфа из входных переменных. О|4 — это подграф из
входных переменных ROBDD О(\3). Подграф О34 выделен на рисунке 3б жирными сплошными линиями. Он представляет все векторы входных значений, на которых возможен переход из состояния цч в состояние цэ за один шаг. В корень ROBDD О34 приводит цепь из внутренних переменных, исходящая из корня О(\3) и соответствующая коду (1,1) в переменных Z состояния цч. На рисунке 3б эта цепь выделена пунктирной линией.
а)
б)
Рисунок 2. — а) ROBDD б) ROBDD С(\2)
а)
б)
Рисунок 3. — а) ЯОБВБ О(\ ), б) жирными линиями выделен подграф О34 (X); пунктирными линиями выделена цепь из переменных Z, соответствующая состоянию q^
Опишем процедуру вычисления троичных значений функций переходов схемы по системе ЯОБВБ (2). Она основана на описанных выше свойствах. В процедуре для вычисления троичного значения функции, зависящей от входных переменных и представленной подграфом ЯОБВБ, используется вероятностный подход к троичному моделированию булевых функций [7].
Назовем объединение входного и внутреннего состояний схемы его полным состоянием. Будем представлять полное состояние схемы троичным вектором а : 8. Здесь а — вектор в пространстве входных переменных X, а 8 — вектор в пространстве внутренних переменных Z или 2'.
Начальное состояние схемы может быть представлено троичным вектором 80 в переменных Z. Это означает, что значения на псевдовходах, которым соответствуют компоненты вектора 80 со значением х, не определены (не известны). Чтобы выполнить троичное моделирование псевдовыходов схемы, используя систему (2), необходимо перейти
от троичного вектора 80, заданного в переменных множества Z, к троичному вектору 8 '0, представляющему начальное состояние схемы в переменных множества 2'. Процедура такого перехода предложена в [4], а также представлена в [2].
В работах [1, 2] представлена единая процедура вычисления троичного вектора значений на выходе Р и троичного вектора значений внутренних переменных 8 " на троичном векторе полного состояния а: 8", где 8 ' и 8 " -векторы в переменных 2'. Процедура вычисляет точные троичные значения для отдельных компонент векторов. В данной работе представим преобразованную процедуру вычисления компоненты троичного вектора значений внутренних переменных 8 ". Это преобразование основано на следующем свойстве: компонента 8"5 вектора 8 " принимает значение 1 тогда и только тогда, когда
все остальные компоненты вектора 8 ", кроме s-ой, принимают значение 0. Это свойство позволяет не проверять для компоненты вектора 8 " равенство на 1, достаточно определить, равна компонента 0 или отлична от 0. Представленное свойство было использовано при разработке метода троичного моделирования функций переходов в состояния, представленных в виде ДНФ, описанного в работах [3, 4]. Это свойство дает возможность сократить вычислительные затраты при троичном моделировании функций переходов в состояния, представленных в виде ЯОБВБ. Приведем преобразованную процедуру.
Процедура 1* вычисления значения компоненты 8"■, ■ = 1, /, вектора следующего состояния 8 " на троичном векторе а : 8 ' по ЯОБББ О(\ ) системы (2).
1. Вычислим троичные значения функций, соответствующих корням подграфов ЯОБВБ О(\ ■) из переменных множества X, на входном троичном векторе а, пользуясь
вероятностным подходом к троичному моделированию. Для этого вычислим вероятности единичных значений этих функций при распределении вероятностей P(X) = (£1, ...,pn) таком что, если аi = 1(0), то pi = 1(0), если аi = х, то р = 12 . Таким образом, для каждой вершины, соответствующей входной переменной, получим вероятность единичного значения.
2. Пусть 8 ' представляет множество состояний схемы Q' = ^^qi }. Пусть
{Т1,..., тТг} — коды состояний из множества Q' в переменных Z.
3. Поочередно просматриваем двоичные векторы тг", 5 = 1, г. Проходим по соответствующей вектору тг" цепи ЯОБВБ О(\) из переменных Z, исходящей из корня.
Если цепь, соответствующая т'1, приводит в корень поддерева, состоящего из переменных множества X, с вероятностью в корне отличной от 0 или в терминальную вершину 1, то 8 '■
присвоим значение х, процедура завершена. 4. 8 ■ присвоим значение 0.
Заметим, что вычислительные затраты при выполнении Процедуры 1* можно сократить, если вычислять вероятности единичных значений не для всех вершин, сопоставленных входным переменным, а только для тех, в которые приводят цепи,
соответствующие векторам т' , при выполнении п.3.
Троичный вектор 8 " представляет множество состояний схемы, в которое можно перейти за один шаг, из множества состояний, представленного троичным вектором 8 ', подавая на вход схемы булевы векторы входных значений из множества, представленного входным троичным вектором а.
Если при моделировании Процедурой 1 * в качестве вектора входных значений а взять вектор из значений х, то троичный вектор 8 " представляет максимальное множество состояний схемы Q" = дд! }, в которое можно перейти за один шаг, из множества
состояний Q' = д,...,д! }, представленного троичным вектором 8 ', при любом векторе
входных значений.
В работе [2] представлена процедура вычисления компоненты троичного вектора 8 " на векторе полного состояния а : 8 ', где все компоненты вектора а принимают значение х. Здесь преобразуем эту процедуру аналогично преобразованию Процедуры 1 * с учетом вышеописанного свойства.
Процедура 2* вычисления значения компоненты 8'■, ■ = 1, /, вектора следующего состояния 8 " на троичном векторе а : 8 ' по ROBDD ') системы (2), где все компоненты
вектора а принимают значение х.
1. Пусть 8 ' представляет множество состояний схемы Q' = (д^,...,д! }. Пусть
(т'1,..., т'г} — коды состояний из множества Q' в переменных Z.
2. Поочередно просматриваем двоичные векторы т', 1 = 1, г. Проходим по соответствующей вектору т' цепи ROBDD ") из переменных множества Z, исходящей
из корня. Если цепь, соответствующая т', приводит в корень поддерева, состоящего из переменных множества X, или в терминальную вершину 1, то 8"■ присвоим значение х,
процедура завершена (при необходимости запоминаем состояние д' в качестве одного из
состояний, из которых есть переход в состояние ц за один шаг).
3. 8 "■ присвоим значение 0.
Для точного троичного моделирования функций переходов в состояния по системе (2) на входной троичной последовательности а0,а1,...,а^"1 длины к и векторе начального состояния 8 выполняется пошаговое вычисление каждой компоненты векторов Процедурой 1* к раз. Так вектор 8' 1 получаем, вычисляя каждую компоненту вектора Процедурой 1 * на троичном векторе а0 : 8 '0, вектор 8 '2 получаем, вычисляя каждую
компоненту вектора Процедурой 1 на троичном векторе а : 8 и так далее. В результате получим последовательность векторов значений внутренних переменных множества :
8'1,8'2,..., 8'к.
Пошаговое моделирование по системе ROBDD (2) приводит к точному троичному моделированию на последовательности в целом. Это доказано в работах [3, 4] для ДНФ представления функций, также это непосредственно следует из свойств подробно описанных в данной работе и в работе [2].
Получив последовательность 8'1,8'2,..., 8'k троичных векторов значений внутренних переменных Z', можно перейти к последовательности 81,82,...,8^ троичных векторов значений внутренних переменных Z. Процедура такого перехода предложена в [4], а также представлена в [2].
В работе [2] представлена следующая процедура.
Процедура 3* поиска множества всех состояний Qj, из которых можно попасть в состояние qj за один шаг.
1. Найдем все троичные векторы 8 s, s = 1, r, значений переменных Z,
соответствующие цепям из внутренних переменных в ROBDD G(y '), исходящим из корня и
ведущим в корни поддеревьев, состоящих из входных переменных, или в терминальную вершину 1.
* *
2. N = U N (8 s).
s
3. Искомое множество Qj — это множество состояний, представленных множеством
N*.
Назовем потоковым графом схемы (control-flow graph) — ориентированный граф, у которого вершины сопоставлены состояниям схемы и есть дуга из вершины i в вершину j тогда и только тогда, когда в схеме возможен переход из состояния, соответствующего вершине i, в состояние, соответствующее вершине j, при каких-либо значениях входных переменных.
Пользуясь Процедурой 3* можно получить потоковый граф схемы. Для этого Vq е Q находим множество состояний Qj по Процедуре 3 .
Рассмотрим пример построения потокового графа схемы.
Пример 3.
Рассмотрим последовательностную схему из примеров 1 и 2.
Пользуясь Процедурой 3 , найдем все состояния, из которых возможен переход в состояние q3 за один шаг. На рисунке 4 в ROBDD G(y 3) пунктирными линиями выделены цепи из внутренних переменных, исходящие из корня и ведущие в корни поддеревьев, состоящих из входных переменных, или в терминальную вершину 1. Этим цепям сопоставляются троичные векторы значений переменных Z: (0,0) и (1,1). Эти векторы представляют состояния qi и q4, соответственно. Таким образом, в состояние q3 за один шаг можно попасть из состояний qi и q4.
0 / Ч1 / ч
Рисунок 4. — ЯОБВВ G(y 3), где пунктирными линиями выделены цепи из
переменных 2, представляющие состояния, из которых возможен переход в состояние 43 за
один шаг
Представим потоковый граф схемы в виде матрицы смежности (рисунок 5). Выше продемонстрировано заполнение выделенного жирными линиями столбца 43 матрицы на рисунке 5. Для заполнения других столбцов необходимо построить 0(^1), и 4) и
найти состояния, из которых возможны переходы в состояния 41, 42 и 44, соответственно.
41 42 4з 44
д1 1 1
42 1 1
дз 1 1 1
44 1 1 1
Рисунок 5. — Матрица смежности потокового графа схемы
Используя представленные процедуры, потоковый граф схемы, а также описанные свойства, можно решить различные задачи для синхронных последовательностных схем.
Рассмотрим задачу построения последовательности входных векторов минимальной длины, обеспечивающей переход из некоторого состояния одного множества в одно из состояний другого множества.
Постановка задачи.
Заданы два множества состояний: и Множество задано троичным вектором
8'0 в переменных 2', множество 0 задано троичным вектором 8' в переменных 2'.
Необходимо:
1) найти минимальное число шагов к, за которое можно перейти в некоторое (любое) состояние множества О из некоторого (любого) начального состояния или определить, что состояния множества О из состояний множества не достижимы;
2) если некоторое состояние множества О из некоторого начального состояния достижимо, то построить одну последовательность входных векторов, обеспечивающую переход из состояния множества в состояние множества достижимое за минимальное число шагов к.
Заметим, что множества и 0 могут быть заданы троичными векторами в переменных 2. В этом случае выполняется переход от троичных векторов в переменных 2 к троичным векторам в переменных 2' представленным в [2, 4] способом.
Будем записывать как 8 = ° — обнуление каждой компоненты вектора 8, или сравнение вектора 8 с вектором такой же размерности из всех 0.
Обозначим через а — троичный вектор, у которого все компоненты принимают значение х.
С каждым состоянием 41 е 0 ассоциируем состояние £(дг), из которого выполнен первый из найденных переход в состояние 41.
Алгоритм решения задачи.
Этап 1. Поиск множества 8*, достижимого из множества 8' 0 за минимальное число шагов и включающего хотя бы одно состояние из множества 8', или определение того, что состояния множества 8' не достижимы.
1. Уд е 0: Цдг) = 0; 8* =8 '0, к = °, 8 ' = 8 '0;
2. Здесь проверяем, есть ли среди найденных достижимых состояний состояния из множества 0'.
N = N(8") П N(8*). Если N ^ 0, то первый этап алгоритма завершен и переходим на Этап 2 алгоритма.
3. Полагаем 8 ' =8 ". Вектор 8 ' представляет состояния, достижимые из состояний 8' 0, переходы из которых в следующие состояния еще не просмотрены.
8"= 0; V/ такого что 8 ■ = 0, выполняем троичное моделирование функции ■)
системы ЯОБВБ (2) по Процедуре 2* на векторе а: 8". Результат выполнения процедуры — значение 8"■. Если 8"■ = х, то в качестве Ь(/ запоминаем состояние qi е N(8"), где qi — это
то состояние, по которому в Процедуре 2* определена возможность перехода в состояние qj.
Здесь находим состояния 8 , из ранее не включенных в список достижимых состояний, в которые есть переходы за один шаг из состояний, добавленных в список достижимых состояний на предыдущем шаге.
4. Если 8 " = 0, то из начальных состояний 00 состояния множества О не достижимы; алгоритм завершен. Иначе к = к + 1, 8 =8 v8 " и возвращаемся на п. 2. Здесь вектор 8* представляет достижимые из состояний 8 '0 за к шагов состояния.
Этап 2. Построение пути (последовательности состояний) из некоторого состояния
8' 0 в некоторое состояние 8\ достижимое за минимальное число шагов к.
На этапе 1 была пройдена как минимум одна последовательность состояний с заданными свойствами. Получим эту последовательность.
Строим последовательность qi ,,...,qi с конца последовательности к началу.
Выбираем одну последовательность из возможных.
Пусть N = {уЛ,...}. уЛ представляет код состояния . Тогда qi = .
Для/ от к - 1 до 0: qiJ = ) .
Здесь в качестве предыдущего состояния последовательности берем состояние, из которого был выполнен переход в текущее состояние на Этапе 1.
Этап 3. Поиск последовательности входных векторов а1,...,ак, обеспечивающей переходы схемы по последовательности состояний qi ,,..., qi .
Для / от 1 до к, в качестве а/ выбираем любой вектор входных значений, на котором С2и._х обращается в 1.
Здесь в качестве входного вектора а/ берем какой-либо вектор, обеспечивающий переход из состояния в состояние .
Заметим, что если для схемы уже построен потоковый граф, например, в виде матрицы смежности графа, то Этап 1 и Этап 2 алгоритма более эффективно выполнять по ней, не прибегая к троичному моделированию. Заметим также, что представленный алгоритм может быть переложен и на метод моделирования, использующий ДНФ представление функций.
Рассмотрим пример построения последовательности входных векторов по представленному алгоритму. Пример 4.
Рассмотрим последовательностную схему из примеров 1-3. Пусть О0 = ^4} и О = ^2}.
Поскольку здесь каждое из множеств и О состоит из одного состояния, то задачу можно переформулировать следующим образом:
1) найти минимальное число шагов к, за которое можно перейти в состояние q2 из начального состояния q4 или определить, что состояние q2 из состояния q4 не достижимо;
2) если состояние 42 из начального состояния 44 достижимо, то построить одну последовательность входных векторов, обеспечивающую переход из состояния 44 в состояние 42 за минимальное число шагов к.
8 '0 = (0,0,0,х), 8' = (°,х,°,°).
Этап 1. Поиск множества 8*, достижимого из состояния 44 за минимальное число шагов и включающего состояние 42 или определение того, что состояние 42 из состояния 44 не достижимо.
1. 1(41) = 0, 1(42) = 0, Ь(4з) = 0, 1(44) = 0;
8* = (°,°,°,х), к = °, 8 ' = (0,0,0,х) .
2. N = N (8') п N(8) = 0.
3. 8 ' = (0,0,0, х); 8 ' = 0;
Выполняем троичное моделирование функций переходов в состояния 0(у1), 0(у2) , 0(у 3) по Процедуре 2* на векторе (х,х):(°,°,°,х).
На рисунке 6 проиллюстрировано троичное моделирование функции переходов в состояние 43 - О (у 3), на векторе (х,х):(°,°,°,х). Так как цепь из внутренних переменных, соответствующая состоянию 44, приводит в корень поддерева из входных переменных (на
Рисунок 6. — Иллюстрация троичного моделирования 0(у 3) на векторе
Л %2 £3 £ 4
(х х) : (0 0 0 х)
Для краткости, не будем в данном примере строить 0(у1) и 0(у2). Получим результат троичного моделирования 0(у1) и 0(у 2) по матрице смежности из примера 3. При моделировании 0(у1) получим х, ¿(41) = 44, при моделировании 0(у2) получим 0.
В результате моделирования получим: 8 '' = (х,0,х,0) .
4. Так как 8' ^ 0, то к = 1, 8* = (х,°,х,х) и возвращаемся на п. 2.
2. N = N(8 ') П N(8) = 0.
3. 8 ' = (х,0,х,0).
Выполняем троичное моделирование 0(у 2) на векторе (х,х):(х,°,х,°).
Получим результат моделирования по матрице смежности. При моделировании 0(у2) получим х, ¿(42) = 43.
4. Так как 8 ' ^ 0, то к = 2, 8* = (х,х,х,х) и возвращаемся на п. 2.
2. N = N(8 '' ) П N(8') = {(0,х,0,0)}. Так как N ^ 0, то первый этап алгоритма завершен и переходим на Этап 2.
Этап 2. Построение пути (последовательности состояний) из состояния 44 в состояние 42, достижимое из 44 за минимальное число шагов к = 2.
Строим последовательность , , с конца последовательности к началу.
N = {(0,х,0,0)} представляет состояние q2.
Яъ = Я' , = 1(Я2) = Яз , Яц = 1(ЦЭ) = Я4 .
Получаем путь из состояния q4 в состояние q2: q4,qз,q2.
Этап 3. Поиск последовательности входных векторов а1,а2, обеспечивающей переход схемы по последовательности состояний q4,qз,q2.
В качестве а1 выбираем любой вектор входных значений, на котором 0;^ обращается в 1. Подграф 03^4 рассмотрен в Примере 2 и выделен на рисунке 3б жирными линиями. В качестве а1 выберем вектор входных значений (0,0), представленный подграфом .
В качестве а2 выбираем любой вектор входных значений, на котором О'з обращается в 1. Так как О(у') здесь не построен, то приведем а2 без иллюстрации. В качестве а2 выберем (1,0).
Получаем входную последовательность: (0,0),(1,0), обеспечивающую переход схемы из состояния q4 в состояние q2 за два шага.
В работе [2] рассмотрено решение следующей задачи.
Задача 1.
Необходимо найти максимальное множество состояний схемы О , достижимых из заданного троичным вектором 8 '0 в переменных 2' множества начальных состояний 00, и минимальное число шагов к за которое можно перейти в любое состояние этого множества из начальных состояний.
Обозначим через 8* троичный вектор, представляющий искомое множество состояний. а — троичный вектор, у которого все компоненты принимают значение х.
Приведем улучшенный, по сравнению с представленным в работе [2], алгоритм. Здесь для сокращения вычислений на очередном шаге алгоритма будем выполнять троичное моделирование не всех функций переходов в состояния, а только тех, которые еще не представлены вектором 8*. Преобразованный алгоритм будет следующим.
Алгоритм решения задачи:
1. 8 * =8 '0, к = 0;
Здесь вектор 8* представляет достижимые из состояний 8 '0 за к шагов состояния.
2. Полагаем 8' = 8''. Вектор 8 ' представляет состояния, достижимые из состояний 8' 0, переходы из которых в следующие состояния еще не просмотрены.
8"= 0; V/ такого что 8 ■ = 0, выполняем троичное моделирование функции )
системы ЯОБВБ (2) по Процедуре 2* на векторе а: 8'. Результат выполнения процедуры — значение 8 "■.
Здесь находим состояния 8 , из ранее не включенных в список достижимых состояний, в которые есть переходы за один шаг из состояний, добавленных в список достижимых состояний на предыдущем шаге.
3. Если 8 = 0 , то 8* представляет искомое множество состояний, к — искомое число
* *
шагов; алгоритм завершен. Иначе к = к + 1, 8 =8 v8 и возвращаемся на п.2.
Задача 2.
Необходимо найти максимальное множество состояний схемы 0к*, достижимых из заданного троичным вектором 8 '0 в переменных 2' множества состояний 00 за к* шагов.
Алгоритм решения получаем из предыдущего, добавляя в начале п. 2 условие выхода при достижении заданного числа шагов. Таким образом, выход из алгоритма выполняется,
когда выполнено заданное количество шагов к* или раньше, когда множество достижимых состояний перестает расширяться.
Как отмечается в работе [2], представленные алгоритмы для задач 1 и 2 аналогичны алгоритмам, известным из теории графов, с тем различием, что здесь множество состояний, в которое можно перейти за один шаг, определяется с помощью Процедуры 2 . Как отмечено выше, используя потоковый граф схемы, представленный, например, в виде матрицы смежности, можно решить рассмотренные и другие задачи, не прибегая к троичному моделированию по Процедуре 2 .
В будущих исследованиях планируется более подробно рассмотреть различные задачи для синхронных последовательностных схем, которые можно решить, используя представленные процедуры, потоковый граф схемы и описанные свойства.
Литература
1. Голубева, О. И. Троичное моделирование синхронных последовательностных схем, основанное на ROBDD представлении функций // Кулагинские чтения: техника и технологии производственных процессов: XVI Междунар. науч.-практ. конф.: сб. ст. [в 3 ч.] / Забайкал. гос. ун-т. Чита. 28-30 ноября 2016. — Чита: ЗабГУ, 2016. — Ч. 2. — С. 131-136.
2. Голубева, О. И. Троичное моделирование синхронных схем с памятью на последовательностях произвольной длины, основанное на ROBDD представлении функций // Таврический научный обозреватель. — 2017. — №3 (20). — С. 129-140.
3. Голубева, О. И. Коррекция результатов троичного моделирования на последовательностях произвольной длины // Докл. 2-й всероссийской конф. "Новые информационные технологии в исследовании дискретных структур". Екатеринбург. 2-5 нояб. 1998. — Екатеринбург: ИМАШ УрО РАН, 1998. — С. 62-68.
4. Голубева, О. И. Разработка и исследование методов моделирования и оценки мер тестопригодности логических схем: дис. ... канд. техн. наук: 05.13.01. — Томск, 2000. — 112 с.
5. Lenox J., Tragoudas S., Towards Trojan Circuit Detection with Maximum State Transition Exploration. Proc. of the IEEE International On-Line Test Symposium (IOLTS). Elia, Halkidiki, Greece. July 6-8, 2015. — P. 50-52.
6. Matrosova А., Andreeva V., Melnikov A. ROBDDs Application for Finding the Shortest Transfer Sequence of Sequential Circuit or Only Revealing Existence of this Sequence without Deriving the Sequence itself. Proc. of the 2016 IEEE East-West Design & Test symposium (EWDTS). Yerevan, Armenia. October 14-17, 2016.
7. Matrosova A., Golubeva O., Tsurikov S. A Random Approach to Correcting the Results of a Ternary Simulation. Compendium of papers. IEEE European Test Workshop. Cagliari, Italy. May 28-30, 1997.