Project

General

Profile

EFSM Building » History » Version 1

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

1 1 Sergey Smolov
h1. EFSM Building (Алгоритм построения EFSM)
2
3
На вход алгоритму подаются:
4
5
1. Граф зависимостей по данным (Data Flow Graph, **DFG**)
6
2. Список часов (**clocks**) - сигналов, извлеченных алгоритмом Clock Extraction Algorithm
7
8
Алгоритм строит расширенный конечный автомат (Extended Finite State Machine, **EFSM**), представляющий собой набор вершин-состояний (**State**), связанных, быть может, ребрами-переходами (**Transitions**). Каждому состоянию взаимно однозначно соответствует ограничение на внутренние переменные (**state constraint**), а каждому переходу соответствует упорядоченный набор ограничений как на внутренние переменные, так и на входные и выходные сигналы (**transition constraints**).
9
Алгоритм выполняет построение EFSM в несколько этапов:
10
11
1. Извлечение переменных состояния (**state vars**)
12
2. Проверка state vars на независимость
13
3. Построение набора ограничений на зависимые переменные состояния (state constraints) -> построение множества States
14
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
4. В DFG существует путь Path из Guarded Action 1 в Guarded Action 2
25
26
h2. Проверка state vars на независимость
27
28
Описанный выше критерий переменных состояния не исключает возможности существования в одном HDL-модуле более чем одной такой переменной. Следовательно, в рамках одного модуля возможно существование нескольких параллельно работающих EFSM. Необходимо установить соответствие между переменными состояния и EFSM. Очевидно, что если две переменные состояния являются независимыми, то им соответствуют разные EFSM. 
29
Для разбиения списка переменных состояния X на множества зависимых переменных X(i) применяется следующий подход. Каждой переменной состояния сопоставляется Path. Для каждого Path  определяется, какие переменные состояния в нем задействованы, что позволяет сопоставить Path характеристический вектор длины n, где n - общее число переменных состояния (i-й элемент вектора равен TRUE если i-я переменная состояния задействована в данном пути, в противном случае I-й элемент вектора равен FALSE). В результате анализа всех путей получаем n*n-матрицу. 
30
Следующий шаг - построение множеств зависимых переменных. Делается это на основе сравнения строк матрицы - если в них есть совпадающие элементы (что соответсвует факту участия одной и той же переменной состояния в разных Path, соответствующих иным переменным состояния), то две строки матрицы заменяются их дизъюнкцией. На выходе получается набор непересекающихся подмножеств множества переменных состояния.
31
32
h2. Построение множества состояний
33
34
h2. Построение множества переходов
35
36
h2. Проверка переходов на независимость и совместимость