Project

General

Profile

EFSM Building » History » Version 2

Sergey Smolov, 07/18/2013 03:42 PM

1 1 Sergey Smolov
h1. EFSM Building (Алгоритм построения EFSM)
2
3
На вход алгоритму подаются:
4
5 2 Sergey Smolov
1. Граф зависимостей по данным (Data Flow Graph, *DFG*)
6
2. Список часов (*clock-like variables*) - сигналов, извлеченных алгоритмом Clock Extraction Algorithm
7 1 Sergey Smolov
8 2 Sergey Smolov
Алгоритм строит расширенный конечный автомат (Extended Finite State Machine, **EFSM**), представляющий собой набор вершин-состояний (*State*), связанных, быть может, ребрами-переходами (*Transitions*). Каждому состоянию взаимно однозначно соответствует ограничение на внутренние переменные (*state constraint*), а каждому переходу соответствует упорядоченный набор ограничений как на внутренние переменные, так и на входные и выходные сигналы (*transition constraints*).
9 1 Sergey Smolov
Алгоритм выполняет построение EFSM в несколько этапов:
10
11 2 Sergey Smolov
1. Извлечение переменных состояния (*state-like variables*)
12
2. Проверка *state-like variables* на независимость
13
3. Построение набора ограничений на зависимые переменные состояния *(state constraints*) -> построение множества States
14 1 Sergey Smolov
4. Построение множества переходов Transitions
15
5. Проверка Transitions на независимость/совместимость со state constraints
16
17
h2. Извлечение переменных состояния
18
19
Извлечение переменных состояния производится на основе анализа DFG. По определению, переменная state_var является переменной состояния, если:
20
21
1. state_var не является входным сигналом (input signal, input)
22
2. В DFG существует Guarded Action 1, Guard которого содержит state_var, а также содержит некоторый clock (state_var, clock принадлежат Use(Guard))
23
3. В DFG существует Guarded Action 2, Action которого содержит state_var, причем state_var принадлежит Def(Action)
24 2 Sergey Smolov
4. В DFG существует путь *Path* из Guarded Action 1 в Guarded Action 2
25 1 Sergey Smolov
26
h2. Проверка state vars на независимость
27
28 2 Sergey Smolov
Описанный выше критерий переменных состояния не исключает возможности существования в одном HDL-модуле более чем одной такой переменной. Следовательно, в рамках одного модуля возможно существование нескольких параллельно работающих EFSM. Необходимо установить соответствие между переменными состояния и EFSM. Если две переменные состояния являются независимыми, то им соответствуют разные EFSM. 
29
Для разбиения списка переменных состояния X на множества зависимых переменных X(i) применяется следующий подход. Каждой переменной состояния сопоставляется её *Path*. Для каждого *Path*  определяется, какие переменные состояния в нем задействованы, что позволяет сопоставить *Path* характеристический вектор длины n, где n - общее число переменных состояния (i-й элемент вектора равен TRUE если i-я переменная состояния задействована в данном пути, в противном случае I-й элемент вектора равен FALSE). В результате анализа всех путей получаем n*n-матрицу. 
30
Следующий шаг - построение множеств зависимых переменных. Делается это на основе сравнения строк матрицы - если в них есть совпадающие элементы (что соответствует факту участия одной и той же переменной состояния в разных *Path*), то две строки матрицы заменяются их дизъюнкцией. На выходе получается набор непересекающихся подмножеств множества переменных состояния.
31 1 Sergey Smolov
32
h2. Построение множества состояний
33
34 2 Sergey Smolov
На данном этапе обрабатывается набор охранных предикатов, включающих зависимые переменные состояния. Алгоритм строит из них набор ограничений, определяющих непресекающиеся множества значений переменных состояния. Ограничения строятся в виде всевозможных конъюнкций из полного числа охранных предикатов, либо их отрицаний. При генерации очередного ограничения выполняется его проверка на разрешимость, и если проверка завершилась вердиктом "да", то ограничение помещается в множество состояний EFSM.
35
36 1 Sergey Smolov
h2. Построение множества переходов
37
38 2 Sergey Smolov
На данном этапе обрабатываются множество состояний EFSM и множество CGA, которое состоит из двух подмножеств - CGA, содержащие переменные состояния в охранных предикатах (1), и не-содержащие переменных состояния в охранных предикатах (2). Сначала переходы строятся путем установления разрешимости ограничений, являющихся конъюнкциями состояний и охранных предикатов семейства (1) - это можно осуществить даже без использования решателя, если в ограничении на состояние хранить информацию о том, какие охранные предикаты при его конструировании были использованы с меткой "TRUE". В случае с охранными предикатами семейства (2) нужно задействовать решатель.
39
40
Если решатель завершил работу с вердиктом "да", то на основе соответствующего CGA (3) строится переход EFSM. В качестве конечной вершины перехода рассматриваются те CGA (4), в блоках действий которых присутствуют директивы записи в переменную состояния. Алгоритм ищет пути в DFG из (3) в (4) и, если таковой найден, помещает его в переход EFSM.
41
42
Далее решается проблема детерминизации EFSM. Алгоритм ищет такие ситуации, когда из одного исходного состояния EFSM есть два одинаковых перехода в разные конечные состояния EFSM. Для этого выполняется конструирование дополнительных условий на переходы путем "сворачивания" условий из конечный состояний с условиями, входящими в переход, в обратном порядке. На выходе получаем дополнительные условия, которые помещаются в начале переходов.